File size: 2,624 Bytes
bef155a
3dc74fc
08fcc8d
bef155a
08fcc8d
bef155a
08fcc8d
bef155a
08fcc8d
bef155a
08fcc8d
bef155a
08fcc8d
bef155a
08fcc8d
bef155a
08fcc8d
 
bef155a
08fcc8d
 
bef155a
08fcc8d
 
bef155a
08fcc8d
 
3dc74fc
08fcc8d
 
 
 
bef155a
ec0ee8d
 
 
 
08fcc8d
 
ec0ee8d
08fcc8d
 
 
1f9a382
f1fb0b3
ec0ee8d
f1fb0b3
ec0ee8d
58e1ccf
b3ffb7d
f1fb0b3
fb7a309
2d374b1
72d3fc8
3ab6b75
efd5596
d432926
08fcc8d
44f9042
1751b9e
efd5596
1f9a382
57c8d80
ec0ee8d
71a8fd3
44f9042
08fcc8d
 
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
67
68
69
import google.generativeai as genai
import gradio as gr
from pypdf import PdfReader

def pdfSummarizer(gemini_api_key, pdf_file, kind):

    gemini_api_key = gemini_api_key

    genai.configure(api_key = gemini_api_key)

    model = genai.GenerativeModel("gemini-1.5-pro")

    pdf_file = PdfReader(pdf_file)

    pdf_text = ""

    for page in pdf_file.pages:
        pdf_text += page.extract_text()

    if kind == "5 Bullet Points":
      response = model.generate_content([pdf_text, "can you summarize this document in 5 bullet points? Use bullet points and not asterisks"])

    elif kind == "10 Bullet Points":
      response = model.generate_content([pdf_text, "can you summarize this document in 10 bullet points? Use bullet points and not asterisks"])

    elif kind == "Paragraph":
      response = model.generate_content([pdf_text, "can you summarize this document as a paragraph?"])

    elif kind == "Sentence":
      response = model.generate_content([pdf_text, "can you summarize this document in one sentence?"])

    return response.text

# define info function
def info():
    gr.Info("Enter your Gemini API key, upload your PDF document, select summary kind, then hit the summarize button")
    
with gr.Blocks(
    theme="gstaff/whiteboard",
    title="📓 PDF Summarizer 📓",
    analytics_enabled=True,
    fill_height=True
) as app:
    gr.HTML("<div style='text-align:center;overflow:hidden;'><h2>PDF Summarizer</h2></div>")
    with gr.Sidebar(visible=False):
        gr.HTML("<div style='text-align:center;overflow:hidden;'><h3>&#128211; PDF Summarizer &#128211;</h3></div>")
        gr.HTML("<br>")
        info_btn = gr.Button("Info")
        gr.HTML("<div style='text-align:center;overflow:hidden;'><h4>Gemini API Key</h4></div>")
        api_key = gr.Text(label = "",placeholder="Enter your Google Gemini API key here")
        
    with gr.Row():
        pdf_input = gr.File(file_types=[".pdf"])
        summary_type = gr.Radio(["5 Bullet Points","10 Bullet Points", "Paragraph", "Sentence"],value = "5 Bullet Points", label="Select Summary Kind")
        
    
    with gr.Row():
        btn = gr.Button("Summarize")
        clear_btn = gr.ClearButton(value="Clear")

    with gr.Column():
        gr.HTML("<div style='text-align:center;overflow:hidden;'><h2>Summary Output</h2></div>")
        out = gr.Markdown()
    info_btn.click(fn=info)
    btn.click(fn=pdfSummarizer, inputs=[api_key, pdf_input, summary_type], outputs=out)
    clear_btn.click(lambda: [None,None,"5 Bullet Points",""],inputs=None,outputs=[api_key, pdf_input, summary_type, out],queue=False)

app.launch()