File size: 1,819 Bytes
9d4d16d
 
259fbba
9d4d16d
 
e24b2e8
d8fabd6
ddc39bb
9d4d16d
5c59d4c
 
9d4d16d
 
2a72467
e24b2e8
2a72467
e24b2e8
9d4d16d
2a72467
9d4d16d
 
 
 
259fbba
2a72467
e24b2e8
9d4d16d
e24b2e8
 
9d4d16d
2a72467
 
e24b2e8
 
259fbba
9d4d16d
 
 
 
 
 
 
 
2a72467
9d4d16d
 
259fbba
9d4d16d
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import gradio as gr
import fitz  # PyMuPDF
# import requests  # Não precisamos mais do requests
from transformers import pipeline

# Carrega o modelo de resumo (você vai inserir o nome correto aqui)
#summarizer = pipeline("summarization", model="stjiris/t5-portuguese-legal-summarization")
summarizer = pipeline("summarization", model="ptt5-base-portuguese-vocab-finetuned-summarization-V2")

# Para usar um modelo local (após baixar):
# summarizer = pipeline("summarization", model="./pasta_do_modelo")


def extract_text_from_pdf(pdf_path):
    """Extrai o texto do PDF usando PyMuPDF.
       Recebe o caminho do arquivo (string).
    """
    text = ""
    with fitz.open(pdf_path) as doc:  # Abre o arquivo usando o caminho
        for page in doc:
            text += page.get_text()
    return text


def summarize_pdf(pdf_file):  # Recebe o objeto gr.File
    """Faz o upload, extrai o texto e resume o PDF."""
    try:
        if pdf_file is None:  # Verifica se um arquivo foi enviado
            return "Por favor, faça o upload de um arquivo PDF."

        # text = extract_text_from_pdf(pdf_file) # NÃO - passar o objeto gr.File
        text = extract_text_from_pdf(pdf_file.name)  # Passa o NOME do arquivo temporário

        # Resume o texto. Ajuste max_length e min_length conforme necessário.
        summary = summarizer(text, max_length=512, min_length=50, do_sample=False)[0]["summary_text"]
        return summary
    except Exception as e:
        return f"Erro ao processar o PDF: {e}"


# Cria a interface Gradio
iface = gr.Interface(
    fn=summarize_pdf,
    inputs=gr.File(label="Faça o upload do PDF"),  # Botão de upload
    outputs=gr.Textbox(label="Resumo do PDF"),
    title="Resumidor de PDF",
    description="Faça o upload de um PDF para obter um resumo.",
)

iface.launch()