rahulpitt's picture
Upload 2 files
402e1e6 verified
import gradio as gr
from transformers import pipeline
from PyPDF2 import PdfReader
import os
# Load a summarization model
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
# Function to summarize text
def summarize_text(text, max_length, min_length):
summary = summarizer(text, max_length=int(max_length), min_length=int(min_length), do_sample=False)
return summary[0]['summary_text']
# Function to summarize uploaded documents
def summarize_document(file, max_length, min_length):
# Read the content of the file
if file.name.endswith(".pdf"):
reader = PdfReader(file.name)
text = ""
for page in reader.pages:
text += page.extract_text()
else:
text = file.read().decode("utf-8")
# Summarize the extracted text
if len(text) > 1024: # Summarizer has input size limitations
text = text[:1024]
summary = summarize_text(text, max_length, min_length)
return summary
# Gradio Interface
with gr.Blocks() as interface:
gr.Markdown("# Document Summarizer")
with gr.Tab("Text Summarization"):
input_text = gr.Textbox(lines=10, placeholder="Enter the text to summarize...", label="Input Text")
max_len = gr.Slider(50, 300, value=130, label="Max Summary Length")
min_len = gr.Slider(10, 50, value=30, label="Min Summary Length")
output_text = gr.Textbox(lines=5, label="Summary")
summarize_button = gr.Button("Summarize")
summarize_button.click(summarize_text, [input_text, max_len, min_len], output_text)
with gr.Tab("Document Summarization"):
input_file = gr.File(label="Upload a Document (PDF or TXT)")
max_len_doc = gr.Slider(50, 300, value=130, label="Max Summary Length")
min_len_doc = gr.Slider(10, 50, value=30, label="Min Summary Length")
output_doc = gr.Textbox(lines=5, label="Summary")
summarize_doc_button = gr.Button("Summarize Document")
summarize_doc_button.click(summarize_document, [input_file, max_len_doc, min_len_doc], output_doc)
# Launch the app
if __name__ == "__main__":
interface.launch()