Por que o CER Engana em Modelos de Linguagem Visual para Análise de DocumentosQuantificado com Dados de Benchmark Primeira Parte (2026)

Última revisão: 2026-08-18 · Nível de execução: oficial · Benchmark primeira parte · 8 engines × 2 conjuntos de dados de recibos

O que esta página aborda: Uma quantificação primeira parte e reproduzível de quando e em que medida a Character Error Rate (CER) engana ao comparar engines de OCR tradicionais com modelos de linguagem visual para análise de documentos (VLMs) — o mecanismo de duas camadas (normalização da saída do VLM, depois inflação da estrutura do texto de referência), as inversões de classificação CER-vs-F1 de campo medidas e as métricas que permanecem justas entre as famílias. Cada número é rastreável a uma linha CSV publicada em o repositório público de benchmark OCR (ImageToTableai/benchmark-ocr); as estimativas de decomposição CER de ~76%/~18%/~10% são estimativas de análise do protocolo de benchmark, não colunas CSV, e são rotuladas como tal onde aparecem.
O que esta página NÃO aborda: A diferença definicional entre precisão a nível de caractere e a nível de campo — isso está na página de definição complementar Precisão a Nível de Campo vs. a Nível de Caractere; esta página é a camada de dados que quantifica a lacuna. Não são medidos faturas, formulários ou documentos longos — apenas recibos (SROIE 2019 inglês, CORD v2 indonésio), um nível de GPU (RTX 4090), versões de modelo de agosto de 2026.

Declaração de escopo: Mecanismo ilustrado em recibos (SROIE 2019 inglês, 361 amostras de teste; CORD v2 indonésio, 100 amostras de teste) usando os dados de benchmark primeira parte. A decomposição CER de ~76%/~18%/~10% é uma estimativa derivada da nota do protocolo, não uma coluna CSV. O CORD nunca é mesclado na classificação do SROIE — idioma diferente, estrutura de texto de referência diferente.

A Character Error Rate é um algoritmo de correspondência exata de caracteres, não um medidor de qualidade: ela cobra um erro para cada caractere que difere do texto de referência. Neste benchmark, essa convenção de pontuação sozinha — antes de qualquer leitura incorreta real — move engines entre o topo e o fundo da classificação: o Unlimited-OCR pontua o pior CER (0.6552) e o melhor F1 de campo com regex (0.3376) nos mesmos 361 recibos SROIE, enquanto o docTR pontua o 2º melhor CER (0.1971) e o pior F1 de campo (0.0766).

Os três números que os escritores mais precisam: ~18% do orçamento de CER de um VLM no SROIE são apenas substituições de caixa (estimativa derivada do protocolo) — normalizar TAN CHAY YEE para tan chay yee é pontuado como erros, embora o valor do campo esteja correto; 1.0805, o CER do PaddleOCR-VL no CORD — o pior de todas as 8 engines, um artefato do texto de referência estruturado do CORD, enquanto seu F1 de campo no CORD de 0.3412 é o melhor do benchmark; e a inversão 0.6552 / 0.3376 (pior CER / melhor campo) que faz a classificação apenas por CER escolher o vencedor errado.

~18%
Parcela do orçamento de CER do VLM no SROIE atribuída a substituições de caixa na análise de decomposição de erros do benchmark — os caracteres estão corretos, apenas a caixa foi normalizada (estimativa derivada do protocolo das notas de análise do benchmark, não uma coluna CSV)
1.0805
CER do CORD do PaddleOCR-VL — o pior de todos os 8 motores em uma métrica que incorpora a estrutura da anotação no texto de referência; o F1 de campo regex do mesmo motor no CORD (0.3412) é o melhor do benchmark (summary_metrics.csv, cer / field_f1_regex, paddleocr_vl_vllm/cord_v2 row)
0.6552 ↔ 0.3376
CER do Unlimited-OCR (pior de 8) versus seu F1 de campo regex (melhor de 8) nos mesmos recibos SROIE — a inversão de classificação mais acentuada no benchmark (summary_metrics.csv, cer / field_f1_regex, unlimited_ocr/sroie_2019 row)

CER é um Algoritmo de Pontuação por Correspondência Exata, Não um Medidor de Qualidade

