legal-ocr

Extrai texto de documentos jurídicos escaneados em PDF usando OCR otimizado para linguagem jurídica brasileira. Use quando precisar converter PDFs escaneados (sentenças, petições, acórdãos) em texto editável com alta precisão. Suporta documentos de baixa qualidade, multi-colunas, tabelas e termos jurídicos específicos.

16 stars

Best use case

legal-ocr is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Extrai texto de documentos jurídicos escaneados em PDF usando OCR otimizado para linguagem jurídica brasileira. Use quando precisar converter PDFs escaneados (sentenças, petições, acórdãos) em texto editável com alta precisão. Suporta documentos de baixa qualidade, multi-colunas, tabelas e termos jurídicos específicos.

Teams using legal-ocr should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/legal-ocr/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/cli-automation/legal-ocr/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/legal-ocr/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How legal-ocr Compares

Feature / Agentlegal-ocrStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Extrai texto de documentos jurídicos escaneados em PDF usando OCR otimizado para linguagem jurídica brasileira. Use quando precisar converter PDFs escaneados (sentenças, petições, acórdãos) em texto editável com alta precisão. Suporta documentos de baixa qualidade, multi-colunas, tabelas e termos jurídicos específicos.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Legal OCR - Extração de Texto de Documentos Jurídicos

## Visão Geral

Esta skill extrai texto de documentos jurídicos escaneados em formato PDF usando técnicas avançadas de OCR (Optical Character Recognition) otimizadas especificamente para a linguagem jurídica brasileira.

**Principais características:**
- **Alta precisão**: 95%+ em documentos limpos, 85-90% em documentos de baixa qualidade
- **Otimizado para português jurídico**: Dicionário especializado com 200+ termos jurídicos
- **Pré-processamento inteligente**: Correção de inclinação, remoção de ruído, melhoria de contraste
- **Multi-engine**: PaddleOCR (primário) + EasyOCR (fallback)
- **Estrutura preservada**: Identifica seções (relatório, fundamentação, dispositivo)
- **Validação de qualidade**: Score de confiança e detecção de erros

## Quando Usar

Use esta skill quando precisar:
- Converter PDFs escaneados de processos judiciais em texto editável
- Extrair conteúdo de sentenças, acórdãos, petições digitalizadas
- Processar documentos antigos ou de baixa qualidade de escaneamento
- Alimentar sistema de análise jurídica (RAG) com documentos históricos
- Criar banco de jurisprudência a partir de documentos físicos digitalizados

**NÃO use para:**
- PDFs nativos digitais (use ferramentas de extração de texto direto)
- Documentos manuscritos (acurácia limitada)
- Imagens com resolução < 200 DPI (resultados ruins)

## Como Funciona

### Pipeline de Processamento

```
PDF Scaneado
    ↓
[1] Conversão PDF → Imagem (PyMuPDF, 300 DPI)
    ↓
[2] Pré-processamento
    • Conversão para escala de cinza
    • Correção de inclinação (Hough Transform)
    • Remoção de ruído (Median Blur)
    • Melhoria de contraste (CLAHE)
    • Binarização adaptativa
    ↓
[3] OCR Engine (PaddleOCR pt-BR)
    • Detecção de texto
    • Reconhecimento de caracteres
    • Score de confiança
    ↓
[4] Fallback (EasyOCR) se confiança < 30%
    ↓
[5] Pós-processamento
    • Correção com dicionário jurídico
    • Correção de acentuação
    • Identificação de estrutura do documento
    ↓
[6] Validação de Qualidade
    • Score de confiança
    • Detecção de problemas (O/0, l/1, etc.)
    • Flag para revisão humana
    ↓
Texto Estruturado (JSON)
```

### Tecnologias Utilizadas

| Componente | Biblioteca | Função |
|------------|-----------|---------|
| PDF → Imagem | PyMuPDF (fitz) | Conversão rápida (3.3x mais rápida que pdf2image) |
| Pré-processamento | OpenCV | Melhoria de qualidade da imagem |
| OCR Primário | PaddleOCR | Melhor acurácia para português (95%+) |
| OCR Fallback | EasyOCR | Alternativa quando PaddleOCR falha |
| Pós-processamento | Custom + Transformers | Correção de termos jurídicos |

## Recursos

### 1. Pré-processamento Avançado
- **Correção de inclinação**: Detecta e corrige documentos escaneados tortos
- **Remoção de ruído**: Remove artefatos de escaneamento
- **CLAHE**: Melhoria de contraste adaptativa (crítico para documentos antigos)
- **Binarização**: Converte para preto/branco otimizado para OCR

