SP-DocReader: 差分認識型セルフプレイでVary-600KのOCR誤り率を半減
元論文: SP-DocReader: Difference-Aware Self-Play for Precise Document OCR — Wenjie Liao, Xiaohui Song, Liangjie Zhao, Haonan Lu
パラメータを増やすと、かえって文書読み取りが悪化する
40億パラメータの視覚言語モデルを数万ページの文書で微調整すれば、書き起こし精度が上がりそうに思えます。SP-DocReaderの実験では、言語モデルとOCRモジュールを同時に更新すると、分布内の文字誤り率は確かに下がりました。しかし未知の文書ベンチマークでは、より小さな適応手法に及びませんでした。スキャン文書を含むIIT-CDIPでは、言語モデルとOCRの同時チューニングによる文字誤り率は16.87%でした。一方、同じページでバックボーンを凍結したまま訓練した5億パラメータのOCRモジュールは14.42%でした。どちらの構成でも、視覚エンコーダとそのコネクタは凍結されたままです。
この直感に反する差は、OPPO(Guangdong OPPO Mobile Telecommunications)とAdelaide Universityに所属するWenjie Liao、Xiaohui Song、Liangjie Zhao、Haonan Luによって2026年10月8日に公開されたOCR研究論文SP-DocReaderの知見の一つです。文書の書き起こしは本質的に容赦のないタスクです。ページについて短い答えを返すことと、小さな文字や数字を含めてテキストを再現することは別の仕事だからです。論文には失敗例が示されています。憲法修正条項の廃止年を1933ではなく1935と読む、「State legislatures」を「State legislators」にしてしまう、数式dim S = dim A + |L|をdim S = dim A + ILと書き起こす、といったものです。
SP-DocReaderは、こうした残存誤りを正面から狙います。このフレームワークは二つの考え方を組み合わせています。基盤となる視覚言語モデルを凍結したままにするモジュール型のOCRブランチと、生成された書き起こしと正解の書き起こしの差異から損失をかける位置を選ぶ、反復的なセルフプレイ訓練です。
結果は顕著です。Qwen3-VL-4Bでは、差分認識型セルフプレイを3ラウンド行うことで、Vary-600K検証セットの文字誤り率が2.40%から1.11%に下がりました。2エポックの教師あり微調整と比べて、約54%の相対的な誤り削減です。別の訓練予算の比較では、3万ページの正解データを使ったセルフプレイが、12万ページを使った教師あり微調整を、5タスクの総合スコアで上回りました。これは訓練用の正解ページ数が4分の1ということであり、アノテーションコストや総計算量を測ったものではありません。

