SP-DocReader: Reduzindo pela metade a taxa de erro de OCR no Vary-600K com self-play sensível a diferenças
Baseado em: SP-DocReader: Difference-Aware Self-Play for Precise Document OCR — Wenjie Liao, Xiaohui Song, Liangjie Zhao, Haonan Lu
Quando mais parâmetros pioram a leitura de documentos
Fazer fine-tuning de um modelo de visão e linguagem de 4 bilhões de parâmetros em dezenas de milhares de páginas de documentos parece uma boa receita para transcrever melhor. Nos experimentos do SP-DocReader, atualizar o modelo de linguagem e o módulo de OCR em conjunto de fato produziu taxas de erro de caracteres menores na distribuição de treino. Mesmo assim, em benchmarks de documentos não vistos, essa estratégia ficou atrás de uma adaptação menor. No IIT-CDIP, que contém registros digitalizados, o ajuste conjunto do modelo de linguagem e do OCR resultou em uma taxa de erro de caracteres de 16,87%. Um módulo de OCR de 0,5 bilhão de parâmetros, treinado nas mesmas páginas com o backbone congelado, chegou a 14,42%. O codificador visual e seu conector permaneceram congelados nas duas configurações.
Essa diferença contraintuitiva é uma das descobertas do SP-DocReader, um artigo de pesquisa em OCR publicado em 8 de outubro de 2026 por Wenjie Liao, Xiaohui Song, Liangjie Zhao e Haonan Lu, afiliados à Guangdong OPPO Mobile Telecommunications e à Adelaide University. A transcrição de documentos é uma tarefa fundamentalmente implacável. Produzir uma resposta curta sobre uma página é diferente de reproduzir seu texto, incluindo caracteres e números pequenos. Os exemplos do artigo mostram o que pode dar errado: ler o ano de revogação de uma emenda constitucional como 1935 em vez de 1933, transformar "State legislatures" em "State legislators", ou transcrever uma fórmula matemática de dimensão como dim S = dim A + IL em vez de dim S = dim A + |L|.
O SP-DocReader ataca diretamente esses erros residuais. O framework combina duas ideias: um ramo de OCR modular que mantém congelado o modelo de visão e linguagem subjacente, e um esquema iterativo de treinamento por self-play que seleciona as posições da loss a partir das discrepâncias entre as transcrições geradas e as de referência.
O resultado é impressionante. No Qwen3-VL-4B, três rodadas de self-play sensível a diferenças reduziram a taxa de erro de caracteres no conjunto de validação do Vary-600K de 2,40% para 1,11%, uma redução relativa de cerca de 54% em comparação com o fine-tuning supervisionado de duas épocas. Em uma comparação separada de orçamento de treinamento, o self-play com 30.000 páginas de referência superou o fine-tuning supervisionado com 120.000 páginas em uma pontuação composta de cinco tarefas. Isso equivale a um quarto das páginas de referência de treinamento distintas, e não a uma medida de custo de anotação ou de computação total.

