Este script Python automatiza o processo de extração de texto de um arquivo PDF, processamento desse texto usando um padrão Fabric para Reconhecimento de Entidades Nomeadas (NER) focado no domínio jurídico, e salvamento das entidades extraídas em um arquivo JSON.
O objetivo principal é facilitar o uso de padrões Fabric que exigem entrada de texto (como o padrão ner-juridico
) diretamente a partir de documentos PDF, que são comuns no ambiente jurídico. O script lida com a conversão PDF->TXT e a execução do comando Fabric.
Antes de executar o script, certifique-se de que você possui:
- Python 3: Instalado em seu sistema (inclui
argparse
). - Pip: O gerenciador de pacotes do Python.
- Biblioteca PyPDF2: Instale usando pip:
pip install PyPDF2
- Fabric CLI: O framework Fabric instalado e configurado. Siga as instruções de instalação no repositório oficial do Fabric. Isso inclui configurar o acesso a um modelo de linguagem (LLM) suportado (como OpenAI, Claude, Ollama, etc.).
- Pattern
ner_juridico
: O padrão Fabric específico para NER jurídico (ner_juridico.md
ou similar) deve estar corretamente instalado no diretório de padrões do Fabric (geralmente~/.config/fabric/patterns/
). Certifique-se de que o nome do padrão no script (ner_juridico
no comandofabric -sp ner_juridico
) corresponde ao nome do arquivo do padrão (sem a extensão.md
).
- Instale o wrapper bash:
chmod +x extrai_e_ner cp extrai_e_ner ~/bin/
- Verifique se ~/bin está no PATH:
echo $PATH | grep ~/bin
- (Opcional) Para usar o script Python diretamente:
chmod +x extrai_e_ner.py
Execute o script a partir da linha de comando, passando o caminho para o arquivo PDF como argumento principal. Você pode opcionalmente especificar os diretórios de saída para os arquivos TXT e JSON.
Sintaxe:
extrai_e_ner <arquivo_pdf> [--txt-dir DIRETORIO_TXT] [--json-dir DIRETORIO_JSON]
Ou, se executável:
./extrai_e_ner.py <arquivo_pdf> [--txt-dir DIRETORIO_TXT] [--json-dir DIRETORIO_JSON]
Argumentos:
<arquivo_pdf>
(Obrigatório): Caminho completo para o arquivo PDF de entrada.--txt-dir DIRETORIO_TXT
(Opcional): Especifica o diretório onde o arquivo TXT extraído será salvo. Se omitido, o padrão é o diretórioDownloads
do usuário (~/Downloads
).--json-dir DIRETORIO_JSON
(Opcional): Especifica o diretório onde o arquivo JSON resultante do NER será salvo. Se omitido, o padrão é o diretórioDownloads
do usuário (~/Downloads
).
Exemplos:
-
Uso Básico (Saídas em
~/Downloads
):python3 extrai_e_ner.py /path/to/meu_processo.pdf
- Gerará:
~/Downloads/YYYYMMDD_meu_processo_textoextraido.txt
- Gerará:
~/Downloads/YYYYMMDD_meu_processo_entidades.json
- Gerará:
-
Especificando Diretórios de Saída:
python3 extrai_e_ner.py /path/to/meu_processo.pdf --txt-dir /path/to/output/txt --json-dir /path/to/output/json
- Gerará:
/path/to/output/txt/YYYYMMDD_meu_processo_textoextraido.txt
- Gerará:
/path/to/output/json/YYYYMMDD_meu_processo_entidades.json
- Gerará:
- Parseia os argumentos da linha de comando.
- Extração: Usa
PyPDF2
para extrair texto de todas as páginas do PDF. - Salvar TXT: Salva o texto extraído em um arquivo
.txt
no diretório especificado (ou padrão), com nome baseado na data e no nome do PDF original. - Executar Fabric NER: Executa o comando
cat '<arquivo.txt>' | fabric -sp ner_juridico > '<arquivo.json>'
viasubprocess
. - Saída: O resultado final é o arquivo JSON no diretório especificado (ou padrão), contendo as entidades extraídas pelo Fabric, com nome baseado no arquivo original.
O script irá imprimir mensagens indicando o progresso e o sucesso ou falha da operação.
- Qualidade da Extração de PDF: A capacidade de extrair texto corretamente depende muito da qualidade e estrutura do PDF de origem. PDFs baseados em imagem (scans sem OCR) ou com layouts muito complexos podem resultar em texto mal extraído ou vazio. O script alerta se nenhum texto for extraído.
- Dependência da Configuração do Fabric: O script depende de uma instalação funcional e configurada do
fabric
e da existência do patternner_juridico
. Erros na configuração do Fabric (chaves de API, acesso ao modelo, localização do pattern) causarão falha na etapa de execução do NER.