CER é a distância de edição Levenshtein entre o texto reconhecido e o texto de referência — o número mínimo de inserções, exclusões e substituições de caracteres necessárias para transformar um no outro, dividido pelo comprimento do texto de referência (a definição formal é publicada pela especificação de avaliação OCR-D). Ele conta diferenças e não consegue distinguir uma leitura incorreta de uma reformatação legítima. Quando a convenção de saída de um motor difere do texto de referência — maiúsculas/minúsculas, separadores, ordem das linhas — o CER cobra erros por comportamento que não é leitura incorreta.

Motores OCR tradicionais (Tesseract, PaddleOCR, EasyOCR, docTR) emitem fluxos de caracteres brutos que preservam o estilo original e o layout das linhas, de modo que sua convenção de saída fica próxima ao texto de referência e o CER mede algo próximo a um erro de leitura genuíno. VLMs de análise de documentos (Surya2, Unlimited-OCR, PaddleOCR-VL) emitem texto interpretado: eles aplicam normalização de caixa (TAN CHAY YEE se torna tan chay yee), fusão rótulo/valor (INVOICE NO\n: PEGIV se torna Invoice No : PEGIV) e reordenação de linhas — as convenções de saída de um leitor, não de um scanner. Cada caixa normalizada e linha fundida é uma penalidade de distância de edição, mesmo quando o valor do campo subjacente está correto.

A análise de protocolo do benchmark das previsões SROIE publicadas decompõe o orçamento bruto de CER de um VLM em aproximadamente ~76% de caracteres idênticos ao texto de referência, ~18% de substituições de caixa e ~10% de fusões de linhas / separadores omitidos — com os valores reais dos campos (empresa, total, data, endereço) corretos. Esta decomposição é uma estimativa derivada do protocolo das notas de análise do benchmark, não uma coluna de CSV; trate a divisão como direcional, não precisa. A direção é o que importa: a normalização de caixa sozinha pode explicar uma grande parte do CER "ruim" de um VLM em recibos limpos em inglês.

Duas linhas de CSV tornam o mecanismo visível sem qualquer decomposição. Unlimited-OCR pontua CER 0.6552 mas WER 0.4779 no SROIE — seus caracteres parecem embaralhados enquanto suas palavras sobrevivem, porque a normalização de caixa substitui caracteres sem quebrar palavras (summary_metrics.csv, cer / wer, unlimited_ocr/sroie_2019 row). E o VLM que menos normaliza, Surya2, pontua CER 0.1915 — o melhor CER bruto em toda a execução de 8 motores, indistinguível de um motor tradicional forte (summary_metrics.csv, cer, surya2/sroie_2019 row). A convenção de saída do VLM, não a capacidade de leitura do VLM, é o que a coluna CER está principalmente medindo.

A Prova Está nas Inversões: CER e F1 de Campo Discordam

A classificação por CER do benchmark e sua classificação por extração de campos discordam materialmente. Classifique os oito motores pelo CER do SROIE e o vencedor é Surya2 (0,1915); classifique-os pelo F1 de campo com regex — a métrica que se aproxima do que um pipeline de produção consome — e o vencedor é Unlimited-OCR (0,3376), o motor que o CER classifica em último lugar. Uma das duas colunas não está medindo o que os sistemas downstream realmente consomem.

F1 de Campo é a média harmônica de precisão e recall sobre os valores dos campos extraídos (empresa, data, endereço, total no SROIE): um campo é uma unidade binária — ele corresponde ou falha. A coluna regex aplica o mesmo conjunto fixo de padrões ao texto de cada motor, então a única variável é a saída do motor. A tabela abaixo combina o CER de cada motor com seu F1 de campo regex nas mesmas 361 notas fiscais, com a classificação de cada motor sob ambas as métricas.

SROIE 2019 CER vs F1 de campo regex por motor: CER (menor é melhor) — Surya2 0,1915, docTR 0,1971, PaddleOCR 0,2045, EasyOCR 0,2833, Tesseract 0,3347 (CPU), PaddleOCR-VL 0,3370, Docling 0,5909, Unlimited-OCR 0,6552. F1 de campo regex (maior é melhor) — Unlimited-OCR 0,3376, PaddleOCR-VL 0,3368, PaddleOCR 0,3254, Surya2 0,3183, Tesseract 0,2335, Docling 0,2237, EasyOCR 0,1477, docTR 0,0766.