標準的な教師あり微調整は注意を分散させてしまう
SP-DocReaderの動機を理解するために、標準的な教師あり微調整(SFT)が文書リーダーをどう訓練するかを見てみましょう。
標準的な自己回帰型の微調整では、モデルは文書画像とプロンプトを受け取り、訓練パイプラインは目標テキスト全体にわたってteacher forcingによるクロスエントロピー損失を計算します。すべての目標トークンに教師信号が与えられます。正解が800モデルトークンなら、損失の対象は800位置すべてです。ただし、各位置の損失や勾配への寄与が等しいとは限りません。
すでにページの大部分を正しく書き起こせるリーダーでも、残りの少数の誤りには苦戦することがあります。全系列を対象とするSFTは、生成された読み取り結果を使ってそれらの位置を特定することはしません。SP-DocReaderが問うのは、残っている不一致を明示的に選び出すことで、教師あり段階の後の適応を改善できるかどうかです。
teacher forcingは生成時の挙動とも異なります。書き起こしの際、モデルは自身が直前に出力したトークンを条件として次のトークンを生成します。一方、教師あり訓練では、正解のプレフィックスを与えた上で次の正解トークンを予測します。SP-DocReaderは、モデルが生成した読み取り結果を訓練に取り込みつつ、正解トークンのスコア計算には完全な正解プレフィックスを使い続けます。
報告されている教師あり訓練の推移が、この変更の動機になっています。Qwen3-VL-4Bでは、Vary-600KのCERは1エポックのSFT後の2.50%から2エポック後の2.40%へ改善し、3エポック後には2.66%に悪化します。InternVLでもこの指標で同様の逆転が見られます。これらの結果は別の目的関数を検討する根拠にはなりますが、教師あり微調整が2エポックを超えると一律に効かなくなることを示すものではありません。
別個の報酬モデルなしでセルフプレイを借りる
SP-DocReaderは、SPINが行う反復的な手法、すなわち正解の応答と以前のモデルチェックポイントの出力をペアにする方式を土台にしています。アクティブなモデルはそのペアから学習し、次のラウンドでは対戦相手になります。
文書の書き起こしには、オープンエンドなチャットにはない構造上の利点があります。訓練ページに正解の書き起こしがあることです。このフレームワークは、別個の報酬モデルを訓練したり、主観的な選好ラベルを集めたりすることなく、正解との不一致箇所を特定できます。
SP-DocReaderは、このループをページの書き起こし向けに次のように適応させています。
- 対戦相手がドラフトを生成する: ラウンド
tで、フレームワークは現在のチェックポイントを凍結し、対戦相手($\theta_t$)とします。対戦相手はページごとに1つの読み取り結果を貪欲法で生成し、EOSまたはプロンプトを除く新規1,024トークンで停止します。 - ドラフトを比較する: 対戦相手が生成したトークン列を、既知の正解の書き起こしと整列させます。
- 不一致箇所を選ぶ: 両方の系列で一致しない位置を特定します。これらの位置が、訓練目的関数に入るトークンの対数確率を決定します。
- 的を絞った最適化でプレイヤーを更新する: 二重損失の目的関数が、訓練可能なOCRモジュールを更新します。一方の項は、正解側と生成側の不一致箇所について、対戦相手に対するスコア変化を比較します。もう一方の項は、一致しない正解トークンを直接教師します。
- 対戦相手を更新する: 局所的な最適化の後、更新されたプレイヤーが次の対戦相手($\theta_{t+1}$)となり、新しい読み取り結果と不一致マスクを生成します。
読み取り結果とマスクは各ラウンド内では固定されます。ラウンドごとに更新することで、後続の訓練は更新後のモデルに残る誤りに対応できます。ただし、新たに現れる不一致が毎回より難しい、あるいはより微妙であることまでは、この手順は保証しません。
精密な誤り修正:最長共通部分列と二重の勾配
SP-DocReaderの技術的な核心は、不一致をどう選び、どうスコアリングするかにあります。著者らは相補的な二つの仕組み、Reading Discrepancy Masking(RDM)とFocused Fidelity Loss(FFL)を導入しています。
Reading Discrepancy Masking(RDM)
このフレームワークは、正解のトークン列 $y$ と対戦相手の合成列 $\hat{y}$ を、モデルトークンの水準で直接整列させます。
整列には、接尾辞ペアに対する動的計画法で最長共通部分列(LCS)を計算します。トークンが一致すれば両方のポインタが進みます。不一致のときは、残りの接尾辞のLCS長がより大きく保たれる側のポインタを進めます。同点の場合は、正解側の位置を保持したまま合成側のポインタを進めます。
この決定的な整列により、それぞれの系列に属する二つの位置集合が得られます。
- $\mathcal{E}_y$: 正解系列で一致しない位置。
- $\mathcal{E}_{\hat{y}}$: 生成された読み取り結果で一致しない位置。
これらはモデルトークン単位の不一致であり、必ずしも個々の文字や単語に対応するわけではなく、各認識誤りの一意な診断でもありません。
重要なのは、SP-DocReaderが一致しなかったトークンをばらばらのテキスト断片として戻すわけではない点です。選ばれた各トークンは、元の完全な条件付きプレフィックスを使ってスコアリングされます。位置450の正解トークンは、それ以前の449個の正解トークンをすべて使い、生成トークンは自身の生成プレフィックスを使います。マスクが選ぶのは直接の損失項であり、一致したトークンは文脈の計算に残ります。
Reading Discrepancy Loss($\mathcal{L}_{RDM}$)
このフレームワークは、SPINから適応した対照的な目的関数を計算します。その動機は、Integral Probability Metricsで用いられる期待値の差にあります。各系列について、現在のプレイヤーと凍結された対戦相手とのスコア変化を次のように計算します。
$$\Delta_t(z) = S_\theta(z, \mathcal{E}z) - S{\theta_t}(z, \mathcal{E}_z)$$
ここで $S_\theta$ は、選択された位置にわたるトークン対数確率を、元の完全なプレフィックスを用いて合計したものです。長さによる正規化は行いません。Reading Discrepancy Lossはロジスティック損失を適用します。
$$\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]$$
この目的関数は、正解側の不一致箇所について、生成側の不一致箇所よりも対戦相手に対するスコア上昇が大きくなることを促します。これは相対的な比較であり、誤ったトークンの絶対確率だけに基づくペナルティではありません。
Focused Fidelity Loss(FFL)
対照的な目的関数は、正解側のスコアを上げなくても、合成側のスコアを下げるだけで小さくなり得ます。つまり、誤った読み取りを抑え込むだけでは、それ自体で正解への支持が強まることは保証されません。
この直接的な圧力を加えるため、著者らはFocused Fidelity Loss($\mathcal{L}_{FFL}$)を導入しています。FFLは、一致しない正解位置にteacher forcingによる負の対数尤度を適用します。
$$\mathcal{L}{FFL}(\theta) = - \mathbb{E}\left[\sum{k \in \mathcal{E}y} \log P\theta(y_k \mid y_{<k}, I, x)\right]$$
一致した位置には、直接のトークン損失項は与えられません。ただし、条件付けの文脈としての役割を通じて、選択された損失に影響を及ぼすことはあります。したがって、マスクをかけても、一致した位置の内部勾配や計算がすべて消えるわけではありません。
最終的な目的関数は両方の項を組み合わせます。
$$\mathcal{L}{total} = \mathcal{L}{RDM} + \lambda \mathcal{L}_{FFL}$$
実験では、直接教師の重みのデフォルトとして $\lambda = 0.5$ を使っています。
著者らは、訓練可能なOCRパラメータに関する組み合わせ勾配を次のように導出しています。
$$\nabla_\theta \mathcal{L}{pair} = -[\beta \sigma(-u) + \lambda]\nabla\theta s_y
- \beta \sigma(-u)\nabla_\theta s_{\hat{y}}$$
ここで $s_y$ と $s_{\hat{y}}$ はマスク後の正解スコアと合成スコアで、$u=\beta[\Delta_t(y)-\Delta_t(\hat{y})]$ です。勾配降下法のもとでは、二つの項が正解スコアを上げ、合成スコアを下げる圧力をそれぞれ与え、FFLは正解側の寄与に重みを加えます。この導出が説明するのはこれらの役割であり、勾配の分散が減ることや、マスクによって計算量が自動的に節約されることを証明するものではありません。
5億パラメータというスイートスポット
損失関数と並んで、モデルのアーキテクチャ選択も重要です。著者らは言語バックボーンを更新する代わりに、DocVLMのモジュール型リーダーを土台にしています。
パイプラインは役割を次のように分けています。
- 凍結された視覚経路: 視覚エンコーダは低解像度化したページを処理します。標準プロトコルでは、物理的なサイズが分かるPDFは72 DPIでレンダリングし、ラスター画像のみのページは、アップサンプリングせずに長辺を842ピクセルに制限します。
- 凍結された言語バックボーン: 言語モデルの重みは変更されません。ただし、OCRブランチを訓練するには、その計算を通じた微分が必要です。
- 外部OCRエンジン: 固定されたEasyOCRが、同じ低解像度ページから認識テキストとバウンディングボックスを供給します。
- 訓練可能なOCRモジュール: DocFormerV2由来のエンコーダが、OCRテキストとレイアウトを入力として受け取ります。LayTextLLM方式で、射影したボックス埋め込みとテキスト埋め込みを交互に配置します。学習可能なクエリがその出力を64個のOCRクエリ表現に圧縮し、射影層が凍結されたVLMへ写像します。
OCRエンコーダ、射影層、学習可能なクエリを合わせた訓練可能パラメータは約5億です。これはQwen3-VL-4Bの一部の5億パラメータではなく、外付けされたOCRモジュールです。
著者らは、これを二つの変種と比較しています。一つは、OCRブランチなしで言語モデルを調整する「OCRフリー」変種(訓練可能パラメータ33億)、もう一つは、言語モデルとOCRモジュールを同時に調整する「フルパラメータ」変種(同38億)です。この呼び名にもかかわらず、視覚エンコーダとそのコネクタは3つの変種すべてで凍結されています。
結果はトレードオフを示しています。
- 分布内の読み取り(Vary-600K): フルチューニングは0.98%のCER、モジュール型チューニングは1.11%です。
- ゼロショットの学術論文ページ(DocBank): モジュール型チューニングは9.05%のCER、フルチューニングは11.28%です。
- ゼロショットのスキャン文書(IIT-CDIP): モジュール型チューニングは14.42%のCER、フルチューニングは16.87%です。
- 文書質問応答(DocVQA): モジュール型チューニングは84.89 ANLS、フルチューニングは80.41です。
より長い推移を見ると、この対比はさらに明確になります。SFT-2から5ラウンドのセルフプレイにかけて、フルチューニングの4タスクのゼロショット平均は75.92から73.60に低下し、モジュール型チューニングでは75.89から79.81に上昇します。
これらの結果は、評価したゼロショットタスクではモジュール型適応が有利であることを示しています。ただし、フルチューニングが特定のレンダリングスタイルに適応してしまったことや、汎用的な推論能力が劣化したことまでは立証していません。バックボーンを凍結すれば重みは保たれますが、論文が測っているのは結果として得られるシステムの文書性能であり、より広範な能力がすべて保たれているかどうかではありません。

