Modelos OCR: Tesseract, PaddleOCR-VL ou um VLM de documentos?

Tradução automática

Este artigo foi traduzido automaticamente a partir da versão original em inglês.

Escolha um sistema de reconhecimento ótico de caracteres (OCR) com base no documento e no resultado necessário. Páginas impressas limpas, formulários, tabelas, recibos, artigos de investigação, capturas de ecrã e manuscritos colocam problemas diferentes. Decida primeiro se precisa de texto bruto, disposição da página, campos estruturados ou respostas fundamentadas no documento.

Num PDF, verifique primeiro se o texto incorporado e a disposição da página são utilizáveis. Extraia-os diretamente se forem adequados à tarefa. Teste OCR clássico como o Tesseract para digitalizações limpas de páginas impressas. Teste o PaddleOCR-VL 1.6 para processar a disposição da página, texto, tabelas e fórmulas na sua própria infraestrutura. Teste o dots.mocr para gráficos estruturados. Um modelo geral de visão-linguagem (VLM) é outro candidato quando a tarefa também exige responder a perguntas visuais.

Compare os candidatos segundo os seus tipos de documentos, campos necessários, controlos de dados, latência e custo.

Tabela de decisão

Problema do documentoPonto de partidaMotivo
PDF com texto incorporado utilizávelExtração do texto e da disposição da página do PDFEvita reconhecer texto que já está armazenado no ficheiro.
Digitalizações impressas limpas em grande volumePipeline de OCR clássicoBarato, previsível, adequado para CPU e fácil de processar em lotes.
PDFs complexos com tabelas, fórmulas e figurasPaddleOCR-VL 1.6 ou um VLM de documentos alojadoTeste um parser especializado contra um modelo geral nas mesmas páginas.
Extração de campos estruturadosVLM com structured output ou um parser de domínioO esquema do resultado é tão importante como o reconhecimento do texto.
Documentos sensíveis do ponto de vista dos dadosOCR alojado na própria infraestrutura ou VLM abertoMantém os documentos dentro do seu ambiente.
Reconstrução da disposição da páginaPaddleOCR-VL, dots.mocr ou outro parser de disposição da páginaO texto OCR simples perde a ordem de leitura, tabelas, legendas e secções.
Processos de revisão humanaOCR com confiança e proveniência dos fragmentosOs revisores precisam de rastreabilidade da página, caixa, campo e fonte.

OCR e compreensão de documentos

O OCR tradicional extrai caracteres. A análise de documentos com AI também precisa de disposição da página e significado. Células de tabelas, caixas de seleção, assinaturas, legendas e notas de rodapé podem conter texto, mas reduzir esses elementos a uma única cadeia de texto destrói as relações entre eles. Essa perda compromete depois a extração de campos e a resposta a perguntas.

Os modelos de visão-linguagem podem extrair campos e responder a perguntas sobre diagramas ou tabelas. Os seus resultados continuam a precisar de verificação na página. PaddleOCR-VL 1.6 combina análise da disposição da página com um componente VLM de 0.9B, enquanto o dots.mocr também analisa gráficos estruturados. Compare estes pipelines com OCR clássico nas páginas e nos campos de que precisa; um modelo maior não justifica substituir um extrator que funciona.

Classes de modelos e ferramentas

ClassePonto forteLimitaçãoUse-o quando
OCR ao estilo do TesseractCusto, transparência e execução sem ligação à redeFraco em manuscritos, disposição da página, digitalizações ruidosas e documentos complexosA entrada é texto impresso limpo e a tarefa é extração de texto.
VLM de documentos na nuvemLida com PDFs, gráficos, tabelas e contexto multimodal complexosCusto, latência, localização dos dados e dependência de APIPrecisa de extração de elevada qualidade ou resposta a perguntas sobre documentos variados.
PaddleOCR-VL 1.6Texto, tabelas, fórmulas, gráficos, disposição da página e 109 idiomasO pipeline completo é mais complexo do que apenas o seu componente VLMPrecisa de um parser de documentos alojado na própria infraestrutura e mantido.
dots.mocrTexto de documentos e análise de gráficos estruturadosRecursos para o serving de um modelo de 3B e qualidade do resultado dependente da tarefaOs gráficos, figuras ou a reconstrução orientada a SVG são importantes.
VLM geral abertoControlo dos dados, personalização e raciocínio visual mais abrangenteComplexidade de serving e variabilidade entre modelosPrecisa de alojamento próprio para além da análise de documentos.
Parser de disposição da páginaCaixas, ordem de leitura e estrutura do documentoNormalmente requer orquestração com OCR ou VLMA fidelidade da disposição da página é importante.
Pipeline híbridoControlo de custos e encaminhamentoMais engenhariaPode encaminhar páginas simples para OCR barato e páginas difíceis para VLMs.

