Spaces:
Running
Running
| 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 | |
| with gr.Blocks( | |
| theme="upsatwal/mlsc_tiet", | |
| analytics_enabled=True, | |
| fill_height=True, | |
| css="footer {display: none !important;}" | |
| ) as app: | |
| gr.HTML("<div style='text-align:center;overflow:hidden;'><h2>📓 PDF Summarizer 📓</h2></div>") | |
| with gr.Sidebar(): | |
| gr.HTML("<div style='text-align:center;overflow:hidden;'><h3>📓 PDF Summarizer 📓</h3></div>") | |
| gr.HTML("<br>") | |
| # load sweet alert module from cdn | |
| gr.HTML(""" | |
| <script src='https://cdn.jsdelivr.net/npm/sweetalert2@11.15.10/dist/sweetalert2.all.min.js'></script> | |
| <link href='https://cdn.jsdelivr.net/npm/sweetalert2@11.15.10/dist/sweetalert2.min.css' rel='stylesheet'> | |
| """) | |
| # Button with Javascript Event | |
| gr.HTML(""" | |
| <style> | |
| .prompt-title { | |
| font-family: "JetBrains Mono",monospace; | |
| color: "white"; | |
| } | |
| .prompt-popup { | |
| background: #646566; | |
| color:white; | |
| border-radius:15px; | |
| } | |
| </style> | |
| <div style="text-align:center;"> | |
| <button onclick=infoAlert() | |
| style="padding: 15px; background-color: #646566; font-family: 'JetBrains Mono',monospace; color: white; border: none; border-radius: 15px; cursor: pointer;"> | |
| Info | |
| </button> | |
| <script> | |
| function infoAlert(){ | |
| Swal.fire({ | |
| title: "How To Use", | |
| text: "Enter your Gemini API key, upload PDF document, select summary kind, then hit the summarize button", | |
| confirmButtonColor: "black", | |
| customClass: { | |
| title: "prompt-title", | |
| popup: "prompt-popup" | |
| }, | |
| timer: 7000 | |
| }); | |
| } | |
| </script> | |
| </div> | |
| """) | |
| 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(height=700) | |
| 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) | |
| if __name__ == "__main__": | |
| app.launch(pwa=True) | |