Fonte: summary_metrics.csv — colunas cer e field_f1_regex, linhas sroie_2019 (361 amostras por motor, error_rate 0,0 para todos os 8). As duas séries não são comparáveis entre si em magnitude (unidades diferentes), mas suas classificações discordam, que é o ponto.

ModeloTipoCERWERF1 de campo (regex)Ranking CERRanking F1 de campoFonte
Surya2VLM de análise de documentos0.19150.27350.318314summary_metrics.csv · linha surya2/sroie_2019
docTROCR tradicional (GPU)0.19710.31990.076628summary_metrics.csv · linha doctr/sroie_2019
PaddleOCROCR tradicional (GPU)0.20450.32560.325433summary_metrics.csv · linha paddleocr/sroie_2019
EasyOCROCR tradicional (GPU)0.28330.61580.147747summary_metrics.csv · linha easyocr/sroie_2019
TesseractOCR tradicional (CPU)0.33470.55910.233555summary_metrics.csv · linha tesseract/sroie_2019
PaddleOCR-VLVLM de análise de documentos0.33700.64620.336862summary_metrics.csv · linha paddleocr_vl_vllm/sroie_2019
DoclingParser de pipeline0.59090.75960.223776summary_metrics.csv · linha docling/sroie_2019
Unlimited-OCRVLM de análise de documentos0.65520.47790.337681summary_metrics.csv · linha unlimited_ocr/sroie_2019

Tabela: summary_metrics.csv — colunas cer / wer / field_f1_regex, linhas sroie_2019. Rankings calculados entre as 8 linhas desta tabela (1 = melhor naquela métrica: menor CER, maior F1 de campo). Estas são métricas postprocessed_sroie_receipt_regex_*: padrões fixos aplicados ao texto OCR de cada engine, não saída estruturada nativa. O Tesseract foi executado apenas em CPU (compute_type=cpu).

Leia explicitamente os dois pares de inversão. Unlimited-OCR: pior CER (0.6552), melhor F1 de campo (0.3376) — o motor que a métrica de OCR bruto classifica em último é o motor que a perspectiva de campo classifica em primeiro. docTR: 2º melhor CER (0.1971), pior F1 de campo (0.0766) — perfeito em texto, falho em campos. PaddleOCR-VL também inverte na margem (CER rank 6, campo rank 2), enquanto as duas linhas alinhadas (PaddleOCR 3º/3º, Tesseract 5º/5º) são ambos motores tradicionais cuja convenção de saída de texto bruto é exatamente o que o CER foi projetado para avaliar. Classifique os motores apenas por CER e você terá um vencedor diferente do que classificar pelo que a produção consome — a inversão é a demonstração, não uma anomalia.

A Métrica de Campo é a Perspectiva Confiável entre Famílias

Execute o texto bruto de cada motor pelo mesmo pós-processador de extração de campos por LLM (deepseek-v4-flash, temperatura 0) e os seis motores com texto OCR utilizável convergem para 0,57–0,62 de F1 de campo — a fronteira familiar VLM-vs-tradicional que a classificação por CER faz parecer enorme (0,19 a 0,66) quase desaparece. Dois motores ficam abaixo da faixa: EasyOCR em 0,3717 e Tesseract em 0,4389. A métrica de campo separa os motores pelo que realmente importa — a recuperação de campos downstream — e o faz de forma consistente através da fronteira familiar.

Este é o mesmo conjunto de motores da tabela de CER acima, reavaliado apenas na dimensão de campo: a inversão de CER entre Unlimited-OCR e docTR desaparece, porque a recuperação de valores de campo é o que o pipeline consome. O mecanismo é que o pós-processador absorve as diferenças de convenção de saída que o CER puniu — ele lê o texto com normalização de caixa e fusão rótulo/valor e extrai os valores. O F1 de campo por LLM aqui é a coluna llm_field_value_f1 da comparação de métodos do benchmark, com o modelo LLM registrado por linha.

