File size: 1,761 Bytes
e82253e
 
 
 
 
 
 
3669fa7
e82253e
 
 
3669fa7
e82253e
 
 
 
 
 
 
3669fa7
 
 
 
 
 
 
 
 
 
 
 
e82253e
3669fa7
e82253e
 
 
3669fa7
 
 
 
 
 
 
e82253e
 
 
 
 
3669fa7
e82253e
 
3669fa7
 
 
 
 
 
 
 
 
 
 
e82253e
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import gradio as gr
from transformers import pipeline
from PyPDF2 import PdfReader

# Load summarization model
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

def summarize_pdf(pdf_file, summary_length):
    if pdf_file is None:
        return "Please upload a PDF file."

    # Read PDF text
    reader = PdfReader(pdf_file.name)
    text = ""
    for page in reader.pages:
        page_text = page.extract_text()
        if page_text:
            text += page_text + "\n"

    if not text.strip():
        return "No readable text found in this PDF."

    # Define summary length settings
    if summary_length == "Short":
        max_len, min_len = 60, 20
    elif summary_length == "Medium":
        max_len, min_len = 130, 40
    else:  # Long
        max_len, min_len = 200, 60

    # Split text into manageable chunks
    max_chunk = 1000
    chunks = [text[i:i + max_chunk] for i in range(0, len(text), max_chunk)]

    summaries = []
    for chunk in chunks:
        summary = summarizer(
            chunk,
            max_length=max_len,
            min_length=min_len,
            do_sample=False
        )[0]["summary_text"]
        summaries.append(summary)

    final_summary = " ".join(summaries)
    return final_summary


# Gradio Interface
iface = gr.Interface(
    fn=summarize_pdf,
    inputs=[
        gr.File(label="Upload your PDF"),
        gr.Radio(
            ["Short", "Medium", "Long"],
            label="Select Summary Length",
            value="Medium"
        )
    ],
    outputs=gr.Textbox(label="Generated Summary", lines=10),
    title="📘 PDF Summarizer",
    description="Upload a PDF and choose summary length (Short / Medium / Long). Powered by Hugging Face transformers."
)

iface.launch()