### 2. Dicionário Jurídico Brasileiro
- 200+ termos jurídicos pré-cadastrados
- Correção automática de erros comuns (ex: "açao" → "ação", "decisao" → "decisão")
- Fuzzy matching para termos similares (85%+ similaridade)
- Cobertura de áreas: civil, penal, trabalhista, tributário

### 3. Identificação de Estrutura
Reconhece automaticamente seções típicas de documentos jurídicos:
- **Cabeçalho**: Tribunal, número do processo
- **Preâmbulo**: Partes, juiz
- **Relatório**: Síntese dos fatos
- **Fundamentação**: Argumentação jurídica
- **Dispositivo**: Decisão final
- **Assinaturas**: Bloco de assinaturas

### 4. Suporte a Layouts Complexos
- Multi-colunas
- Tabelas (extração estruturada)
- Cabeçalhos e rodapés
- Notas de rodapé

### 5. Validação de Qualidade
- Score de confiança (0-100)
- Detecção de confusão O/0, l/1, S/5
- Verificação de elementos obrigatórios (juiz, tribunal, data, etc.)
- Flag automático para revisão humana quando confiança < 70%

## Uso Básico

### Comando Simples
```bash
# Extrair texto de um único PDF
python .claude/skills/legal-ocr/pipeline_ocr.py sentenca_escaneada.pdf
```

### Comando com Opções
```bash
# Alta qualidade + GPU + output customizado
python .claude/skills/legal-ocr/pipeline_ocr.py \
  --input documento.pdf \
  --output resultado.json \
  --quality high \
  --use-gpu \
  --dpi 400
```

### Batch Processing
```bash
# Processar múltiplos PDFs
python .claude/skills/legal-ocr/pipeline_ocr.py \
  --input-dir ./processos_escaneados/ \
  --output-dir ./textos_extraidos/ \
  --batch-size 32
```

## Output Format

O resultado é um arquivo JSON estruturado:

```json
{
  "filename": "sentenca_123.pdf",
  "timestamp": "2025-12-10T21:00:00",
  "metadata": {
    "total_pages": 15,
    "processing_time_seconds": 45.2,
    "gpu_used": true,
    "primary_engine": "paddleocr",
    "fallback_used_pages": [3, 7]
  },
  "pages": [
    {
      "page_num": 1,
      "text": "SENTENÇA\n\nProcesso nº 0001234-56.2024.8.26.0100...",
      "confidence": 0.92,
      "source": "paddleocr",
      "validation": {
        "confidence": 85,
        "issues": [],
        "requires_review": false
      },
      "structure": {
        "section": "header",
        "detected_elements": ["tribunal", "numero_processo", "juiz"]
      }
    }
  ],
  "full_text": "SENTENÇA\n\nProcesso nº 0001234-56.2024.8.26.0100...",
  "document_structure": {
    "header": "SENTENÇA\nTribunal de Justiça de São Paulo...",
    "relatorio": "Trata-se de ação de...",
    "fundamentacao": "É o relatório. Decido.\n\nO pedido merece...",
    "dispositivo": "Pelo exposto, JULGO PROCEDENTE..."
  },
  "quality_summary": {
    "avg_confidence": 0.89,
    "total_issues": 2,
    "pages_requiring_review": 0,
    "overall_quality": "good"
  }
}
```

## Instalação

### Pré-requisitos
- Python 3.8+
- (Opcional) GPU NVIDIA com CUDA para acelerar processamento

### Instalação Automática
```bash
cd .claude/skills/legal-ocr
chmod +x setup.sh
./setup.sh
```

### Instalação Manual
```bash
cd .claude/skills/legal-ocr
pip install -r requirements.txt

# Baixar modelos PaddleOCR (português)
python -c "from paddleocr import PaddleOCR; PaddleOCR(lang='pt')"
```

## Configuração

### Configurações Padrão (documents limpos)
```python
{
    'dpi': 300,
    'quality': 'standard',
    'confidence_threshold': 0.4,
    'use_gpu': True,
    'batch_size': 32
}
```

### Para Documentos de Baixa Qualidade
```python
{
    'dpi': 400,
    'quality': 'high',
    'confidence_threshold': 0.2,
    'preprocessing': {
        'clahe_clip_limit': 4.0,
        'denoise_strength': 7,
        'binarization': 'adaptive'
    }
}
```

## Performance

| Configuração | Throughput | Acurácia | Requisitos |
|-------------|-----------|----------|------------|
| GPU + Batch 32 | 800 pág/hora | 95%+ | 8GB VRAM |
| GPU + Batch 16 | 600 pág/hora | 95%+ | 6GB VRAM |
| CPU | 300 pág/hora | 94% | 4GB RAM |