ModeloTipoCER (contexto)F1 de campo LLMNa faixa de convergência (0,57–0,62)Fonte
docTROCR Tradicional (GPU)0,19710,6171Sim — maiorfield_method_comparison.csv · llm_field_value_f1, linha doctr/sroie_2019
Surya2VLM de análise de documento0,19150,6139Simfield_method_comparison.csv · llm_field_value_f1, linha surya2/sroie_2019
Unlimited-OCRVLM de análise de documento0,65520,6054Simfield_method_comparison.csv · llm_field_value_f1, linha unlimited_ocr/sroie_2019
PaddleOCR-VLVLM de análise de documento0,33700,5921Simfield_method_comparison.csv · llm_field_value_f1, linha paddleocr_vl_vllm/sroie_2019
PaddleOCROCR Tradicional (GPU)0,20450,5810Simfield_method_comparison.csv · llm_field_value_f1, linha paddleocr/sroie_2019
DoclingParser de pipeline0,59090,5685Sim — borda da faixafield_method_comparison.csv · llm_field_value_f1, linha docling/sroie_2019
TesseractOCR Tradicional (CPU)0,33470,4389Não — abaixofield_method_comparison.csv · llm_field_value_f1, linha tesseract/sroie_2019
EasyOCROCR Tradicional (GPU)0,28330,3717Não — abaixofield_method_comparison.csv · llm_field_value_f1, linha easyocr/sroie_2019

Tabela: field_method_comparison.csv — coluna llm_field_value_f1, linhas sroie_2019, llm_model=deepseek-v4-flash. A coluna CER é repetida de summary_metrics.csv apenas para referência cruzada. A “faixa de convergência” é a faixa observada de 0,5685–0,6171 dos seis motores com texto utilizável; as duas linhas abaixo da faixa são declaradas como observações, não como uma classificação dos motores.

CORD Adiciona uma Segunda Camada de Inflação: Estrutura do Texto de Referência

O texto de referência publicado do CORD (gt_text) incorpora estrutura de anotação — rótulos de campos, itens de menu e coordenadas — em vez de texto visível puro. O CER calcula a distância de edição em relação a essa string estruturalmente aumentada, de modo que o CER do CORD de cada motor é sistematicamente inflado antes mesmo de qualquer erro de leitura ser considerado. O resultado: todos os oito motores se agrupam em CORD CER 0,90–1,08 — um intervalo comprimido inútil que quase nada diz sobre a qualidade do texto.

O artefato extremo é o CORD CER do PaddleOCR-VL de 1,0805, o pior dos 8 motores — não uma leitura de sua qualidade de texto, mas a inflação estrutural trabalhando mais fortemente contra a saída mais limpa e curta, que tem a maior distância de edição relativa em relação ao texto de referência carregado de estrutura do CORD. Na lente de campos, o mesmo motor apresenta o CORD v2 CER vs regex field F1 by engine: CER (lower is better) — Surya2 0.8959, PaddleOCR 0.9083, docTR 0.9101, EasyOCR 0.9185, Docling 0.9219, Unlimited-OCR 0.9224, Tesseract 0.9523 (CPU), PaddleOCR-VL 1.0805. Regex field F1 (higher is better) — PaddleOCR-VL 0.3412, Surya2 0.2458, Unlimited-OCR 0.1079, Tesseract 0.0752, Docling 0.0612, PaddleOCR 0.0154, EasyOCR 0.0067, docTR 0.0.

Fonte: summary_metrics.csv — colunas cer e field_f1_regex, linhas cord_v2 (100 amostras por motor). O CER do CORD não é comparável entre famílias ou mesmo entre motores — o texto de referência incorpora estrutura de anotação, então o CER mede a distância para uma string estruturalmente aumentada, não para o texto visível.

ModeloTipoCER CORDF1 de campo (regex)Fonte
PaddleOCR-VLVLM de análise de documentos1.08050.3412summary_metrics.csv · linha paddleocr_vl_vllm/cord_v2
Surya2VLM de análise de documentos0.89590.2458summary_metrics.csv · linha surya2/cord_v2
Unlimited-OCRVLM de análise de documentos0.92240.1079summary_metrics.csv · linha unlimited_ocr/cord_v2
TesseractOCR tradicional (CPU)0.95230.0752summary_metrics.csv · linha tesseract/cord_v2
DoclingParser de pipeline0.92190.0612summary_metrics.csv · linha docling/cord_v2
PaddleOCROCR tradicional (GPU)0.90830.0154summary_metrics.csv · linha paddleocr/cord_v2
EasyOCROCR tradicional (GPU)0.91850.0067summary_metrics.csv · linha easyocr/cord_v2
docTROCR tradicional (GPU)0.91010.0000summary_metrics.csv · linha doctr/cord_v2

