Skip to content

fbmoulin/lex-intelligentia

Repository files navigation

Lex Intelligentia - Pipeline Híbrido

Visão Geral

Este projeto implementa um pipeline híbrido para extração e processamento de dados judiciais, combinando três abordagens complementares:

  1. API CNJ (DataJud) - Para aquisição de metadados com delay de 5 dias
  2. Web Scraping - Para extração direta de dados dos portais judiciais
  3. 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.

Arquitetura da Solução

Componentes Principais

  1. 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
  2. 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
  3. 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
  4. 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

Fluxo de Dados

[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]

Requisitos de Instalação

Requisitos de Sistema

  • 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)

Dependências Python

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 do n8n

# Instalação global via npm
npm install n8n -g

# Iniciar n8n
n8n start

# Para produção com PM2
npm install pm2 -g
pm2 start n8n

Configuração do Ambiente

Estrutura de Diretórios

lex-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

Arquivo de Configuração

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
  }
}

Guia de Uso

Execução via n8n

  1. 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
  2. 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
  3. Ativar o workflow:

    • Clique no botão "Activate" no canto superior direito
    • O workflow será executado conforme agendamento ou via webhook

Execução via API (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"}
    ]
  }'

Execução Manual dos Módulos

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.py

Notas Importantes sobre o Processamento de PDF

O 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:

  1. Usar a versão simulada para testes: O script test_pdf_processor_simulated.py gera arquivos markdown e estatísticas simuladas para validação do fluxo.

  2. Para produção: Instale as dependências completas em um ambiente com recursos adequados:

    pip install docling torch torchvision
  3. 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

Opções de Deploy

Deploy Local

Ideal para testes e desenvolvimento:

# Instalar dependências
pip install -r requirements.txt

# Iniciar n8n localmente
n8n start

Deploy em VPS

Recomendado para produção em pequena/média escala:

  1. Configure um servidor Ubuntu 20.04+ com pelo menos 4GB RAM
  2. 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
  3. Configure o serviço para iniciar automaticamente:
    pm2 start n8n
    pm2 startup
    pm2 save

Deploy em Docker

Para ambientes containerizados:

  1. 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"]
  2. Construa e execute o container:

    docker build -t lex-intelligentia-pipeline .
    docker run -p 5678:5678 -v $(pwd)/data:/app/data lex-intelligentia-pipeline

Melhores Práticas

Execução e Frequência

  1. Priorize execuções noturnas (22h às 6h) para evitar bloqueios
  2. Limite o número de processos por execução (máximo 100/dia)
  3. Distribua as execuções ao longo da semana para evitar picos

Tratamento de Erros

  1. Implemente retentativas para falhas temporárias
  2. Monitore os logs regularmente em /logs/pipeline.log
  3. Configure notificações para erros críticos

Segurança

  1. Não compartilhe chaves de API em repositórios públicos
  2. Use variáveis de ambiente para credenciais
  3. Limite o acesso ao webhook com autenticação

Otimização

  1. Ajuste os parâmetros de delay conforme necessidade
  2. Mantenha extractImages: false para processamento de texto para IA
  3. Limpe periodicamente os diretórios de dados temporários

Solução de Problemas

Problemas Comuns

  1. 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
  2. Web Scraping bloqueado

    • Reduza a frequência de requisições
    • Verifique se está executando no período noturno
    • Tente rotacionar IPs ou usar proxies
  3. 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: true para diagnóstico

Logs e 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

Limitações Conhecidas

  1. Delay da API CNJ - Os metadados só ficam disponíveis após ~5 dias
  2. Captchas em portais - Alguns tribunais podem requerer intervenção manual
  3. Limites de requisição - Respeite os limites para evitar bloqueios
  4. Processamento de imagens - Desativado para otimizar IA, pode ser ativado se necessário

Conclusão

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.

About

Plataforma de automação jurídica com agentes de IA para análise de processos e geração de minutas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages