Spaces:
Sleeping
Sleeping
| from transformers import pipeline | |
| import fitz # PyMuPDF | |
| import gradio as gr | |
| # Load summarization model | |
| summarizer = pipeline("summarization", model="facebook/bart-large-cnn") | |
| # Extract text from PDF | |
| def extract_text_from_pdf(pdf_file): | |
| try: | |
| doc = fitz.open(pdf_file.name) | |
| text = "" | |
| for page in doc: | |
| text += page.get_text() | |
| return text | |
| except Exception as e: | |
| return f"Error extracting text from PDF: {e}" | |
| # Main summarizer function | |
| def summarize_input(text, pdf_file): | |
| if pdf_file is not None: | |
| text = extract_text_from_pdf(pdf_file) | |
| if text.startswith("Error"): | |
| return text | |
| if not text or len(text.strip()) < 30: | |
| return "Please provide more text or a valid PDF." | |
| if len(text) > 3000: | |
| text = text[:3000] | |
| try: | |
| summary = summarizer(text, max_length=120, min_length=30, do_sample=False) | |
| return summary[0]['summary_text'] | |
| except Exception as e: | |
| return f"Summarization failed: {e}" | |
| # Gradio interface | |
| app = gr.Interface( | |
| fn=summarize_input, | |
| inputs=[ | |
| gr.Textbox(label="Enter Text (leave blank if uploading PDF)", lines=10), | |
| gr.File(label="Upload PDF File", file_types=[".pdf"]), | |
| ], | |
| outputs=gr.Textbox(label="Summary"), | |
| title="Text & PDF Summarizer", | |
| description="Paste text or upload a PDF to summarize using BART model from Hugging Face." | |
| ) | |
| app.launch() | |