slides / app.py
darsoarafa's picture
Create app.py
1eee810 verified
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()