数字が示すもの:誤り率の半減と、4倍のページ予算差
著者らは、InternVL-3.5-4BとQwen3-VL-4Bの2つのバックボーンを評価しています。主な実験では、Vary-600Kから英語3万ページ、中国語3万ページを訓練に使っています。標準的な評価は低解像度の入力で行い、PDFとラスター画像には別々の前処理規則を適用します。解像度に関する別の検討では、他の設定も試しています。
主要な書き起こし・QAベンチマーク
主な比較は、低解像度のベースモデル、2エポックの教師あり微調整(SFT-2)、およびその後の3ラウンドのセルフプレイ(SP-DR-3)を対象としています。
| バックボーン | 手法 | Vary-600K CER (%) ↓ | DocBank CER (%) ↓ | IIT-CDIP CER (%) ↓ | DocVQA ANLS ↑ | InfoVQA ANLS ↑ |
|---|---|---|---|---|---|---|
| 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 |
Qwen3-VL-4Bでは、セルフプレイによって分布内のCERが半分以上低下します。DocBankのCERは1.90ポイント、IIT-CDIPは2.29ポイント下がり、DocVQAのANLSは3.67ポイント上昇します。InternVLも3つの書き起こしベンチマークとDocVQAで改善しますが、InfographicVQAは48.15から48.06へとわずかに下がります。
ここでの「ゼロショット」とは、論文の教師あり段階とセルフプレイ段階で、対象ベンチマークへの適応を行っていないという意味です。事前学習済みコンポーネントが、それらのデータセットや関連する文書に一度も触れていないことを示すものではありません。
追加のパース系ベンチマーク
報告されている集計スコアも、主要データセット以外で改善しています。
- OmniDocBench(テキスト編集距離、低いほど良い): Qwen3-VL-4Bは0.347から0.291に、InternVLは0.366から0.312に改善します。
- OCRBench v2(高いほど良い): Qwen3は49.1から55.3に、InternVLは46.5から52.0に上昇します。論文では、英語と中国語のスコアを等しい重みで平均した値を用いています。
- CC-OCR(高いほど良い): Qwen3は65.4から71.0に、InternVLは62.7から67.9に上昇します。論文では、各トラックを等しい重みで平均した値を報告しています。
これらは集計値での改善であり、すべての下位タスクが改善することの証拠ではありません。
データ効率の配当
訓練予算の比較では、SP-DocReaderを使ったQwen3-VL-4Bは3万ページの異なる正解ページを使い、総合スコア82.46を達成します。12万ページを使ったSFT-2は80.73です。
この総合スコアは、Vary-600K、DocBank、IIT-CDIPの正規化編集類似度を0〜100にスケーリングしたものと、DocVQAおよびInfographicVQAのANLSに等しい重みを与えています。したがって、分布内とゼロショットの両方の性能を含みます。
各予算は同じタスク前の初期状態から出発し、それぞれ独自の教師あり段階を完了します。小さい予算のモデルが、より大きなデータセットでの適応を引き継ぐことはありません。この結果は、この比較において訓練用の正解ページ数が4分の1でもより良い性能が得られることを裏付けますが、計算量とアノテーション作業は別の問題として残ります。
解像度に対する頑健性
論文は、固定されたQwen3-VL-4Bのチェックポイントを4つの元画像設定で評価しています。DPIの表記は物理的なサイズが分かるPDFに適用され、ラスター画像のみのページには、アップサンプリングなしで対応する長辺の上限が使われます。
- 48 DPI: SFT-2は3.41%のCER、SP-DocReaderは1.74%で、相対的に約49%の削減です。
- 72 DPI: SFT-2は2.40%、SP-DocReaderは1.11%で、約54%の削減です。
- 96 DPI: SFT-2は1.93%、SP-DocReaderは0.92%で、約52%の削減です。
- 150 DPI: SFT-2は1.52%、SP-DocReaderは0.71%で、約53%の削減です。
相対的な削減率は、これらの設定にわたって狭い範囲に収まっています。視覚ブランチとEasyOCRの両方が変更後の元画像を受け取るため、これは視覚エンコーダだけを切り出したものではなく、システム全体が解像度にどう反応するかを測ったものです。
どのコンポーネントが実際に効いているのか
Qwen3-VL-4Bのコンポーネント分析では、すべての変種で不一致マスクを維持したまま、損失の寄与を切り分けています。
- ベースライン(SFT-2): Vary-600K CERは2.40%、DocVQA ANLSは81.22です。
- 対照的なRDM損失なし: FFLのみでCERは1.88%、ANLSは83.47です。この行でも、LCSで選ばれた正解位置は使われています。
- FFLなし: 対照的な損失のみでCERは1.57%、ANLSは82.96です。正解スコアを上げる相対的なインセンティブは残りますが、FFLによる追加の直接教師が欠けています。
- 完全版SP-DocReader: 組み合わせた目的関数が、報告されている5列すべてで最良の結果を達成し、CERは1.11%、DocVQA ANLSは84.89、InfographicVQA ANLSは58.94です。
更新(リフレッシュ)の有効性も、プロットされた比較から見て取れます。更新された第2ラウンドのチェックポイントは、2回の局所エポックの後に平均約90.3に達し、5回の局所エポックを経た固定読み取りブランチの平均約89.8を上回ります。この平均はVary-600K NED、DocBank NED、DocVQA ANLSを合わせたものです。更新では、対戦相手、生成された読み取り結果、マスクが同時に変わります。プロットはそれぞれの個別の効果を切り分けるものではなく、総訓練コストが等しいことを示すものでもありません。
実務の文書エンジニアリングにとっての意味
文書処理パイプラインを構築するエンジニアリングチームにとって、この論文は検討に値する実践的な方向性を3つ示しています。
-
OCR適応の際に言語バックボーンを凍結することを検討する。
モジュール型チューニングは、更新するパラメータが少ないにもかかわらず、評価したゼロショットタスクでより良い性能を示します。SP-DR-3の時点での累積適応コストは、報告によれば、同時チューニングのSFT-2の全実行を1としたとき0.33倍で、同時チューニングのSP-DR-3では1.58倍です。この計算には、教師あり初期化、前処理、生成、整列、スコアリング、最適化が含まれます。これが裏付けるのは検証されたモジュール型構成であり、言語モデルの調整を避けるべきだという普遍的な規則ではありません。日本語の読者にとっては、この評価が英語と中国語のページに限られており、漢字かな交じりの文章や縦書きレイアウトは対象外である点にも注意が必要です。
-
ページ数を増やす必要があると決めつける前に、差分に注目した訓練を試す。
3万ページ対12万ページという結果は、誤りに焦点を当てた適応を試す価値があることを示します。ただし、請求書、船荷明細、その他の特定の本番ドメインで同等の効果が得られることまでは示していません。このアイデアを適用するには、正解の書き起こしと、システムが実際に扱う文書での評価が必要です。
-
リーダー全体の推論オーバーヘッドを測定する。
論文は、OCRなしのバックボーンと比べて、エンドツーエンドで約10%の推論オーバーヘッドを報告しています。測定はNVIDIA H20上、バッチサイズ1で行われています。プロトコルには、モデルのロード後のページ処理、外部OCR、エンコード、生成が含まれます。有用な報告結果ですが、そのオーバーヘッドが許容できるかどうかはデプロイ環境次第です。ハードウェアに依存しないレイテンシの保証として扱うべきではありません。
このアプローチの限界
ベンチマークでの強い結果にもかかわらず、SP-DocReaderには明確な制約があります。
- 単一ページに限定: 研究が扱うのは単一ページの書き起こしであり、複数ページの読み取りや構造化抽出を実証したものではありません。ページをまたぐ表や文書レベルの依存関係での性能は示されていません。
- 固定された出力予算: セルフプレイの生成と評価は、EOSまたは新規1,024トークンで停止し、継続や接合は行いません。この予算が、より長いページのカバー範囲を制限する可能性があります。プロトコルは上限で打ち切られた書き起こしを完全な正解と比較してスコアリングします。上限に達したことだけでは欠落の証拠にはならず、EOSを出力したことが完全性を保証するわけでもありません。
- 外部OCRへの依存: モジュール型リーダーは、視覚特徴と並んでEasyOCRのテキストとボックスを使います。外部エンジンが完全に取りこぼした内容をどれだけ確実に回復できるかは、論文では個別に確認されていません。
- 言語とモデルに関する証拠の限定: 訓練には英語と中国語のページを使い、実験は2つのバックボーンファミリーを対象としています。他の言語やアーキテクチャへの汎化は、結果から立証されていません。
- 残存する認識誤り: 定性的な例が示すのは改善であり、完璧な書き起こしではありません。憲法の例では、SP-DocReaderは廃止年を修正しますが、条文の日付は、示された正解の12月18日ではなく12月16日と読んだままです。他の例にも、綴りや記号の誤りが残っています。
これらの限界の中で、SP-DocReaderは、差分に注目したセルフプレイによって、モジュール型の文書リーダーを教師あり学習の出発点以上に改善できることを示しています。最も強い証拠は具体的です。両方のバックボーンで3つの主要な読み取りデータセットにわたって書き起こし誤りが下がったこと、評価した質問応答の比較の大半でスコアが向上したこと、そして正解ページ数の予算比較で有利な結果が得られたことです。バックボーンは凍結されたまま、OCRモジュールは残された不一致から学習します。