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()