Este projeto implementa um pipeline híbrido para extração e processamento de dados judiciais, combinando três abordagens complementares:
- API CNJ (DataJud) - Para aquisição de metadados com delay de 5 dias
- Web Scraping - Para extração direta de dados dos portais judiciais
- Processamento PDF - Para conversão de documentos em markdown usando docling
A solução foi projetada para ser robusta, escalável e adaptável a diferentes ambientes de deploy, respeitando limites de frequência, preferências de execução noturna e requisitos de processamento de texto para IA.
-
Módulo de API CNJ (
cnj_api_module.py)- Gerencia requisições à API DataJud do CNJ
- Implementa monitoramento de status com delay de 5 dias
- Armazena e organiza metadados recebidos
-
Módulo de Web Scraping (
webscraper_module.py)- Implementa scraping controlado de portais judiciais
- Gerencia limites de frequência diária/semanal
- Suporta execução noturna para evitar bloqueios
- Trata captchas e rotaciona user-agents
-
Módulo de Processamento PDF (
pdf_processor_module.py)- Converte PDFs para markdown usando docling
- Ignora imagens para otimizar processamento por IA
- Processa documentos em lote com salvamento incremental
-
Workflow n8n (
n8n-workflow-pipeline-hibrido-corrigido.json)- Orquestra todo o pipeline de processamento
- Permite execução agendada (noturna) ou via webhook
- Implementa lógica de fallback entre métodos
- Gera logs e relatórios de execução
[Entrada: Lista de Processos]
|
v
[Configuração do Pipeline]
|
v
[Escolha de Método]
/ \
v v
[Web Scraping] [API CNJ]
\ /
v v
[Consolidação de Resultados]
|
v
[Processamento de PDFs]
|
v
[Exportação e Notificação]
- Python 3.8 ou superior
- Node.js 14 ou superior (para n8n)
- Chrome/Chromium (para web scraping)
- 4GB RAM mínimo (recomendado 8GB)
- 10GB espaço em disco (mínimo)
requests>=2.31.0
pandas>=2.1.0
beautifulsoup4>=4.12.0
selenium>=4.15.0
webdriver-manager>=4.0.0
python-dotenv>=1.0.0
Pillow>=10.0.0
docling>=1.0.0 # Para processamento de PDF
# Instalação global via npm
npm install n8n -g
# Iniciar n8n
n8n start
# Para produção com PM2
npm install pm2 -g
pm2 start n8nlex-intelligentia-pipeline/
├── config/
│ └── settings.json
├── data/
│ ├── metadata/
│ ├── pdfs/
│ └── markdown/
├── logs/
├── modules/
│ ├── cnj_api_module.py
│ ├── pdf_processor_module.py
│ └── webscraper_module.py
└── n8n-workflows/
└── n8n-workflow-pipeline-hibrido-corrigido.json
Crie um arquivo config/settings.json com o seguinte conteúdo:
{
"workDir": "/caminho/para/lex-intelligentia-pipeline",
"dataDir": "/caminho/para/lex-intelligentia-pipeline/data",
"logsDir": "/caminho/para/lex-intelligentia-pipeline/logs",
"apiCnj": {
"baseUrl": "https://api-publica.datajud.cnj.jus.br/api_publica",
"apiKey": "cDZHYzlZa0JadVREZDJCendQbXY6SkJlTzNjLV9TRENyQk1RdnFKZGRQdw==",
"delayDays": 5,
"maxRetries": 3
},
"webscraping": {
"maxRequestsPerDay": 100,
"maxRequestsPerWeek": 500,
"nightModeOnly": true,
"nightStart": 22,
"nightEnd": 6,
"headless": false
},
"pdfProcessing": {
"extractImages": false,
"maxPdfSize": 50000000,
"batchSize": 10
}
}-
Importar o workflow:
- Acesse a interface web do n8n (http://localhost:5678)
- Vá em "Workflows" > "Import from File"
- Selecione o arquivo
n8n-workflows/n8n-workflow-pipeline-hibrido-corrigido.json
-
Configurar o workflow:
- Ajuste os caminhos de diretório no nó "Configurar Pipeline"
- Configure o agendamento no nó "Execução Noturna"
- Ative o nó "Enviar Notificação" se desejar receber e-mails
-
Ativar o workflow:
- Clique no botão "Activate" no canto superior direito
- O workflow será executado conforme agendamento ou via webhook
Para processar uma lista de processos via API:
curl -X POST http://localhost:5678/webhook/process-judicial \
-H "Content-Type: application/json" \
-d '{
"processList": [
{"number": "00012345620238080024", "tribunal": "TJES"},
{"number": "00045678920238080024", "tribunal": "TJES"}
]
}'Para executar os módulos individualmente:
# Módulo API CNJ
python3 modules/test_cnj_api.py
# Módulo Web Scraping
python3 modules/test_webscraper.py
# Módulo Processamento PDF
python3 modules/test_pdf_processor_simulated.pyO módulo de processamento de PDF utiliza a biblioteca docling que tem dependências pesadas como torch, torchvision e várias bibliotecas NVIDIA. Em ambientes com recursos limitados, recomendamos:
-
Usar a versão simulada para testes: O script
test_pdf_processor_simulated.pygera arquivos markdown e estatísticas simuladas para validação do fluxo. -
Para produção: Instale as dependências completas em um ambiente com recursos adequados:
pip install docling torch torchvision
-
Requisitos de hardware para processamento real:
- 8GB RAM mínimo (16GB recomendado)
- GPU com suporte CUDA para melhor performance (opcional)
- Espaço em disco suficiente para PDFs e arquivos processados
Ideal para testes e desenvolvimento:
# Instalar dependências
pip install -r requirements.txt
# Iniciar n8n localmente
n8n startRecomendado para produção em pequena/média escala:
- Configure um servidor Ubuntu 20.04+ com pelo menos 4GB RAM
- Instale as dependências:
apt update && apt install -y python3 python3-pip nodejs npm chromium-browser pip3 install -r requirements.txt npm install n8n pm2 -g - Configure o serviço para iniciar automaticamente:
pm2 start n8n pm2 startup pm2 save
Para ambientes containerizados:
-
Crie um
Dockerfile:FROM node:14-alpine # Instalar dependências RUN apk add --no-cache python3 py3-pip chromium # Instalar n8n RUN npm install n8n -g # Copiar arquivos WORKDIR /app COPY . . # Instalar dependências Python RUN pip3 install -r requirements.txt # Expor porta EXPOSE 5678 # Iniciar n8n CMD ["n8n", "start"]
-
Construa e execute o container:
docker build -t lex-intelligentia-pipeline . docker run -p 5678:5678 -v $(pwd)/data:/app/data lex-intelligentia-pipeline
- Priorize execuções noturnas (22h às 6h) para evitar bloqueios
- Limite o número de processos por execução (máximo 100/dia)
- Distribua as execuções ao longo da semana para evitar picos
- Implemente retentativas para falhas temporárias
- Monitore os logs regularmente em
/logs/pipeline.log - Configure notificações para erros críticos
- Não compartilhe chaves de API em repositórios públicos
- Use variáveis de ambiente para credenciais
- Limite o acesso ao webhook com autenticação
- Ajuste os parâmetros de delay conforme necessidade
- Mantenha
extractImages: falsepara processamento de texto para IA - Limpe periodicamente os diretórios de dados temporários
-
API CNJ não retorna dados
- Verifique se passou o período de delay (5 dias)
- Confirme se a chave de API está correta
- Verifique o formato do número do processo
-
Web Scraping bloqueado
- Reduza a frequência de requisições
- Verifique se está executando no período noturno
- Tente rotacionar IPs ou usar proxies
-
Falhas no processamento de PDF
- Verifique se o arquivo não está corrompido
- Confirme se o tamanho não excede o limite configurado
- Tente processar com
extractImages: truepara diagnóstico
Os logs são armazenados em:
- Logs do pipeline:
/logs/pipeline.log - Logs do n8n:
/logs/n8n.log - Logs de módulos específicos:
/logs/[module_name].log
- Delay da API CNJ - Os metadados só ficam disponíveis após ~5 dias
- Captchas em portais - Alguns tribunais podem requerer intervenção manual
- Limites de requisição - Respeite os limites para evitar bloqueios
- Processamento de imagens - Desativado para otimizar IA, pode ser ativado se necessário
Esta solução integrada oferece um pipeline robusto e flexível para aquisição e processamento de dados judiciais, combinando o melhor de cada abordagem:
- API CNJ para metadados oficiais (com delay)
- Web Scraping para acesso imediato (com limites)
- Processamento PDF otimizado para IA
Seguindo as orientações de configuração e as melhores práticas, você terá um sistema estável e eficiente para suas necessidades de análise jurídica.