Um pequeno teste da ordem de leitura

A extração de texto pode recuperar todas as palavras e, ainda assim, perder a ordem das linhas de uma tabela. Este PDF sintético contém duas colunas:

ItemPrice
Cable10
Adapter25

As associações necessárias são Cable → 10 e Adapter → 25. O código escreve primeiro a coluna da esquerda e depois a da direita. Compare a extração predefinida do PyMuPDF com a extração ordenada por posição na mesma página. Guarde este código como reading_order.py e execute-o com uv run --with pymupdf==2.0 python reading_order.py; cria o PDF em memória e não precisa de um ficheiro de entrada.

import pymupdf

with pymupdf.open() as document:
    page = document.new_page(width=400, height=220)
    for x, values in [(40, ["Item", "Cable", "Adapter"]), (240, ["Price", "10", "25"])]:
        for y, value in zip([50, 80, 110], values):
            page.insert_text((x, y), value)

    stored = page.get_text().split()
    ordered = page.get_text(sort=True).split()
    assert stored == ["Item", "Cable", "Adapter", "Price", "10", "25"]
    assert ordered == ["Item", "Price", "Cable", "10", "Adapter", "25"]
    print("stored:", " ".join(stored))
    print("sorted:", " ".join(ordered))

Resultado observado com PyMuPDF 2.0:

stored: Item Cable Adapter Price 10 25
sorted: Item Price Cable 10 Adapter 25

O resultado predefinido preserva o texto, mas agrupa-o por coluna. A ordenação repõe a ordem das linhas neste exemplo, pelo que o OCR é desnecessário. Este teste verifica um comportamento de extração numa página criada para o exemplo; não compara a precisão dos modelos OCR. O PyMuPDF documenta o problema da ordem de leitura e a opção de ordenação. As células com várias linhas, as células unidas e as tabelas múltiplas precisam de testes separados. Para um documento real, defina os campos e as relações esperados antes de comparar um extrator de texto, um motor OCR e um VLM de documentos.

Arquitetura prática

Para análise de documentos com AI em produção, não enviaria todas as páginas para o modelo mais caro por defeito.

  1. Inspecione o ficheiro e registe metadados ao nível da página. Nos PDFs, verifique se o texto existente e a ordem de leitura são adequados à tarefa.
  2. Extraia diretamente o texto incorporado utilizável. O PyMuPDF recomenda verificar se é necessário OCR antes de o executar numa página.
  3. Encaminhe digitalizações impressas limpas sem texto utilizável para OCR clássico.
  4. Encaminhe tabelas, páginas com baixa confiança, regiões manuscritas e disposições complexas da página para um VLM ou parser especializado.
  5. Exija structured output para os campos e valide depois os valores na página. Um esquema pode impor a estrutura dos campos sem provar que um valor aparece no documento.
  6. Armazene fragmentos de origem, números de página, caixas delimitadoras quando disponíveis e a versão do modelo.
  7. Faça amostragem para revisão humana por confiança, tipo de documento e impacto a jusante.

Adicione encaminhamento quando os testes mostrarem que diferentes tipos de página precisam de métodos diferentes. Verifique se o encaminhador não encaminha uma página difícil para um percurso que perca campos necessários.

Lista de verificação de avaliação

Não avalie o OCR apenas com a taxa de erro de caracteres. Para análise de documentos com AI, acompanhe:

  • precisão ao nível dos campos extraídos
  • preservação das células das tabelas
  • precisão da ordem de leitura
  • cobertura das páginas
  • taxa de campos sem confirmação no documento
  • suporte por citações ou fragmentos para as afirmações extraídas
  • taxa de correções humanas
  • custo por página e latência por documento

Leitura adicional

Referências