OCR · Computer Vision · OpenCV · Tesseract · Document Intelligence · Speech-to-Text · Research Automation
🟡 Em desenvolvimento — Projeto de Pesquisa / P&D
Conjunto de pipelines locais em Python para extração estruturada de documentos (PDFs digitalizados, fluxogramas, apresentações PPTX, DOCX) e transcrição de áudio, evoluindo de OCR simples para Document AI / Intelligent Document Processing (IDP) — a saída não é só texto, é um manifesto JSON estruturado (posição, forma, cor, hierarquia, relações entre elementos) pronto para um agente de IA reconstruir o documento em qualquer ferramenta.
O projeto faz parte de uma linha contínua de experimentação em automação de workflows de pesquisa, processamento documental e inteligência aplicada a dados.
🚧 Em desenvolvimento: novas funcionalidades, melhorias de precisão, automações e casos de uso estão sendo estudados. Roadmap completo e priorizado em
ROADMAP.md.
O objetivo do sistema é transformar documentos digitalizados e áudios em conteúdo estruturado, reduzindo o trabalho manual necessário para processar material que não possui camada de texto pesquisável — nem estrutura visual explícita.
O projeto evoluiu em duas frentes:
Documentos (notebooks/OCR Document/) — de um extrator de texto simples para um pipeline de
Document AI completo:
Imagem / PPTX / DOCX / PDF
↓
Pré-processamento (OpenCV)
↓
OCR multi-engine (Tesseract + EasyOCR)
↓
Análise estrutural (docflow + visão computacional)
↓
Classificação semântica (BPMN)
↓
Manifesto JSON estruturado
↓
JSON / MD / DOCX / PDF / SVG / PNG
Áudio (notebooks/OCR Audio/) — transcrição local de reuniões, entrevistas e notas de voz:
Áudio / Vídeo
↓
Extração de faixa (FFmpeg)
↓
Transcrição (faster-whisper)
↓
TXT / SRT / VTT / XLSX / Relatório HTML+PDF
Ambos os pipelines são pensados para automatizar o máximo possível da configuração e preparação do ambiente — sem depender de serviços de nuvem.
Desenvolver ferramentas capazes de:
- Extrair texto e estrutura visual de documentos digitalizados e apresentações;
- Reconstruir fluxogramas e swimlanes como grafos estruturados (nós, conectores, hierarquia);
- Transcrever áudio e vídeo localmente, sem enviar dados a APIs externas;
- Automatizar a preparação do ambiente (Tesseract, Poppler, FFmpeg, idioma);
- Medir a própria qualidade da extração (WER/CER, ground truth, confiança por elemento);
- Gerar saída estruturada pronta para consumo por agentes de IA.
| Versão | Principal adição |
|---|---|
| OCR3 | Pipeline base: Tesseract + docflow para detecção de nós/conectores |
| OCR4 | DPI 450, RegionOCR (crop por nó + upscale + PSM dedicado), EasyOCR, manifesto v2.0 |
| OCR5 | NodeDetector (CV puro via OpenCV), ConnectorDetector (Hough), SemanticTyper (BPMN), manifesto v3.0 |
| OCR5 v2 | from_node/to_node reais nos conectores, ground truth manual, filtro de falsos positivos, paralelismo por página |
docflow.py — pipeline local (sem LLM) que lê imagem/PPTX/DOCX, extrai a estrutura visual para um
modelo JSON intermediário e reconstrói com matplotlib, exportando de volta para PPTX/DOCX/SVG/PNG.
- Extração automática de FFmpeg local (sem instalação manual no Windows);
- Detecção de arquivos de áudio/vídeo e extração de faixa de áudio (
.mp4→.wav); - Transcrição via faster-whisper (v2 — CTranslate2, ~3–10x mais rápido que
openai-whisper); - Execução paralela por arquivo (
ProcessPoolExecutor); - Exportação em
.txt,.srt,.vtt,.xlsx, e relatório visual em HTML/PDF.
| Categoria | Tecnologia |
|---|---|
| Linguagem | Python 3.10 |
| OCR | Tesseract OCR (PSM 3/6/7/8/11), EasyOCR |
| Computer Vision | OpenCV (contornos, Hough, Canny, morfologia), scikit-image (Sauvola) |
| PDF / Office | pdf2image + Poppler, python-pptx, python-docx, pdfplumber, PyMuPDF |
| Transcrição | faster-whisper (CTranslate2) |
| Renderização | Pillow (DPI 450), matplotlib, reportlab |
| Métricas de qualidade | jiwer (WER/CER), rapidfuzz (fuzzy ratio) |
| Análise / Dashboard | pandas, plotly |
| Experimentação | Jupyter Notebook |
┌───────────────────────────┐
│ Imagem / PPTX / DOCX / PDF │
└──────────────┬──────────────┘
▼
┌───────────────────────────┐
│ S1 DocumentIngester │
│ (renderer PIL DPI 450) │
└──────────────┬──────────────┘
▼
┌───────────────────────────┐
│ S2 Preprocessor (OpenCV) │
│ otsu / adaptive / sauvola │
└──────────────┬──────────────┘
▼
┌───────────────────────────┐
│ S3 MultiEngineOCR │
│ Tesseract + EasyOCR │
└──────────────┬──────────────┘
▼
┌───────────────────────────┐
│ S4 StructureAnalyzer │
│ docflow + NodeDetector (CV) │
│ + ConnectorDetector (Hough) │
│ + SemanticTyper (BPMN) │
└──────────────┬──────────────┘
▼
┌───────────────────────────┐
│ Manifesto JSON v3.0 │
│ nós · conectores · fases │
│ from_node/to_node · confiança │
└──────────────┬──────────────┘
┌───────────┴───────────┐
▼ ▼
┌────────────┐ ┌──────────────┐
│ JSON / MD │ │ DOCX/PDF/SVG │
└────────────┘ └──────────────┘
OCR/
├── notebooks/
│ ├── OCR Document/
│ │ ├── OCR3_Pipeline_Profissional.ipynb
│ │ ├── OCR4_SuperOCR_Profissional.ipynb
│ │ ├── OCR5_DocumentIntelligence_Profissional.ipynb (original)
│ │ ├── OCR5_DocumentIntelligence_Profissional_v2.ipynb (atual — ver abaixo)
│ │ └── DocContextEngine.ipynb
│ └── OCR Audio/
│ ├── Extrator_Audio_Profissional.ipynb (original — openai-whisper)
│ └── Extrator_Audio_Profissional_v2.ipynb (atual — faster-whisper)
├── scripts/
│ ├── gerar_ocr5_notebook.py — gerador do notebook OCR5 v2 (edite aqui, não o .ipynb)
│ ├── extrator_audio.py — CLI do extrator de áudio (openai-whisper)
│ ├── extrator_audio_v2.py — CLI equivalente usando faster-whisper (atual)
│ ├── docflow.py — pipeline local imagem/PPTX/DOCX → JSON → render/export
│ ├── run_ocr3_backtest.py / run_ocr4_superocr.py — versões CLI dos pipelines de documento
│ └── gerar_*.py — geradores de apresentações/fluxogramas para o projeto RG2
├── Anotações/ — anotações originais de decisão técnica; fonte primária do ROADMAP.md
├── ffmpeg_bin/, poppler_bin/, tessdata/ — binários e dados de idioma usados pelos pipelines
├── ROADMAP.md — todas as melhorias propostas, com status (feito/backlog/descartado)
└── HISTORICO.md — changelog cronológico do projeto
Pessoas/, tessdata (processados)/ e saida_transcricao/ não fazem parte do repositório git
(.gitignore) — são dados pessoais/de terceiros e saídas geradas localmente, não código-fonte.
Este projeto nunca sobrescreve um notebook/script que já tem conteúdo funcional — uma nova geração de
melhorias vira um arquivo _v2 (depois _v3, e assim por diante) ao lado do original, que fica
intacto como referência histórica e continua abrindo/rodando no Jupyter normalmente. Isso é além do
que o próprio git log já preserva: o objetivo é não depender de navegar histórico de commits para
recuperar uma versão anterior que funcionava.
OCR5_DocumentIntelligence_Profissional_v2.ipynb é escrito programaticamente por
scripts/gerar_ocr5_notebook.py (não é editado à mão) — isso permite revisar e versionar as células
como código Python normal, com diff legível. Para alterar a v2:
python "scripts/gerar_ocr5_notebook.py"executado a partir de notebooks/OCR Document/ — ele escreve OCR5_DocumentIntelligence_Profissional_v2.ipynb
no diretório atual (nunca o arquivo sem sufixo).
git clone https://github.com/Dubbern/OCR.git
cd OCR- Documentos:
notebooks/OCR Document/OCR5_DocumentIntelligence_Profissional_v2.ipynb - Áudio:
notebooks/OCR Audio/Extrator_Audio_Profissional_v2.ipynb
Use Jupyter Notebook, Jupyter Lab, VS Code ou Google Colab (quando compatível com as dependências).
# Processar uma pasta inteira
resultados = backtest.run('minha_pasta/')
ground_truth = load_ground_truth('minha_pasta/', GROUND_TRUTH)
df = comparator.compare_all(resultados, ground_truth=ground_truth)
comparator.print_summary(df)
comparator.dashboard(df)Defina MODELO_WHISPER, IDIOMA_ALVO e PASTA_SAIDA nas células de configuração e rode as seções em
ordem — a célula de instalação prepara FFmpeg e faster-whisper automaticamente.
Os dois pipelines têm foco especial em automação do ambiente Windows: detectam e configuram Tesseract,
Poppler e FFmpeg localmente (copiando o executável para uma pasta *_bin/ do projeto), sem exigir
instalação manual prévia.
Extração de texto de artigos, questionários e documentos digitalizados.
Transformação de fluxogramas, swimlanes e apresentações em grafos estruturados para agentes de IA.
Transcrição local (sem nuvem) com legendas, planilha de segmentos e relatório visual.
Integração do OCR e da transcrição com pipelines maiores de análise documental.
- Pipelines de OCR multi-engine (Tesseract + EasyOCR) com fusão por confiança;
- Visão computacional aplicada a documentos (contornos, Hough, morfologia, binarização adaptativa);
- Document Layout Analysis e geração de representação semântica (BPMN) para agentes de IA;
- Medição de qualidade de extração (WER/CER, ground truth, confiança por elemento) em vez de "OCR às cegas";
- Transcrição de áudio local otimizada (CTranslate2, VAD, paralelismo);
- Automação de configuração de ambiente (Tesseract/Poppler/FFmpeg) no Windows;
- Engenharia de repositório: histórico documentado, roadmap priorizado e convenção de versionamento.
O projeto está sendo utilizado como base para experimentação em processamento documental, transcrição e automação de workflows de pesquisa:
OCR / Transcrição
↓
Document / Speech Processing
↓
Structured Extraction
↓
Quality Measurement (WER/CER/ground truth)
↓
Data Pipeline
↓
Research Automation / AI Agent Grounding
A intenção é evoluir a solução para workflows capazes de processar documentos e áudio de forma mais
automatizada e integrá-los a outras ferramentas de análise e IA — ver a visão de longo prazo em
ROADMAP.md.
Pipeline de pesquisa e prototipagem, não um sistema de produção:
- Tempo de processamento de minutos por documento grande (sem API/interface além do notebook);
- Qualidade do OCR depende de resolução, ruído e layout do documento;
- Setas curvas e conectores com cotovelo não são detectados corretamente pelo
ConnectorDetector; - Classificação semântica (BPMN) é regex, funciona bem só para vocabulário de processos corporativos em português;
- Transcrição depende de hardware local (GPU acelera bastante, mas roda em CPU também).
Detalhes completos e análise crítica versão a versão: Anotações/README_OCR5.md, Anotações/readmeocr4.md.
Lista completa, priorizada e com justificativa de cada decisão em ROADMAP.md. Destaques
do backlog atual:
- WhisperX / Distil-Whisper (ganho adicional de velocidade na transcrição);
- Conectores por Graph Neural Network (substituindo a heurística Hough);
- Detecção de mudanças entre versões de manifesto (rastrear evolução de processos);
- Agente de reconstrução end-to-end (manifest → draw.io/Mermaid/BPMN);
- Benchmark em dataset público de fluxogramas (FlowchartQA, DiagramNet).
🟡 Em desenvolvimento — Pesquisa / P&D
A implementação atual já contempla:
- ✅ Pipeline de Document Intelligence (OCR3 → OCR4 → OCR5 v2) com manifesto estruturado;
- ✅ Detecção de nós por visão computacional, independente do
docflow; - ✅ Conectores com origem e destino reais (
from_node/to_node); - ✅ Ground truth manual + métricas WER/CER reais para imagens;
- ✅ Paralelismo por página no pipeline de documentos;
- ✅ Transcrição local via
faster-whisper(~3–10x mais rápido que a versão anterior); - ✅ Automação de configuração de ambiente (Tesseract/Poppler/FFmpeg) no Windows;
- ✅ Histórico (
HISTORICO.md) e roadmap priorizado (ROADMAP.md) mantidos no repositório; - 🚧 Próximos passos e itens descartados (com justificativa) documentados em
ROADMAP.md.
Yuri Fernando Dubbern
AI/ML Engineer · Computer Vision · Document Intelligence · Automation · Research Engineering