Tabela: summary_metrics.csv — colunas cer / field_f1_regex, linhas cord_v2. CORD não é incluído em nenhum ranking SROIE (regra do protocolo): a estrutura do texto de referência infla o CER para todos os motores, e os padrões regex foram escritos para formatos em inglês. As métricas de campo são a única lente justa para CORD. Ordenado por F1 de campo, não por CER — o ponto é que a coluna CER não traz sinal de ordenação.

A lente de campo inverte completamente a tabela CORD. O motor com o pior CER CORD do benchmark (PaddleOCR-VL, 1.0805) tem o melhor F1 de campo CORD (0.3412); o F1 de campo CORD do docTR é literalmente 0.0000 — nada extraído — enquanto seu CER CORD (0.9101) fica no meio do grupo e não diz nada sobre ele. No CORD, publicar o CER sem os números de campo não é apenas não informativo; classifica ativamente os motores na ordem errada.

Quando o CER é Realmente a Métrica Correta

O CER ainda mede algo real — a reprodução exata de caracteres — e é a métrica correta sempre que o consumidor downstream precisa de texto literal, não de campos. A conclusão desta página é “O CER engana na comparação entre famílias de saídas de estilo VLM,” e não “O CER está sempre errado.”

  • Dentro da família de OCR bruto, o CER mantém seu valor. Motores tradicionais emitem texto bruto com caixa e layout preservados, então o CER mede a qualidade de leitura genuína: a coluna de CER do motor tradicional neste benchmark (0.1971–0.3347 no SROIE) acompanha seu desempenho em campos muito mais de perto do que para os VLMs (correlação de classificação com o F1 de campo por regex: PaddleOCR e Tesseract estão exatamente alinhados em 3º/3º e 5º/5º).
  • Casos de uso para texto literal. Consumidores downstream de correspondência exata — busca em texto completo que deve encontrar uma string literal, trilhas de auditoria que reproduzem os caracteres de um documento, ou verificações de aprovação/reprovação contra uma sequência de caracteres obrigatória — consomem caracteres, não campos. Para esses, a reprodução exata de caracteres (CER) é a medida fiel e o F1 de campo é a lente errada.
  • Regra de publicação. Ao publicar um número de CER, declare tanto a convenção de saída do motor (ele normaliza a caixa? funde rótulos? reordena linhas?) quanto a construção do texto de referência (texto visível puro, ou anotação aumentada como o gt_text do CORD). Se qualquer uma for desconhecida, o número não é portável entre motores ou conjuntos de dados.
  • A regra de fronteira deste benchmark. O CER é justo dentro da família de OCR bruto e injusto na fronteira entre OCR tradicional / VLM de análise de documento; o F1 em nível de campo (pós-processado por regex ou LLM) é justo em ambos. Use o CER para qualidade de texto bruto na mesma família, o F1 de campo para comparação entre famílias — e sempre reporte a ressalva da decomposição para linhas de VLM.

Perguntas Frequentes

Por que o CER é enganoso ao comparar motores OCR e VLMs?

Porque o CER é uma pontuação de distância de edição de caracteres exatos, e os VLMs de análise de documentos deliberadamente não reproduzem caracteres exatamente — eles normalizam a caixa, fundem linhas de rótulo/valor e reordenam o texto. Cada uma dessas normalizadas é contabilizada como um erro, mesmo quando o valor do campo está correto. Neste benchmark, o Unlimited-OCR tem o pior CER no SROIE (0.6552) enquanto possui o melhor F1 de campo com regex (0.3376) nos mesmos 361 recibos (summary_metrics.csv, cer / field_f1_regex, unlimited_ocr/sroie_2019 row) — a classificação por CER e a classificação por campo escolhem vencedores diferentes.

O CER ainda é uma métrica OCR útil?