Por que o fine-tuning supervisionado padrão dispersa a atenção
Para entender a motivação do SP-DocReader, vale observar como o fine-tuning supervisionado (SFT) padrão treina leitores de documentos.
No fine-tuning autorregressivo padrão, o modelo recebe uma imagem do documento junto com um prompt, e o pipeline de treinamento calcula a loss de entropia cruzada com teacher forcing sobre todo o texto-alvo. Todo token-alvo recebe supervisão. Se uma referência contém 800 tokens do modelo, o objetivo inclui todas as 800 posições, embora as losses e as contribuições de gradiente delas não precisem ser iguais.
Um leitor que já transcreve corretamente boa parte da página ainda pode ter dificuldade com um conjunto menor de erros remanescentes. O SFT de sequência completa não usa uma leitura gerada para identificar essas posições. O SP-DocReader pergunta se selecionar explicitamente as divergências restantes pode melhorar a adaptação após a etapa supervisionada.
O teacher forcing também difere da geração. Durante a transcrição, o modelo condiciona cada novo token à sua própria saída anterior. Durante o treinamento supervisionado, ele prevê o próximo token de referência dado o prefixo verdadeiro. O SP-DocReader traz as leituras geradas pelo modelo para o treinamento, ainda usando prefixos completos de ground truth ao pontuar os tokens de referência.
As trajetórias supervisionadas reportadas motivam essa mudança. No Qwen3-VL-4B, o CER no Vary-600K melhora de 2,50% após uma época supervisionada para 2,40% após duas, e depois sobe para 2,66% após três. O InternVL mostra uma reversão semelhante nessa métrica. Esses resultados justificam investigar um objetivo diferente; eles não estabelecem que o fine-tuning supervisionado deixa universalmente de ajudar após duas épocas.
Tomando emprestado o self-play sem um modelo de recompensa separado
O SP-DocReader se baseia no pareamento iterativo do SPIN entre respostas de referência e saídas de um checkpoint anterior do modelo. Um modelo ativo aprende com esses pares e depois se torna o oponente da rodada seguinte.
A transcrição de documentos tem uma vantagem estrutural útil sobre o chat aberto: as páginas de treinamento têm transcrições de referência. O framework consegue localizar divergências em relação a essas referências sem treinar um modelo de recompensa separado nem coletar rótulos subjetivos de preferência.
O SP-DocReader adapta esse ciclo para a transcrição de páginas:
- O oponente gera um rascunho: Na rodada
t, o framework congela o checkpoint atual, designando-o como oponente ($\theta_t$). O oponente gera de forma gulosa uma leitura por página, parando no EOS ou em 1.024 novos tokens, excluindo o prompt. - O framework compara o rascunho: Ele alinha a sequência de tokens gerada pelo oponente com a transcrição de referência conhecida.
- O framework seleciona as discrepâncias: Ele identifica as posições sem correspondência nas duas sequências. Essas posições determinam quais log-probabilidades de tokens entram no objetivo de treinamento.
- A otimização direcionada atualiza o jogador: Um objetivo de loss dupla atualiza o módulo de OCR treinável. Um componente compara as mudanças de pontuação relativas ao oponente para as discrepâncias de referência e geradas. O outro supervisiona diretamente os tokens de referência sem correspondência.
- O oponente é atualizado: Após a otimização local, o jogador atualizado se torna o próximo oponente ($\theta_{t+1}$), gerando novas leituras e novas máscaras de discrepância.
As leituras e as máscaras permanecem fixas dentro de cada rodada. Atualizá-las entre rodadas permite que o treinamento seguinte responda aos erros remanescentes do modelo atualizado, embora o procedimento não garanta que cada nova discrepância seja mais difícil ou mais sutil que a anterior.
Correção cirúrgica de erros: subsequências comuns mais longas e gradientes duplos
A principal contribuição técnica do SP-DocReader está em como ele seleciona e pontua as discrepâncias. Os autores introduzem dois mecanismos complementares: Reading Discrepancy Masking (RDM) e Focused Fidelity Loss (FFL).
Reading Discrepancy Masking (RDM)
O framework alinha diretamente, no nível dos tokens do modelo, a sequência de tokens de ground truth $y$ e a sequência sintética do oponente $\hat{y}$.
Ele calcula uma Longest Common Subsequence (LCS) usando programação dinâmica sobre pares de sufixos. Quando os tokens coincidem, os dois ponteiros avançam. Quando divergem, o algoritmo avança o ponteiro que preserva o maior comprimento de LCS do sufixo restante. Em caso de empate, avança o ponteiro sintético e mantém a posição do ground truth.
Esse alinhamento determinístico produz dois conjuntos de posições, cada um pertencente à sua própria sequência:
- $\mathcal{E}_y$: posições sem correspondência na sequência de ground truth.
- $\mathcal{E}_{\hat{y}}$: posições sem correspondência na leitura gerada.
Essas são discrepâncias em nível de token do modelo, não necessariamente caracteres ou palavras individuais, nem um diagnóstico único de cada erro de reconhecimento.
Fundamentalmente, o SP-DocReader não devolve os tokens sem correspondência como fragmentos de texto desconectados. Cada token selecionado é pontuado usando seu prefixo de condicionamento original completo. Um token de referência na posição 450 ainda usa todos os 449 tokens de referência anteriores; um token gerado usa seu próprio prefixo gerado. As máscaras selecionam termos diretos da loss, enquanto os tokens correspondentes continuam fazendo parte do cálculo contextual.
A Reading Discrepancy Loss ($\mathcal{L}_{RDM}$)
O framework calcula um objetivo contrastivo adaptado do SPIN, motivado pela lacuna de expectativas usada em Integral Probability Metrics. Para cada sequência, ele calcula a mudança de pontuação entre o jogador atual e o oponente congelado:
$$\Delta_t(z) = S_\theta(z, \mathcal{E}z) - S{\theta_t}(z, \mathcal{E}_z)$$
Aqui, $S_\theta$ soma as log-probabilidades dos tokens nas posições selecionadas, usando seus prefixos originais completos. A soma não é normalizada pelo comprimento. A Reading Discrepancy Loss aplica uma loss logística:
$$\mathcal{L}_{RDM}(\theta, \theta_t) = \mathbb{E}\left[\log\left(1 + \exp\left(\beta [\Delta_t(\hat{y}) - \Delta_t(y)]\right)\right)\right]$$
O objetivo favorece um aumento de pontuação maior em relação ao oponente para as discrepâncias do ground truth do que para as discrepâncias geradas. É uma comparação relativa, e não uma penalidade baseada apenas na probabilidade absoluta de um token incorreto.
Focused Fidelity Loss (FFL)
O objetivo contrastivo pode diminuir reduzindo a pontuação sintética sem aumentar a pontuação do ground truth. Suprimir uma leitura incorreta, portanto, não garante por si só um suporte mais forte à referência.
Para adicionar essa pressão direta, os autores introduzem a Focused Fidelity Loss ($\mathcal{L}_{FFL}$). A FFL aplica a log-verossimilhança negativa com teacher forcing nas posições de ground truth sem correspondência:
$$\mathcal{L}{FFL}(\theta) = - \mathbb{E}\left[\sum{k \in \mathcal{E}y} \log P\theta(y_k \mid y_{<k}, I, x)\right]$$
As posições correspondentes não recebem termos diretos de loss por token. Elas ainda podem influenciar as losses selecionadas por meio de seu papel no contexto de condicionamento, de modo que o mascaramento não significa que todos os gradientes internos ou toda a computação desapareçam nas posições correspondentes.
O objetivo final combina os dois termos:
$$\mathcal{L}{total} = \mathcal{L}{RDM} + \lambda \mathcal{L}_{FFL}$$
Os experimentos usam $\lambda = 0{,}5$ como peso padrão da supervisão direta.
Os autores derivam o gradiente combinado em relação aos parâmetros treináveis do OCR:
$$\nabla_\theta \mathcal{L}{pair} = -[\beta \sigma(-u) + \lambda]\nabla\theta s_y
- \beta \sigma(-u)\nabla_\theta s_{\hat{y}}$$
Aqui, $s_y$ e $s_{\hat{y}}$ são as pontuações mascaradas de referência e sintética, e $u=\beta[\Delta_t(y)-\Delta_t(\hat{y})]$. Sob descida de gradiente, os dois termos exercem pressão para elevar a pontuação da referência e reduzir a pontuação sintética, com a FFL adicionando peso à contribuição da referência. A derivação explica esses papéis; ela não prova redução de variância do gradiente nem economia computacional automática pelo mascaramento.
O ponto ideal de 0,5 bilhão de parâmetros
As escolhas de arquitetura importam tanto quanto as funções de loss. Em vez de atualizar o backbone de linguagem, os autores partem do leitor modular do DocVLM.
O pipeline divide as responsabilidades:
- Via visual congelada: O codificador visual processa páginas em resolução reduzida. O protocolo padrão renderiza PDFs a 72 DPI quando as dimensões físicas estão disponíveis; nas páginas apenas raster, o lado maior é limitado a 842 pixels, sem aumento de resolução.
- Backbone de linguagem congelado: Os pesos do modelo de linguagem permanecem inalterados, embora derivadas através de sua computação sejam necessárias para treinar o ramo de OCR.
- Motor de OCR externo: Um EasyOCR fixo fornece o texto reconhecido e as caixas delimitadoras a partir da mesma página em resolução reduzida.
- Módulo de OCR treinável: Um codificador derivado do DocFormerV2 recebe o texto e o layout do OCR, usando intercalação ao estilo LayTextLLM de embeddings de caixas projetados e embeddings de texto. Queries aprendíveis comprimem sua saída em 64 representações de consulta de OCR, que uma projeção mapeia para o VLM congelado.
O codificador de OCR, a camada de projeção e as queries aprendíveis somam aproximadamente 0,5 bilhão de parâmetros treináveis. Trata-se de um módulo de OCR acoplado, e não de um subconjunto de 0,5 bilhão de parâmetros do Qwen3-VL-4B.
Os autores o comparam com uma variante "sem OCR" que ajusta o modelo de linguagem sem o ramo de OCR, com 3,3 bilhões de parâmetros treináveis, e uma variante "full-parameter" que ajusta o modelo de linguagem e o módulo de OCR juntos, com 3,8 bilhões. Apesar do nome, o codificador visual e seu conector permanecem congelados nas três variantes.
Os resultados revelam o tradeoff:
- Leitura na distribuição (Vary-600K): O ajuste completo alcança 0,98% de CER, contra 1,11% do ajuste modular.
- Páginas acadêmicas zero-shot (DocBank): O ajuste modular alcança 9,05% de CER, contra 11,28% do ajuste completo.
- Documentos digitalizados zero-shot (IIT-CDIP): O ajuste modular chega a 14,42% de CER, contra 16,87% do ajuste completo.
- Perguntas e respostas sobre documentos (DocVQA): O ajuste modular obtém 84,89 de ANLS, contra 80,41 do ajuste completo.
As trajetórias mais longas reforçam esse contraste. Do SFT-2 até cinco rodadas de self-play, a média zero-shot de quatro tarefas do ajuste completo cai de 75,92 para 73,60, enquanto a do ajuste modular sobe de 75,89 para 79,81.
Esses resultados favorecem a adaptação modular nas tarefas zero-shot avaliadas. Eles não estabelecem que o ajuste completo aprendeu um estilo de renderização específico, nem que suas capacidades gerais de raciocínio se deterioraram. Congelar o backbone preserva seus pesos; o artigo mede o desempenho do sistema resultante em documentos, e não a preservação de todas as capacidades mais amplas.

