Este projeto é um pipeline completo de automação para pesquisa e análise jurídica, projetado para transformar as publicações "Jurisprudência em Teses" do STJ em uma base de conhecimento interativa e inteligente.
O fluxo de trabalho começa com o processamento de um PDF oficial, preservando seus links e estrutura, e culmina em um assistente de IA capaz de analisar casos específicos com base na jurisprudência catalogada.
Advogados e pesquisadores lidam com um volume massivo de publicações em PDF. O desafio é converter esses documentos estáticos em um formato dinâmico que permita:
- Extração de Dados Estruturados: Converter o texto e o layout do PDF para um formato limpo e legível.
- Preservação de Fontes: Manter os hiperlinks para os julgados e informativos originais, permitindo uma verificação rápida e o catalogamento em ferramentas como o Zotero.
- Busca Semântica: Ir além da busca por palavras-chave, permitindo consultar a base de conhecimento com descrições de casos em linguagem natural.
- Análise Inteligente: Obter uma análise preliminar sobre como a jurisprudência se aplica a um caso específico, classificando-a como favorável ou contrária.
Este projeto aborda o desafio com um pipeline de duas etapas principais, utilizando ferramentas de IA de ponta:
-
Processamento e Catalogação (
doc_advanced.py
):- Análise com
docling
: Utiliza a biblioteca da IBM para uma análise profunda do layout do PDF, garantindo que a estrutura visual seja corretamente traduzida para Markdown. - Extração de Links com
PyMuPDF
: Emprega um método geométrico para extrair todos os hiperlinks do documento. - Geração de Saída Rica: Cria um arquivo Markdown onde os links são preservados como snippets HTML interativos, com ícones clicáveis, prontos para uso.
- Análise com
-
Análise e Consulta com RAG (
rag_advanced.py
):- Base de Conhecimento Vetorial: Constrói um banco de dados vetorial (FAISS) a partir dos arquivos Markdown gerados. Este banco de dados é persistente e incremental, permitindo que novas jurisprudências sejam adicionadas ao longo do tempo.
- Busca Semântica com LangChain: Utiliza
langchain-huggingface
para converter descrições de casos em vetores e encontrar os trechos de jurisprudência mais relevantes. - Análise com LLM via Groq: Envia o caso do cliente e o contexto encontrado para o modelo Llama 3 70B através da API ultrarrápida do Groq.
- Interface Interativa: Um menu no terminal guia o usuário, permitindo escolher entre analisar um novo caso ou atualizar a base de conhecimento.
- CPU-Only: Todo o pipeline é otimizado para rodar eficientemente em uma CPU padrão.
/
├── input_pdfs/ # Coloque seus PDFs de entrada aqui
│ └── jurisprudencia.pdf
├── output_markdown/ # Arquivos Markdown gerados (ignorado pelo .gitignore)
├── vector_db/ # Banco de dados vetorial FAISS persistente (ignorado pelo .gitignore)
├── .venv/ # Ambiente virtual Python
├── .env # Arquivo para a chave de API do Groq
├── .gitignore # Arquivos a serem ignorados pelo Git
├── requirements.txt # Dependências do projeto
├── doc_advanced.py # Script de processamento: PDF -> Markdown com HTML
└── rag_advanced.py # Script principal: Assistente de análise jurídica
-
Clone o Repositório:
git clone https://github.com/seu-usuario/seu-repositorio.git cd seu-repositorio
-
Crie as Pastas Necessárias:
mkdir input_pdfs
Coloque seu arquivo PDF (ex:
jurisprudencia.pdf
) dentro da pastainput_pdfs
. -
Crie e Ative um Ambiente Virtual:
- Windows:
python -m venv .venv
e.\.venv\Scripts\activate
- macOS/Linux:
python3 -m venv .venv
esource .venv/bin/activate
- Windows:
-
Instale as Dependências: Todas as bibliotecas necessárias estão listadas no arquivo
requirements.txt
.pip install -r requirements.txt
-
Configure sua Chave de API do Groq:
- Obtenha uma chave gratuita em https://console.groq.com/keys.
- Crie um arquivo chamado
.env
e adicione a linha:GROQ_API_KEY="SUA_CHAVE_API_AQUI"
.
Este sistema foi projetado para um ciclo de uso contínuo.
Sempre que você tiver um novo PDF de "Jurisprudência em Teses":
- Adicione o PDF à pasta
input_pdfs/
. - Atualize o nome do arquivo na variável
PDF_FILENAME
dentro do scriptdoc_advanced.py
. - Execute o script de processamento:
python doc_advanced.py
- Resultado: Um novo arquivo
.md
será criado emoutput_markdown/
. Este arquivo é seu "artefato limpo": o texto está bem estruturado, e os links para as fontes originais são interativos. Neste ponto, você pode abrir este arquivo, clicar nos links e catalogar as jurisprudências no seu Zotero ou outra ferramenta de gerenciamento.
- Resultado: Um novo arquivo
Com o documento processado, alimente-o na base de conhecimento do seu assistente.
- Execute o assistente jurídico:
python rag_advanced.py
- Na primeira execução, o sistema detectará que não há um banco de dados e solicitará o caminho do primeiro arquivo. Forneça o caminho gerado na Etapa 1 (ex:
output_markdown/jurisprudencia_with_html_links.md
). - Para adicionar documentos subsequentes, escolha a opção
[2] Adicionar nova jurisprudência...
no menu principal e forneça o caminho do novo arquivo.md
. O sistema atualizará a base de dados de forma incremental.
Com a base de conhecimento pronta e atualizada, use-a para análises práticas.
- Execute o assistente jurídico:
python rag_advanced.py
- No menu, escolha a opção
[1] Analisar um caso
. - Descreva a situação do seu cliente em linguagem natural. Por exemplo:
"Meu cliente é pai de uma criança com TEA e o plano de saúde se recusa a cobrir musicoterapia, além de limitar as sessões de outras terapias. Qual a posição da jurisprudência sobre isso?"
- Receba a Análise: O sistema irá consultar toda a sua base de dados, encontrar as teses mais relevantes e fornecer uma análise estruturada, indicando se a jurisprudência é favorável, contrária ou neutra à posição do seu cliente, com a devida fundamentação.
Para encerrar o programa a qualquer momento, escolha a opção [3] Sair
no menu.