Sim — dentro da família de OCR bruto e para consumidores de texto literal. Motores tradicionais (Tesseract, PaddleOCR, EasyOCR, docTR) produzem fluxos de caracteres brutos que o CER mede de forma justa: neste benchmark, seu CER no SROIE varia de 0.1971–0.3347 e acompanha o desempenho por campo (PaddleOCR 3º/3º, Tesseract 5º/5º no CER e F1 de campo). O CER é a métrica errada quando o motor normaliza sua saída (estilo VLM) ou quando o texto de referência incorpora estrutura em vez de texto visível (CORD).

Por que modelos VLM de OCR têm altas taxas de erro de caracteres?

Principalmente por convenção de saída, não por capacidade de leitura. A análise de protocolo do benchmark atribui aproximadamente ~18% do orçamento de CER no SROIE de um VLM a substituições de caixa e ~10% a fusões de linha/separadores omitidos (estimativa derivada do protocolo nas notas de análise do benchmark, não uma coluna do CSV) — enquanto os valores dos campos em si estão corretos. O CER de 0.6552 vs WER de 0.4779 do Unlimited-OCR mostra a assinatura: caracteres são normalizados, palavras sobrevivem (summary_metrics.csv, cer / wer, unlimited_ocr/sroie_2019 row).

Qual a melhor métrica para comparar motores de OCR e VLMs de análise de documentos?

F1 de campo — pós-processado com regex para um pipeline de OCR bruto, pós-processado com LLM para qualquer família. No SROIE, o F1 de campo com LLM converge seis motores para 0,57–0,62 independentemente da família (field_method_comparison.csv, llm_field_value_f1, sroie_2019 rows), e o F1 de campo com regex é a única lente que classifica a tabela CORD de forma sensata, onde o 0,3412 do PaddleOCR-VL é o melhor do benchmark (summary_metrics.csv, field_f1_regex, cord_v2 rows). Sempre indique o pós-processador e a convenção de saída junto com o número.

Por que o CER do PaddleOCR-VL é tão alto no CORD, mas seu F1 de campo é o melhor?

Porque o texto de referência do CORD incorpora a estrutura de anotação (rótulos de campo, coordenadas, itens de cardápio) em vez de apenas o texto visível, e a saída do PaddleOCR-VL é a mais limpa — mais curta, mais normalizada — então sua distância de edição para essa string estruturalmente aumentada é a maior (CER 1,0805, o pior de 8). Na lente de campo, o mesmo texto extrai os campos do recibo indonésio com 0,3412 de F1 de campo, o melhor do benchmark (summary_metrics.csv, cer / field_f1_regex, paddleocr_vl_vllm/cord_v2 row). O CER do CORD é estruturalmente inutilizável para todos os motores; as métricas de campo são a única comparação justa do CORD.

O que é normalização de caixa e por que ela inflaciona o CER?

A normalização de caixa é normalizar todo o texto para uma única caixa — TAN CHAY YEE se torna tan chay yee. O CER compara caracteres exatamente, então cada letra normalizada é uma substituição em relação ao texto de referência em maiúsculas, mesmo que o valor seja idêntico. Na análise de protocolo deste benchmark, as substituições de caixa correspondem a aproximadamente ~18% do orçamento de CER de um VLM no SROIE (estimativa derivada do protocolo) — é por isso que um VLM pode ler um recibo perfeitamente e ainda relatar um CER que parece o de um modelo com falha.

Devo comparar motores OCR por CER ou por F1 de campo?

Por F1 de campo para qualquer comparação que envolva motores OCR tradicionais e VLM — porque seu pipeline consome campos, não fluxos de caracteres, e porque o CER é sistematicamente inflado para a saída VLM normalizada e o texto de referência com estrutura aumentada. Use o CER apenas dentro da família de OCR bruto ou quando o consumidor downstream precisa de texto literal (busca, auditoria, correspondência exata). As duas métricas discordam fortemente neste benchmark: o CER classifica o docTR em 2º e o Unlimited-OCR em 8º; o F1 de campo com regex classifica o docTR em 8º e o Unlimited-OCR em 1º (summary_metrics.csv, linhas sroie_2019).

De onde vêm esses números de CER e F1 de campo?

