import gradio as gr import fitz # PyMuPDF import requests from transformers import pipeline # Carrega o modelo de resumo (pode ser um modelo do Hugging Face Hub) # Exemplo: "facebook/bart-large-cnn" (bom para inglês, mas há modelos melhores para português) # "unicamp-dl/mt5-base-multi-pt-br-summary" (modelo em português) summarizer = pipeline("summarization", model="unicamp-dl/mt5-base-multi-pt-br-summary") def download_pdf(url): """Baixa o PDF da URL.""" response = requests.get(url) response.raise_for_status() # Lança um erro se a URL for inválida return response.content def extract_text_from_pdf(pdf_bytes): """Extrai o texto do PDF usando PyMuPDF.""" text = "" with fitz.open(stream=pdf_bytes, filetype="pdf") as doc: for page in doc: text += page.get_text() return text def summarize_pdf(url): """Baixa, extrai o texto e resume o PDF.""" try: pdf_bytes = download_pdf(url) text = extract_text_from_pdf(pdf_bytes) # Resume o texto. Ajuste max_length e min_length conforme necessário. summary = summarizer(text, max_length=500, min_length=100, do_sample=False)[0]['summary_text'] return summary except requests.exceptions.RequestException as e: return f"Erro ao baixar o PDF: {e}" except Exception as e: return f"Erro ao processar o PDF: {e}" # Cria a interface Gradio iface = gr.Interface( fn=summarize_pdf, inputs=gr.Textbox(label="URL do PDF", value="https://ww2.trt2.jus.br/fileadmin/memorial/CMV/ACORDAOS/1966/3901.4200/AC_1966_03902.pdf"), # URL padrão outputs=gr.Textbox(label="Resumo do PDF"), title="Resumidor de PDF", description="Insira a URL de um PDF para obter um resumo.", ) iface.launch()