O que os números mostram: taxas de erro pela metade e uma comparação de orçamento de páginas de quatro para um
Os autores avaliam dois backbones, InternVL-3.5-4B e Qwen3-VL-4B, usando 30.000 páginas de treinamento em inglês e 30.000 em chinês do Vary-600K nos experimentos principais. As avaliações padrão usam entradas em resolução reduzida, com regras de pré-processamento distintas para PDFs e imagens raster. Um estudo de resolução também testa outras configurações.
Principais benchmarks de transcrição e QA
A comparação principal abrange o modelo base em baixa resolução, o fine-tuning supervisionado de duas épocas (SFT-2) e três rodadas subsequentes de self-play (SP-DR-3):
| Backbone | Método | CER Vary-600K (%) ↓ | CER DocBank (%) ↓ | CER IIT-CDIP (%) ↓ | ANLS DocVQA ↑ | ANLS InfoVQA ↑ |
|---|---|---|---|---|---|---|
| InternVL-3.5-4B | Base (low-res) | 4.85 | 13.44 | 19.56 | 72.79 | 50.52 |
| SFT-2 | 2.12 | 11.60 | 17.83 | 73.01 | 48.15 | |
| SP-DR-3 | 1.17 | 9.73 | 15.35 | 74.27 | 48.06 | |
| Qwen3-VL-4B | Base (low-res) | 5.22 | 12.82 | 18.45 | 78.54 | 52.21 |
| SFT-2 | 2.40 | 10.95 | 16.71 | 81.22 | 55.34 | |
| SP-DR-3 | 1.11 | 9.05 | 14.42 | 84.89 | 58.94 |
No Qwen3-VL-4B, o self-play corta o CER na distribuição em mais da metade. O CER no DocBank cai 1,90 ponto percentual, o do IIT-CDIP cai 2,29 pontos, e o ANLS no DocVQA sobe 3,67 pontos. O InternVL também melhora nos três benchmarks de transcrição e no DocVQA, mas o InfographicVQA cai de 48,15 para 48,06.
Aqui, "zero-shot" significa nenhuma adaptação ao benchmark-alvo durante as etapas supervisionada e de self-play do artigo. Isso não estabelece que os componentes pré-treinados nunca encontraram esses conjuntos de dados ou documentos relacionados.
Benchmarks adicionais de parsing
As pontuações agregadas reportadas também melhoram além dos conjuntos de dados principais:
- OmniDocBench (Text Edit Distance, menor é melhor): o Qwen3-VL-4B melhora de 0,347 para 0,291; o InternVL melhora de 0,366 para 0,312.
- OCRBench v2 (maior é melhor): o Qwen3 sobe de 49,1 para 55,3; o InternVL sobe de 46,5 para 52,0. O artigo usa uma média igualmente ponderada entre idiomas das pontuações em inglês e chinês.
- CC-OCR (maior é melhor): o Qwen3 sobe de 65,4 para 71,0; o InternVL sobe de 62,7 para 67,9. O artigo reporta uma média igualmente ponderada entre as trilhas.
Essas são melhorias agregadas, e não evidência de que toda subtarefa subjacente melhora.
O dividendo de eficiência de dados
Na comparação de orçamento de treinamento, o Qwen3-VL-4B com SP-DocReader usa 30.000 páginas de referência distintas e atinge uma pontuação composta de 82,46. O SFT-2 com 120.000 páginas marca 80,73.
Essa pontuação composta dá o mesmo peso à similaridade de edição normalizada no Vary-600K, DocBank e IIT-CDIP, escalada de 0 a 100, e ao ANLS no DocVQA e no InfographicVQA. Ela inclui, portanto, tanto o desempenho na distribuição quanto o zero-shot.
Cada orçamento parte da mesma inicialização anterior à tarefa e completa sua própria etapa supervisionada. O modelo de orçamento menor não herda a adaptação do conjunto de dados maior. O resultado sustenta um desempenho melhor com um quarto das páginas de referência de treinamento nesta comparação, deixando computação e esforço de anotação como questões separadas.
Robustez à resolução
O artigo avalia checkpoints fixos do Qwen3-VL-4B em quatro configurações de imagem de origem. Os rótulos de DPI se aplicam a PDFs com dimensões físicas conhecidas; páginas apenas raster usam limites equivalentes no lado maior, sem aumento de resolução:
- 48 DPI: o SFT-2 alcança 3,41% de CER; o SP-DocReader alcança 1,74%, uma redução relativa de cerca de 49%.
- 72 DPI: o SFT-2 alcança 2,40%; o SP-DocReader alcança 1,11%, uma redução de cerca de 54%.
- 96 DPI: o SFT-2 alcança 1,93%; o SP-DocReader alcança 0,92%, uma redução de cerca de 52%.
- 150 DPI: o SFT-2 alcança 1,52%; o SP-DocReader alcança 0,71%, uma redução de cerca de 53%.
A redução relativa se mantém em uma faixa estreita nessas configurações. Tanto o ramo visual quanto o EasyOCR recebem a imagem de origem alterada, então isso mede a resposta do sistema combinado à resolução, e não isola o codificador visual.
Quais componentes realmente importam?
O estudo de componentes no Qwen3-VL-4B separa as contribuições das losses, mantendo as máscaras de discrepância em todas as variantes:
- Baseline (SFT-2): 2,40% de CER no Vary-600K e 81,22 de ANLS no DocVQA.
- Sem a loss contrastiva RDM: a FFL sozinha alcança 1,88% de CER e 83,47 de ANLS. Essa linha ainda usa posições de referência selecionadas pela LCS.
- Sem a FFL: a loss contrastiva alcança 1,57% de CER e 82,96 de ANLS. Ela ainda fornece um incentivo relativo para elevar as pontuações da referência, mas carece da supervisão direta adicional da FFL.
- SP-DocReader completo: o objetivo combinado obtém o melhor resultado nas cinco colunas reportadas, incluindo 1,11% de CER, 84,89 de ANLS no DocVQA e 58,94 de ANLS no InfographicVQA.
A atualização também parece útil na comparação plotada. Um checkpoint de segunda rodada atualizado alcança uma média próxima de 90,3 após duas épocas locais, superando a média do ramo de leituras fixas, próxima de 89,8 após cinco épocas locais. Essa média combina o NED do Vary-600K, o NED do DocBank e o ANLS do DocVQA. A atualização altera o oponente, as leituras geradas e as máscaras ao mesmo tempo; o gráfico não isola seus efeitos individuais nem estabelece custo total de treinamento equivalente.
Por que isso importa para a engenharia de documentos no mundo real
Para equipes de engenharia que constroem pipelines de processamento de documentos, o artigo oferece três direções práticas a investigar:
-
Considere congelar o backbone de linguagem durante a adaptação do OCR.
O ajuste modular tem melhor desempenho nas tarefas zero-shot avaliadas e atualiza menos parâmetros. No SP-DR-3, seu custo cumulativo de adaptação reportado é 0,33 vez o da execução completa do SFT-2 com ajuste conjunto, contra 1,58 vez para o ajuste conjunto no SP-DR-3. A contabilidade inclui inicialização supervisionada, pré-processamento, geração, alinhamento, pontuação e otimização. Isso respalda a configuração modular testada, e não uma regra universal contra o ajuste do modelo de linguagem.
-
Teste o treinamento focado em discrepâncias antes de presumir que mais páginas são necessárias.
O resultado de 30.000 contra 120.000 páginas torna a adaptação focada em erros digna de investigação. Ele não demonstra ganhos equivalentes para faturas, manifestos de carga ou qualquer outro domínio de produção específico. Aplicar a ideia exige transcrições de referência e avaliação nos documentos que o sistema realmente encontrará.
-
Meça o overhead de inferência do leitor completo.
O artigo reporta cerca de 10% de overhead de inferência de ponta a ponta em relação ao backbone sem OCR, medido com batch size 1 em uma NVIDIA H20. O protocolo inclui processamento da página, OCR externo, codificação e geração após o carregamento do modelo. É um resultado reportado útil, mas saber se esse overhead é aceitável depende da implantação. Ele não deve ser tratado como garantia de latência independente de hardware.
Onde a abordagem encontra seus limites
Apesar dos fortes resultados em benchmarks, o SP-DocReader tem limites claros:
- Escopo de página única: O estudo foca na transcrição de uma única página, sem demonstrar leitura de várias páginas ou extração estruturada. Ele não estabelece desempenho em tabelas que cruzam páginas ou em dependências em nível de documento.
- Orçamentos de saída fixos: A geração e a avaliação do self-play param no EOS ou em 1.024 novos tokens, sem continuação ou costura. Esse orçamento pode limitar a cobertura de páginas mais longas. O protocolo pontua transcrições truncadas contra referências completas; atingir o limite, por si só, não prova uma omissão, e emitir EOS não garante completude.
- Dependência de OCR externo: O leitor modular usa texto e caixas do EasyOCR junto com características visuais. O artigo não estabelece separadamente com que confiabilidade ele recupera conteúdo totalmente perdido pelo motor externo.
- Evidência limitada de idiomas e modelos: O treinamento usa páginas em inglês e chinês, e os experimentos cobrem duas famílias de backbone. Os resultados não estabelecem generalização para outros idiomas ou arquiteturas.
- Erros de reconhecimento remanescentes: Os exemplos qualitativos mostram melhorias, não transcrição perfeita. No exemplo constitucional, o SP-DocReader corrige o ano de revogação, mas ainda lê a data da passagem como 16 de dezembro em vez do 18 de dezembro da referência exibida. Outros exemplos mantêm erros de ortografia e de símbolos.
Dentro desses limites, o SP-DocReader mostra que o self-play focado em discrepâncias pode melhorar um leitor de documentos modular além de seu ponto de partida supervisionado. A evidência mais forte é concreta: menor erro de transcrição nos três principais conjuntos de dados de leitura em ambos os backbones, melhores pontuações na maioria das comparações de perguntas e respostas avaliadas e uma comparação favorável de orçamento de páginas de referência. O backbone permanece congelado, enquanto o módulo de OCR aprende com as divergências que restam.