import gradio as gr from transformers import pipeline import fitz # Light summarization model (Free Spaces compatible) summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6") def summarize_pdf(pdf_file): if pdf_file is None: return "Please upload a PDF file." try: doc = fitz.open(pdf_file.name) except: return "PDF can't be opened." text = "" for page in doc: text += page.get_text() if len(text) < 100: return "PDF me enough text nahi mila." # Split text into smaller chunks chunks = [] words = text.split() chunk_size = 400 for i in range(0, len(words), chunk_size): chunk = " ".join(words[i:i+chunk_size]) chunks.append(chunk) final_summary = "" for chunk in chunks: try: s = summarizer(chunk, max_length=150, min_length=40, do_sample=False) final_summary += s[0]["summary_text"] + "\n\n" except: continue return final_summary iface = gr.Interface( fn=summarize_pdf, inputs=gr.File(type="filepath", label="Upload PDF"), outputs="text", title="PDF Notes AI", description="Lightweight PDF summarizer — Free Space compatible." ) iface.launch() import gradio as gr import fitz from transformers import pipeline summarizer = pipeline("summarization") def pdf_summarizer(file): doc = fitz.open(file.name) text = "" for page in doc: text += page.get_text() doc.close() summary = summarizer(text, max_length=150, min_length=50, do_sample=False) return summary[0]['summary_text'] with gr.Blocks(css=".gradio-container {background: linear-gradient(135deg,#ff7e5f,#6a11cb);} ") as demo: gr.Markdown( """
Upload any PDF and get instant AI-powered notes.
""" ) with gr.Column(scale=1): pdf_file = gr.File(label="Upload PDF", file_types=[".pdf"]) btn = gr.Button("Generate Summary", variant="primary") output = gr.Textbox(label="Summary Output") btn.click(pdf_summarizer, inputs=pdf_file, outputs=output) import gradio as gr import fitz # pymupdf from transformers import pipeline # Summarizer pipeline summarizer = pipeline("summarization") def pdf_summarizer(file): doc = fitz.open(file.name) text = "" for page in doc: text += page.get_text() doc.close() summary = summarizer(text, max_length=150, min_length=50, do_sample=False) return summary[0]['summary_text'] with gr.Blocks(css=".gradio-container {background: linear-gradient(135deg,#ff7e5f,#6a11cb);} ") as demo: gr.Markdown( """Upload any PDF and get instant AI-powered notes.
""" ) with gr.Column(scale=1): pdf_file = gr.File(label="Upload PDF", file_types=[".pdf"]) btn = gr.Button("Generate Summary", variant="primary") output = gr.Textbox(label="Summary Output") btn.click(pdf_summarizer, inputs=pdf_file, outputs=output) demo.launch()