**Estimativa de custos**: Infraestrutura open-source, custo zero de APIs

## Limitações

- Documentos manuscritos: acurácia < 60% (não recomendado)
- Imagens < 200 DPI: resultados ruins
- Documentos muito antigos/deteriorados: podem requerer ajuste manual
- Tabelas complexas: extração estruturada limitada
- Idiomas: otimizado apenas para português brasileiro

## Suporte

Para questões técnicas, consulte:
- `reference.md`: Detalhes técnicos completos
- `examples.md`: Exemplos práticos de uso
- Logs: `.claude/skills/legal-ocr/logs/ocr_processing.log`

## Integração com SIGEDEC

Esta skill foi desenhada para integrar perfeitamente com o sistema SIGEDEC:

```python
# Exemplo de integração
from pipeline_ocr import LegalDocumentOCRPipeline

# Processar documento para indexação no Qdrant
pipeline = LegalDocumentOCRPipeline(use_gpu=True)
result = pipeline.process_legal_document('acórdão_escaneado.pdf')

# Enviar para vector database
if result['quality_summary']['overall_quality'] in ['good', 'excellent']:
    # Indexar no Qdrant
    store_in_vectordb(result['full_text'], metadata=result['metadata'])
```

## Próximas Melhorias

- [ ] Suporte a DeepSeek-OCR (10x compressão, 97% acurácia)
- [ ] Modelo de linguagem fine-tuned para jurídico brasileiro
- [ ] OCR de tabelas complexas com estrutura preservada
- [ ] Detecção automática de assinaturas digitais
- [ ] Suporte a documentos multi-idioma (espanhol, inglês)

---

**Versão**: 1.0.0
**Última atualização**: 2025-12-10
**Licença**: MIT
**Autor**: SIGEDEC Team

Related Skills

local-legal-seo-audit

16
from diegosouzapw/awesome-omni-skill

Audit and improve local SEO for law firms, attorneys, forensic experts and legal/professional services sites with local presence, focusing on GBP, directories, E-E-A-T and practice/location pages.

agent-legal-advisor

16
from diegosouzapw/awesome-omni-skill

Expert legal advisor specializing in technology law, compliance, and risk mitigation. Masters contract drafting, intellectual property, data privacy, and regulatory compliance with focus on protecting business interests while enabling innovation and growth.

bgo

10
from diegosouzapw/awesome-omni-skill

Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.

Coding & Development

large-data-with-dask

16
from diegosouzapw/awesome-omni-skill

Specific optimization strategies for Python scripts working with larger-than-memory datasets via Dask.

langsmith-fetch

16
from diegosouzapw/awesome-omni-skill

Debug LangChain and LangGraph agents by fetching execution traces from LangSmith Studio. Use when debugging agent behavior, investigating errors, analyzing tool calls, checking memory operations, or examining agent performance. Automatically fetches recent traces and analyzes execution patterns. Requires langsmith-fetch CLI installed.

langchain-tool-calling

16
from diegosouzapw/awesome-omni-skill

How chat models call tools - includes bind_tools, tool choice strategies, parallel tool calling, and tool message handling

langchain-notes

16
from diegosouzapw/awesome-omni-skill

LangChain 框架学习笔记 - 快速查找概念、代码示例和最佳实践。包含 Core components、Middleware、Advanced usage、Multi-agent patterns、RAG retrieval、Long-term memory 等主题。当用户询问 LangChain、Agent、RAG、向量存储、工具使用、记忆系统时使用此 Skill。

langchain-js

16
from diegosouzapw/awesome-omni-skill

Builds LLM-powered applications with LangChain.js for chat, agents, and RAG. Use when creating AI applications with chains, memory, tools, and retrieval-augmented generation in JavaScript.

langchain-agents

16
from diegosouzapw/awesome-omni-skill

Expert guidance for building LangChain agents with proper tool binding, memory, and configuration. Use when creating agents, configuring models, or setting up tool integrations in LangConfig.

lang-python

16
from diegosouzapw/awesome-omni-skill

Python 3.13+ development specialist covering FastAPI, Django, async patterns, data science, testing with pytest, and modern Python features. Use when developing Python APIs, web applications, data pipelines, or writing tests.

kramme:agents-md

16
from diegosouzapw/awesome-omni-skill

This skill should be used when the user asks to "update AGENTS.md", "add to AGENTS.md", "maintain agent docs", or needs to add guidelines to agent instructions. Guides discovery of local skills and enforces structured, keyword-based documentation style.

kontent-ai-automation

16
from diegosouzapw/awesome-omni-skill

Automate Kontent AI tasks via Rube MCP (Composio). Always search tools first for current schemas.