OCR moderno: Azure Doc Intelligence, Textract, LandingAI
- ⬜👁️ Vision models: Claude Vision, GPT-4V, Gemini(Voice, Vision & Multimodal)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Três gerações coexistem
| Geração | Forte em | Fraca em | Custo |
|---|---|---|---|
| Local e gratuita | Texto impresso limpo, dado que não pode sair | Digitalização ruim, manuscrito, tabela | Zero por página |
| Serviço estruturado em nuvem | Formulário, tabela, confiança por campo | Layout muito criativo | Por página |
| Baseada em modelo de visão | Manuscrito, layout difícil, saída já estruturada | Custo e latência | Mais alto por página |
| Sanduíche: extrair e depois raciocinar | Auditabilidade com flexibilidade | Duas peças para manter | Controlado — o modelo caro lê pouco texto |
OCR não é um mercado uniforme. Três gerações convivem em 2026. Tesseract (CLI local, gratuito) cobre texto impresso simples. OCR estruturado cloud (Azure Document Intelligence, AWS Textract, Google Document AI) entrega schema tipado com confidence. LLM-powered Agentic OCR (LandingAI, Mistral OCR, Reducto) usa vision LLM por baixo e é melhor em layouts irregulares e handwriting. Cada um tem seu nicho real.
Tesseract: quando local e grátis importam
Sempre descartado cedo demais. Para texto impresso limpo em volume baixo ou dados que não podem sair do ambiente, Tesseract + preprocessing resolve.
import cv2
import pytesseract
img = cv2.imread('boleto.png')
# Preprocessing melhora muito o resultado
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 31, 2)
texto = pytesseract.image_to_string(thresh, lang='por', config='--psm 6')
# psm 6: assume um único bloco uniforme de texto
# psm 4: colunas; psm 11: linha esparsaTesseract cai muito em scan ruim. Se accuracy importa e você não controla a qualidade do scan, suba para serviço cloud — o custo por página se paga em horas de correção manual economizadas.
Azure Document Intelligence: forms e tabelas sérias
Azure Doc Intelligence oferece modelos pré-treinados (prebuilt-invoice, prebuilt-receipt, prebuilt-idDocument, prebuilt-layout) e suporte a custom models. Output JSON tipado, confidence por campo, bounding boxes.
import DocumentIntelligence, { getLongRunningPoller } from '@azure-rest/ai-document-intelligence';
import { AzureKeyCredential } from '@azure/core-auth';
const client = DocumentIntelligence(endpoint, new AzureKeyCredential(key));
const init = await client
.path('/documentModels/{modelId}:analyze', 'prebuilt-invoice')
.post({ contentType: 'application/json', detail: { urlSource: pdfUrl } });
const poller = getLongRunningPoller(client, init);
const result = (await poller.pollUntilDone()).body.analyzeResult;
for (const doc of result.documents ?? []) {
const total = doc.fields?.['InvoiceTotal'];
console.log('Total:', total?.valueCurrency, 'confidence:', total?.confidence);
}AWS Textract: ecossistema AWS
Se sua stack está na AWS, Textract integra com S3 event triggers, Step Functions e SageMaker. Bom em tabelas e forms, operation AnalyzeExpense específica para notas fiscais.
import { TextractClient, AnalyzeDocumentCommand } from '@aws-sdk/client-textract';
const client = new TextractClient({ region: 'us-east-1' });
const resp = await client.send(new AnalyzeDocumentCommand({
Document: { S3Object: { Bucket: 'docs-in', Name: 'fatura.pdf' } },
FeatureTypes: ['FORMS', 'TABLES'],
}));
// Blocks: KEY_VALUE_SET, TABLE, CELL, WORD — reconstrua a estruturaLandingAI Agentic OCR e Mistral OCR: nova geração
A onda de 2025 trouxe OCR feito em cima de vision LLM com raciocínio sobre layout. LandingAI Agentic Document Extraction e Mistral OCR processam handwriting, layouts criativos e documentos escaneados ruins melhor que a geração anterior — a custo mais alto, mas muitas vezes substituindo pipeline manual.
# Mistral OCR API
from mistralai import Mistral
client = Mistral(api_key=api_key)
resp = client.ocr.process(
model='mistral-ocr-latest',
document={'type': 'document_url', 'document_url': pdf_url},
include_image_base64=False,
)
for page in resp.pages:
print('Page', page.index, 'markdown:\n', page.markdown)
# Saída já em markdown estruturado, preservando tabelas e ordem de leituraNovidade importante: muitos desses serviços entregam Markdown pronto (tabelas preservadas, hierarquia de títulos). Isso é ótimo para RAG — pula a etapa de reconstruir estrutura do output cru.
Qual é o padrão de produção descrito para extração de documentos, e por que ele separa as responsabilidades?
Árvore de decisão prática
documento_limpo_impresso:
volume_baixo_local: tesseract + opencv preprocess
volume_alto_cloud: azure doc intelligence (prebuilt) ou textract
forms_com_checkboxes_e_assinaturas:
- azure doc intelligence prebuilt-document
- textract FORMS
(ambos retornam selection marks + signature detection)
handwriting_ou_layout_irregular:
- mistral ocr
- landingai agentic extraction
- vision llm (claude/gpt-4o) com schema forçado
tabelas_complexas_celulas_mescladas:
- azure doc intelligence prebuilt-layout
- landingai (state of art)
+ validar com LLM por cima
pipeline_rag_conteudo_em_pdf:
- mistral ocr -> markdown -> chunker
- ou textract -> raw text -> llm layout-aware chunkerSandwich OCR + LLM: o padrão 2026
O arquétipo de produção hoje é: OCR especializado extrai → LLM raciocina sobre o JSON extraído. Benefícios: extração auditável (confidence por campo), reasoning flexível do LLM, custo controlado, separação de responsabilidades para debug.
// Etapa 1: extração estruturada (Azure Doc Intelligence)
const extracted = await extractInvoice(pdfBuffer);
// => { vendor, total, lineItems, dueDate, ... } com confidence
// Etapa 2: LLM decide regra de negócio com base no JSON + política
const decision = await anthropic.messages.create({
model: 'claude-3-5-sonnet-20241022',
max_tokens: 512,
messages: [{
role: 'user',
content: 'Política de reembolso:\n' + policyText + '\n\nFatura extraída:\n' +
JSON.stringify(extracted) + '\n\nRetorne JSON { reembolsavel: boolean, motivo: string }',
}],
});Fechamento
OCR em 2026 é escolher a ferramenta certa por caso: Tesseract local, Azure/Textract para estrutura, LandingAI/Mistral para layout difícil. Sandwich OCR + LLM é padrão. Nunca confie em accuracy sem medir no seu dataset real — confidence score do provider é guia, não garantia.
Perguntas frequentes
❓ OCR tradicional ou serviço de inteligência de documento?
❓ Como medir qualidade de extração de documento?
❓ O que fazer com o campo de confiança baixa?
Fixando
Quando a ferramenta local e gratuita ainda é a escolha certa?
Serviços recentes devolvem o documento já em Markdown, com tabelas e hierarquia preservadas. Por que isso interessa a quem monta busca aumentada por recuperação?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…