Spaces:
Sleeping
Sleeping
import groq # This assumes Groq provides a Python package named "groq" | |
import pdfplumber | |
import gradio as gr | |
import os | |
from dotenv import load_dotenv | |
load_dotenv() # Loads environment variables from a .env file | |
# Replace with your Groq API key in your .env file as GROQ_API_KEY | |
GROQ_API_KEY = os.getenv("GROQ_API_KEY") | |
client = Groq(api_key=GROQ_API_KEY) | |
# Load Groq's generative model (the model name 'groq-pro' is illustrative) | |
model = groq.GenerativeModel('groq-pro') | |
def extract_text_from_pdf(pdf_file): | |
text = "" | |
with pdfplumber.open(pdf_file) as pdf: | |
for page in pdf.pages: | |
page_text = page.extract_text() | |
if page_text: | |
text += page_text | |
return text | |
def summarize_pdf(pdf_file): | |
text = extract_text_from_pdf(pdf_file) | |
if not text.strip(): | |
return "No extractable text found in the PDF." | |
# Optional: Limit the text if needed for token limits | |
text = text[:15000] | |
prompt = f"Summarize the following PDF content:\n\n{text}" | |
try: | |
response = model.generate_content(prompt) # Adjust parameters per Groq's API | |
return response.text.strip() | |
except Exception as e: | |
return f"Error during summarization: {e}" | |
# Gradio interface | |
iface = gr.Interface( | |
fn=summarize_pdf, | |
inputs=gr.File(label="Upload PDF", file_types=[".pdf"]), | |
outputs="text", | |
title="PDF Summarizer with Groq", | |
description="Upload a PDF and get a summary using Groq's generative AI API." | |
) | |
if __name__ == "__main__": | |
iface.launch() | |