Spaces:
Running
Running
| import gradio as gr | |
| import PyPDF2 | |
| from transformers import pipeline | |
| from pptx import Presentation | |
| import os | |
| # Fungsi untuk mengekstrak teks dari PDF | |
| def extract_text_from_pdf(pdf_path): | |
| with open(pdf_path, 'rb') as file: | |
| reader = PyPDF2.PdfReader(file) | |
| text = "" | |
| for page in reader.pages: | |
| text += page.extract_text() | |
| return text | |
| # Fungsi untuk menghasilkan poin utama dan prompt | |
| def generate_prompts(text): | |
| summarizer = pipeline("summarization", model="facebook/bart-large-cnn") | |
| summary = summarizer(text, max_length=200, min_length=50, do_sample=False)[0]['summary_text'] | |
| points = summary.split(". ")[:10] | |
| prompts = [f"Buat slide dengan judul 'Bagian {i+1}' dan isi: {point}" for i, point in enumerate(points)] | |
| return prompts | |
| # Fungsi untuk membuat presentasi | |
| def create_presentation(prompts): | |
| prs = Presentation() | |
| for prompt in prompts: | |
| slide_layout = prs.slide_layouts[1] | |
| slide = prs.slides.add_slide(slide_layout) | |
| title = slide.shapes.title | |
| content = slide.placeholders[1] | |
| title.text = prompt.split("dan isi:")[0].replace("Buat slide dengan judul ", "").strip("'") | |
| content.text = prompt.split("dan isi:")[1].strip() | |
| output_path = "output_presentation.pptx" | |
| prs.save(output_path) | |
| return output_path | |
| # Fungsi untuk Gradio | |
| def process_pdf(pdf_file): | |
| text = extract_text_from_pdf(pdf_file) | |
| prompts = generate_prompts(text) | |
| output_path = create_presentation(prompts) | |
| return output_path | |
| # Antarmuka Gradio | |
| iface = gr.Interface( | |
| fn=process_pdf, | |
| inputs=gr.File(label="Unggah PDF"), | |
| outputs=gr.File(label="Unduh Presentasi"), | |
| title="PDF to Presentation", | |
| description="Unggah PDF untuk menghasilkan presentasi slide." | |
| ) | |
| iface.launch() |