Cada número de tabela é uma linha do results/summary_metrics.csv ou results/field_method_comparison.csv publicado pelo benchmark de primeira parte, hospedado em ImageToTableai/benchmark-ocr, com um manifest.json redatado por execução registrando versões do modelo e impressões digitais do ambiente. A decomposição de CER de ~76%/~18%/~10% é uma estimativa derivada do protocolo das notas de análise do benchmark, explicitamente não uma coluna CSV. As definições de conjunto de dados vêm dos artigos SROIE e CORD citados abaixo.

Metodologia & Fontes

Protocolo

Esta página relata a dimensão de equidade de métricas de uma execução de benchmark independente e reproduzível (nível oficial) — não um levantamento de alegações de terceiros. Apenas divisões de teste fixas: SROIE 2019 teste (361 recibos em inglês, campos planos empresa/data/endereço/total, CC-BY-4.0) e CORD v2 teste (100 recibos indonésios, campos aninhados menu/sub_total/total, CC-BY-4.0); divisões de treinamento nunca foram avaliadas. Oito motores rodaram fora da caixa, sem ajuste fino, sob o protocolo congelado reports/receipt_v1_official_protocol.md (aquecimento-para-pontuação, apenas nível oficial). Todas as 16 execuções pontuadas foram concluídas com error_rate 0.0 (coluna error_rate do summary_metrics.csv). Os dados foram coletados em agosto de 2026.

Ambiente de Execução

  • Hardware: todas as execuções em GPU foram realizadas em uma única NVIDIA RTX 4090 (24 GB); Tesseract foi executado apenas em CPU (compute_type=cpu) e é rotulado como tal em todas as tabelas.
  • Motores e versões (por manifesto de execução): Tesseract 5.3.4, PaddleOCR 3.7.0, EasyOCR 1.7.2, docTR v1.0.1, Docling 2.119.0, Surya2 0.22.1, Unlimited-OCR servido via vLLM, PaddleOCR-VL 1.6.
  • Pós-processadores de campo: F1 de campo por regex = padrões fixos sroie_receipt_regex/cord_receipt_regex aplicados ao texto OCR de cada motor (pós-processado, não extração nativa); F1 de campo por LLM = deepseek-v4-flash (temperatura 0) lendo o mesmo texto (coluna llm_model de field_method_comparison.csv).

Definições das Métricas

  • Character Error Rate (CER): distância de edição Levenshtein entre o texto reconhecido e o texto de referência — mínimo de inserções/exclusões/substituições dividido pelo comprimento do texto de referência (especificação de avaliação OCR-D). Menor é melhor. Mede apenas a reprodução exata de caracteres.
  • Word Error Rate (WER): a mesma lógica de distância de edição em granularidade de palavra — uma palavra sobrevive a uma única substituição de caixa, então a divergência CER/WER revela normalização que altera caracteres sem quebrar palavras.
  • F1 de valor de campo: média harmônica de precisão e recall sobre os valores dos campos extraídos; um campo corresponde apenas se for exatamente igual ao texto de referência. As colunas regex e LLM são dois pós-processadores sobre o mesmo texto OCR, nunca misturados.
  • Convenção de saída: como um motor formata seu texto (caixa, separadores, ordem das linhas). Motores tradicionais preservam; VLMs de análise de documento normalizam — o eixo que esta página mede.
  • Estrutura do texto de referência: se o texto de referência é texto visível puro (SROIE) ou aumentado com estrutura de anotação (CORD gt_text), o que infla o CER para todos os motores.

