import gradio as gr from main import main import json import subprocess def installChrome(): subprocess.run(['apt-get', 'update']) subprocess.run(['apt-get', 'install', '-y', 'wget', 'unzip']) subprocess.run(['wget', 'https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb']) subprocess.run(['apt-get', 'install', '-y', './google-chrome-stable_current_amd64.deb']) subprocess.run(['rm', 'google-chrome-stable_current_amd64.deb']) subprocess.run(['apt-get', 'clean']) def rexplore_summarizer(url, id, access_key): response = json.loads(main(url, id, access_key)) data = json.dumps(response, ensure_ascii=False, indent=4) if response["mindmap_status"] != "success": mindmap = "error" else: mindmap = response["mindmap"] if response["summary_status"] != "success": summary = "error" else: summary = response["summary"] return data, summary, mindmap def clear_everything(url, id, access_key, raw_data, summary, mindmap): return None, None, None, None, None, None theme = gr.themes.Soft( primary_hue="purple", secondary_hue="cyan", neutral_hue="slate", font=[ gr.themes.GoogleFont("Syne"), gr.themes.GoogleFont("Poppins"), gr.themes.GoogleFont("Poppins"), gr.themes.GoogleFont("Poppins") ], ) with gr.Blocks(theme=theme, title="ReXplore Summarizer", fill_height=True) as app: gr.HTML( value ="""

ReXplore Summarizer

Designed and Developed by Nayan Kasturi

This app uses a hybrid approach to summarize PDF documents based on CPU as well as GPU.

The app uses traditional methodologies such as TextRank, LSA, Luhn algorithms as well as large language model (LLM) to generate summaries as well as mindmaps.

The summarization process can take some time depending on the size of the text corpus and the complexity of the content.

""") with gr.Row(): with gr.Column(): url = gr.Textbox(label="PDF URL", placeholder="Paste the PDF URL here") id = gr.Textbox(label="DOI/arXiv ID", placeholder="Enter the DOI or arXiv ID of the Research Paper") access_key = gr.Textbox(label="Access Key", placeholder="Enter the Access Key", type="password") with gr.Row(): clear_btn = gr.Button(value="Clear", variant="stop") summarize_btn = gr.Button(value="Summarize", variant="primary") raw_data = gr.TextArea(label="Raw Data", placeholder="The generated raw data will be displayed here", lines=7, interactive=False, show_copy_button=True) with gr.Row(): summary = gr.TextArea(label="Summary", placeholder="The generated summary will be displayed here", lines=7, interactive=False, show_copy_button=True) mindmap = gr.TextArea(label="Mindmap", placeholder="The generated mindmap will be displayed here", lines=7, interactive=False, show_copy_button=True) summarize_btn.click( rexplore_summarizer, inputs=[url, id, access_key], outputs=[raw_data, summary, mindmap], concurrency_limit=25, scroll_to_output=True, show_api=True, api_name="rexplore_summarizer", show_progress="full", ) clear_btn.click(clear_everything, inputs=[url, id, raw_data, summary, mindmap, access_key], outputs=[url, id, raw_data, summary, mindmap, access_key], show_api=False) installChrome() app.queue(default_concurrency_limit=25).launch(show_api=True, ssr_mode=False)