import gradio as gr from pptx import Presentation from pptx.util import Inches import pdfplumber from transformers import pipeline import tempfile # Initialize the summarization model summarizer = pipeline("summarization", model="facebook/bart-large-cnn") # Function to process PDF and create PowerPoint def pdf_to_pptx(pdf_file): # Step 1: Extract text from the PDF pdf_text = "" with pdfplumber.open(pdf_file) as pdf: for page in pdf.pages: pdf_text += page.extract_text() # Step 2: Summarize text def chunk_text(text, max_len=1024): return [text[i:i+max_len] for i in range(0, len(text), max_len)] chunked_text = chunk_text(pdf_text) summarized_text = " ".join([summarizer(chunk)[0]['summary_text'] for chunk in chunked_text]) # Step 3: Create PowerPoint presentation presentation = Presentation() slide_content = summarized_text.split(". ") for i, content in enumerate(slide_content): slide = presentation.slides.add_slide(presentation.slide_layouts[1]) # Title and Content layout title = slide.shapes.title body = slide.placeholders[1] title.text = f"Slide {i+1}" # Slide title body.text = content # Slide content # Step 4: Save presentation to a temporary file and return path temp_pptx = tempfile.NamedTemporaryFile(delete=False, suffix=".pptx") presentation.save(temp_pptx.name) return temp_pptx.name # Gradio app interface def generate_pptx(pdf_file): pptx_file_path = pdf_to_pptx(pdf_file.name) return pptx_file_path # Define Gradio interface interface = gr.Interface( fn=generate_pptx, inputs=gr.File(label="Upload PDF File"), outputs=gr.File(label="Download PowerPoint Presentation"), title="PDF to PowerPoint Converter", description="Upload a PDF file to convert it into a professional PowerPoint presentation." ) # Launch the app interface.launch()