Spaces:
Running
Running
import gradio as gr | |
from functions import extract_text_from_pdf, format_content, split_into_snippets, build_prompts | |
def process_inputs(pdf_file, model_choice, output_format, oauth_token: gr.OAuthToken | None = None): | |
"""Process PDF and generate summary""" | |
if oauth_token is None: | |
return "### Please log in to use this service" | |
if not pdf_file: | |
return "### Please upload a PDF file" | |
try: | |
text = extract_text_from_pdf(pdf_file.name) | |
return f"### Processing successful with {model_choice}!" | |
except Exception as e: | |
return f"### Error: {str(e)}" | |
# Define core interface components | |
iface = gr.Interface( | |
fn=process_inputs, | |
inputs=[ | |
gr.File( | |
label="Upload PDF", | |
file_types=[".pdf"] | |
), | |
gr.Dropdown( | |
choices=[ | |
"GPT-3.5", | |
"GPT-4", | |
"Claude-3", | |
"Mistral" | |
], | |
label="Model", | |
value="GPT-3.5" | |
), | |
gr.Radio( | |
choices=["TXT", "MD", "HTML"], | |
label="Format", | |
value="TXT" | |
) | |
], | |
outputs=gr.Markdown( | |
label="Output", | |
value="### Upload your PDF to begin" | |
), | |
flagging_mode="never", | |
css=""" | |
.gradio-container { | |
max-width: 800px !important; | |
margin: 0 auto !important; | |
} | |
.container { | |
max-width: 800px !important; | |
margin: 0 auto !important; | |
padding: 2rem !important; | |
} | |
""" | |
) | |
# Create main app | |
with gr.Blocks(theme=gr.themes.Default()) as demo: | |
gr.Markdown("## π PDF to LLM Summarizer") | |
with gr.Row(): | |
with gr.Column(): | |
gr.Markdown("π Extract and summarize text from PDFs using state-of-the-art language models") | |
with gr.Column(): | |
gr.LoginButton(min_width=200) | |
iface.render() | |
gr.Markdown("Made with Gradio") | |
if __name__ == "__main__": | |
demo.launch() |