Lista de Fontes

  1. summary_metrics.csv (GitHub raw). 16 linhas = 8 engines × 2 conjuntos de dados de recibos. Colunas incluem cer, wer, field_f1_regex, field_acc_regex, compute_type, error_rate. Todos os valores de CER/WER e F1 de campo regex nesta página são rastreados até uma linha aqui, citados no nível de arquivo/modelo/conjunto de dados/métrica.
  2. field_method_comparison.csv (GitHub raw). Comparação lado a lado de extração de campos por Regex vs LLM (llm_field_value_f1, llm_model=deepseek-v4-flash). Fonte para a tabela de F1 de campo por LLM.
  3. Repositório ImageToTableai/benchmark-ocr. Repositório público que hospeda os CSVs de resultados, manifestos de execução redatados, o protocolo congelado (reports/receipt_v1_official_protocol.md) e listas de amostras fixas para reprodução.
  4. results/manifests/ (GitHub). Um manifesto.json redatado por execução publicada, com versões do modelo, impressões digitais do ambiente e hashes de artefatos.
  5. receipt_v1_official_protocol.md. O contrato de execução congelado: divisões de teste fixas, nível oficial, medição aquecida-então-pontuada, regras de separação CORD-vs-SROIE. Fonte para as regras de nível de protocolo citadas nesta página.
  6. Notas de análise do protocolo de benchmark (documentação interna de execução, WRITING_BRIEF §8.2/§8.3). O mecanismo de normalização por VLM (normalização de caixa, fusão rótulo/valor, reordenação de linhas), o mecanismo da estrutura de texto de referência do CORD e a decomposição de CER do SROIE (~76% idêntico / ~18% caixa / ~10% fusão de linhas). Citado aqui com o rótulo explícito “estimativa derivada do protocolo — não uma coluna de CSV”; a divisão é direcional, não precisa.
  7. Projeto OCR-D — Especificação de Garantia de Qualidade. Definição formal de CER (inserções + exclusões + substituições) / total de caracteres e o análogo WER. Âncora definição formal.
  8. Huang et al., “ICDAR2019 Competition on Scanned Receipt OCR and Information Extraction” (2019). Definição do conjunto de dados SROIE 2019, estrutura da tarefa, licença (CC-BY-4.0).
  9. Park et al., “CORD: A Consolidated Receipt Dataset for Post-OCR Parsing” (2020). Definição do conjunto de dados CORD, esquema de campos aninhados, licença (CC-BY-4.0).

Limitações

  • Os números de decomposição são estimativas derivadas do protocolo, não medições: a decomposição de CER do SROIE de ~76%/~18%/~10% vem das notas de análise do protocolo do benchmark (WRITING_BRIEF §8.2), não de uma coluna CSV. A direção (normalização, não leitura incorreta, domina o CER do VLM) é robusta; as porcentagens exatas devem ser tratadas como estimativas direcionais, não medições pontuais.
  • Apenas recibos: recibos do SROIE (inglês) e CORD (indonésio). O comportamento em faturas, formulários, tabelas ou documentos longos não foi medido; o mecanismo se generaliza, os números não.
  • Pós-processador LLM único: todos os valores de F1 de campo por LLM usam deepseek-v4-flash com temperatura 0. Um LLM diferente altera os valores absolutos de F1 e possivelmente a banda de convergência; a ordenação entre famílias dentro da banda é o sinal estável.
  • CER ainda válido para casos de texto literal: a conclusão é delimitada à comparação entre famílias de saídas no estilo VLM. Para comparação dentro da mesma família de OCR bruto e consumidores downstream de caracteres exatos (busca, auditoria), o CER continua sendo uma métrica legítima — esta página não é um argumento contra o CER nesses contextos.
  • CORD não mesclado nos rankings do SROIE: idioma diferente, estrutura de texto de referência diferente. CORD é comparado apenas em métricas de campo, conforme o protocolo do benchmark.
  • Versão e hardware fixados: os números valem para as versões de modelo de agosto de 2026 e uma camada de GPU (RTX 4090) listada acima. Versões mais recentes alteram o CER e o F1 de campo; diferenças de um dígito percentual devem ser tratadas como ruído.
  • Tamanho da amostra: 361 + 100 amostras; intervalos de confiança por bootstrap são reportados na saída de avaliação do benchmark, mas não são reproduzidos linha por linha nesta página.

Referências relacionadas: Acurácia em Nível de Campo vs. Nível de Caractere (definição) · OCR Tradicional vs. VLMs de Análise de Documentos · Regex vs. Extração de Campo por LLM · PaddleOCR vs. EasyOCR em Recibos · Surya2 vs. Unlimited-OCR vs. PaddleOCR-VL · Benchmark de Latência de OCR · Custo de OCR por 1.000 Páginas

Leituras relacionadas: Acurácia de OCR por IA vs. OCR Tradicional · Extração de Dados de Imagem por IA vs. OCR Tradicional

📮 contact email: [email protected]