ふくふくHukuhuku LLC
EP.99Toolbox 12分公開:

Unlimited-OCR-2とは?長いPDFを読む仕組みと、日本語納品書を試して分かったこと

BaiduのUnlimited-OCR-2を日本語の架空納品書で試用。SR-SWAによる長文書解析、論文の評価条件、Markdownへの後処理、GPUとMacの導入条件を整理し、ページをまたぐ表の実務評価手順を紹介します。

#OCR#ローカルLLM#文書処理#Baidu
執筆 / 監修
松尾 亮合同会社ふくふく 代表社員

データ基盤・データパイプライン構築 / BI / 生成 AI 活用支援を専門とするエンジニア (28 年)。 本記事は AI 利用ポリシーに基づき、生成 AI の補助で執筆 → 人間が監修・編集して公開しています。

プロフィール詳細
シェア

スキャンした仕様書の表が次のページへ続いている。OCRで文字にできても、表のつながりや見出しの階層を直す作業が残る。Baiduが2026年10月27日に公開した Unlimited-OCR-2 は、こうした長い文書の構造を読み取るための画像・言語モデルです。日本語の架空納品書1枚を公開デモで試し、読み取り結果と後処理まで確認しました。

ATTENTION:日本語1枚の試用と、長文書の品質保証は別です

今回読めたのは、白地・横書きの簡単な日本語教材1枚です。縦書き、手書き、複雑な表、数百ページの日本語文書は未検証です。また、公開デモへのアップロードは外部送信になります。社内にモデルを配置するローカル運用とは区別してください。Mac上でのモデル推論も試していません。

公開日は公式モデルカードのRelease欄で確認しました。発表時刻とタイムゾーンは記載されていないため、「何時間前の発表」とは断定しません。初代は6月22日、今回の2は10月27日の更新です。モデル保存先の作成日時や、Redditに投稿された日時をリリース日時とは扱っていません。確認日は2026年10月28日(日本時間)です。

何が新しい? ページをまたぐ文書を読み続ける工夫

OCRは、画像の中の文字を機械で扱える文字データへ変える技術です。Unlimited-OCR-2は文字だけでなく、見出し、表、図の位置や読む順番を扱う文書解析モデルです。画像と文章の両方を扱うモデルをVLMと呼びます。一般的なチャット用LLMをそのまま置き換える製品ではありません。

技術論文の3.1〜3.3節によると、初代は直前の文章への参照を絞っても、それ以前のページ画像への参照量が増える課題を残していました。2では SR-SWA(Sparse Reference Sliding Window Attention) を導入し、直近の文章に加えて、対象ページの画像から必要な部分を選んで参照します。画像の参照先を絞り、生成の負担を抑える設計です。

本を写すとき、今見ているページの必要な箇所に目を向けながら、直前に書いた文章も参照する、と考えると近いでしょう。任意の遠いページを自由に検索するという説明ではありません。ページ間の継続には、後述する分割処理の境界ページと末尾の文章情報を再利用する仕組みも関係します。どの情報を残すかによって読み違いは起こり得ます。

見たい点初代からの差分・今回の注意点
長い入力論文では初代に40ページの入力制限があり、2は百ページ級の評価へ進んだと説明
ページをまたぐ構造表や文章の続きを含め、文書全体として解析する設計
参照する情報文章の直近部分だけでなく、画像側の参照も選択して負担を抑える
実際の運用ページ単位の分割処理と境界付近の情報再利用を組み合わせる。時間・容量・出力設定が無制限になるわけではない

「無制限」は、メモリーも処理時間も不要という意味ではない

モデル名のUnlimitedは、長さを伸ばしやすくする設計を表したものです。文書全体の入力画像、モデル本体、出力テキストなどは依然として資源を使います。1トークンを生成する際の負担を抑えても、ページが増えれば読む量と出力する量は増えます。

公式のSGLang設定例は10ページ単位の処理窓や、1ページ20,000トークンの出力上限を設定しています。トークンは、モデルが扱う文字列の小さな単位です。公式自身も、窓を小さくすると最大メモリー使用量を抑えられる一方、窓の境界をまたぐ表や文章の結合が難しくなると注意しています。読み取り速度だけでなく、境界で情報を落とさないかを調べる必要があります。

公開デモにも別の制限があります。確認したデモの実装では、1回の文書解析は最大8ページです。研究上の百ページ級評価と、ブラウザーから試せるページ数を混同しないでください。

論文の数字を読む:得意なのは何で、どこまで比較したのか

以下は編集部の比較実測ではなく、提供元の論文、表1〜4に載る結果です。総合スコアは複数の評価項目を集約した値で、「文字を何%正しく読めたか」と同じではありません。

評価論文に載る結果読み取るときの条件
MPDocBench(最大30ページ)Unlimited-OCR-2のOverallは84.59ページをまたぐ文章・表などを含む総合評価
MarathonDocBenchOverallは77.06提供元が新たに作った100文書、103〜300ページのベンチマーク
OmniDocBench v1.6(単ページ)Overallは94.02。初代は93.92同じ表にはOvisOCR2の96.47、TeleOCRの96.91もあり、単ページで一律に最高とは言えない
KVキャッシュの最大量通常デコード47.00GB → 長文書向けデコード1.77GB同一系列の推論方式比較、同時処理数B=1。モデル全体に必要なGPUメモリーではない

KVキャッシュは、文章を生成するときに再利用する中間情報です。「1.77GBのGPUで動く」と読み替えるのは誤りです。また、長文書の比較表には汎用VLMが多く、あらゆるOCR製品を比較した表ではありません。日本語だけの精度や、国内の帳票を対象とした成績は今回確認した資料には示されていません。

Redditの紹介スレッドでも、専用OCRとの比較条件やLightOnOCRとの違いに関心が寄せられています。利用者の感想は評価環境が統一されていないため、そのまま製品間の勝敗の根拠にはできません。

日本語の架空納品書を1枚試した結果

公式のHugging Face公開デモへ、編集部で作った1200×900ピクセルのPNG画像を送信しました。白背景、横書き、活字6行で、写真の傾きや複雑な罫線のない教材です。parse_pageをbaseモード、追加指示なし、max_page_tokens=2000で1回実行しました。これはクラウド上のデモ試用であり、このMacでモデルを動かした結果ではありません。

試用に使った架空の日本語納品書。伝票番号TEST-20261028、ノート12冊、単価150円、小計1800円を記載。
実際にデモへ送った教材。実在の取引情報は含んでいません。
確認項目教材の値返された文字列
伝票番号TEST-20261028TEST-20261028
品目・数量ノート・12ノート・12
単価150円150円
小計1,800円1,800円
括弧・空白全角括弧と行内の複数空白一部が半角括弧・単一空白へ変化

主要な値は一致しましたが、元の文字列を空白や記号まで完全保存したわけではありません。デモのレスポンスに含まれるelapsedは10.9秒でした。これはデモが報告した内部処理時間で、通信・待ち行列を含む実用上の待ち時間や、他の端末での速度保証ではありません。今回は1回だけの確認なので、成功率や平均速度も算出していません。

再確認用に入力画像、生の出力、後処理した文章を置きました。画像と出力を並べると、数字の一致と、書式が変わった箇所を確認できます。

出力は、そのままMarkdownとは限らない

今回、デモのmarkdownフィールドにも <BLOCK> などのタグが残っていました。公式の後処理ガイドにも、モデルが直接Markdownを出すわけではなく、ページ・ブロック・座標などの情報を含む文字列を出すと明記されています。アプリ側の欄の名前だけで、読みやすい文書が完成したと判断しないことが大切です。

今回の生出力から2番目の要素を抜粋。BLOCKは要素、角括弧は位置、FORKの後ろが内容です。ページ先頭には別途PAGEが付きます。
Text
<BLOCK>text[48, 186, 436, 231]<FORK>伝票番号: TEST-20261028

編集部では公式の変換スクリプトを確認し、取得した出力に適用しました。標準Pythonだけで動く後処理で、今回はタグを除いた文章に変換でき、伝票番号・数量・金額が保たれました。これは文字認識を再実行した実験ではありません。誤って認識した文字をこの工程だけで直せるわけでもありません。

公式リポジトリ内で実行。rawに生出力の.txtファイルを置くと、convertedへ.mdファイルを生成します。出力専用の空フォルダーを用意してください。
Bash
python3 utils/process_unlimitedOCR2.py --infer-dir raw --out-dir converted

スクリプトはページをまたぐ表の結合や重複見出しの除去も扱いますが、今回の単ページ教材では検証していません。また、生成されたMarkdownに図のファイル名が書かれていても、参照先の画像が揃っているかは別に確認します。保存後の文章だけでなく、ページ対応と添付ファイルまで確認して初めて次の工程へ渡せます。

ローカルLLMの観点:モデル公開と手元のMacで動くことは別

項目確認できた提供条件
公開形式・ライセンスモデルカードはMITを表示。重みを取得できる。配布コードと利用条件を確認して使う
モデル規模Hugging Face APIでは約33.44億のパラメーター。配布重みはBF16が中心
公式の動作確認例Python 3.10、torch 2.13.0、transformers 4.52.1、NVIDIA A800-80GB
推論の入口Transformersのinfer / infer_multi。サーバー運用は公式がSGLangを推奨
対応OSの読み方公式手順はCUDAを利用。OSごとの対応表や、MacのMetal・CPUでの動作保証は確認できない
費用重みの利用と、GPU・電力・保存容量・運用費は別。クラウドサービスの料金をモデルのMIT表記から推測しない

動作確認例の80GBは、そのまま最低必要メモリーを意味しません。ただし、約3Bというモデル規模だけを見て「普通のノートPCで快適」とも言えません。ページ数、画像の解像度、タイル分割、同時実行数によって必要資源が変わります。今回の公開デモが動いたことも、Mac上での動作の証拠にはなりません。

公式手順では trust_remote_code=True を使い、配布側のPythonコードを実行します。SGLang用にも専用wheelが用意されています。社内環境へ入れる際は、モデルの版だけでなくコードと依存関係を固定して確認してください。手順の例が待ち受け先を0.0.0.0としていても、個人の試用で外部へ公開する必要はありません。ローカルホストや社内の限定されたネットワークで始めます。

実務なら、まず「読めたか」より「後で照合できるか」を試す

導入効果を確かめやすいのは、紙の請求書だけではありません。複数ページの仕様書を検索用に整える、検査報告書から項目を抽出する、長い取扱説明書の見出しを残して社内検索へ渡す、といった仕事が候補です。ただし、検索やLLMへ渡す前に、元ページへ戻れる情報を残します。読み違いがそのまま回答へ広がるのを防ぐためです。

  1. 1最初は公開可能な資料か架空教材を使う。公開デモに本番の契約書や顧客情報を送らない。
  2. 21ページで、日本語、桁数、単位、符号、日付を照合する。今回の教材なら12×150=1,800も人が確認する。
  3. 3次に2〜3ページで、表の続きを入れる。ページ末尾と次ページ先頭の行が欠けたり、二重になったりしないかを調べる。
  4. 4実務の試行では、文書ID、ページ番号、生出力、変換後の文章を一緒に保存する。元画像へ戻れる状態を保つ。
  5. 5同じ資料を既存OCRでも処理し、修正にかかった時間まで比較する。数字の誤りが1件でも残るなら、自動で会計・契約システムへ確定登録しない。

確認項目を残せる評価メモの空欄テンプレートも用意しました。ページをまたぐ表は、このモデルの価値を判断する重要な試験です。今回の簡単な1枚で読めたことを、長い日本語文書の合格判定には使わないでください。

OCR後のLLM点検用。元画像なしに、誤認識の正解を復元できるという指示ではありません。
Text
次のOCR出力を、原本を確認する人のための点検表にしてください。出力にない値を補わず、不明は不明としてください。文書ID・ページ番号・原文の抜粋を各項目へ付けてください。金額、数量、単位、日付、否定表現を抜き出し、ページをまたぐ表の欠落・重複の疑いを挙げてください。原本画像が渡されていない場合、読み取りが正しいとは判定せず、照合が必要な箇所だけ列挙してください。

単ページの日本語帳票や、値がどこに書かれているかを確認したい場合は、LightOnOCR-3の日本語試用記事も参照してください。今回のUnlimited-OCR-2は、長い文書の構造を保つ設計が新しい一方、導入判断には自分の資料での確認が残ります。

確認した版:モデル9cf077c4、公式GitHub b6c3855e、公開デモfc4316be(いずれも2026年10月28日確認)。デモが実行時に取得した重みの正確なリビジョンはレスポンスから確認できないため、試用結果を特定の重みへ厳密に固定した再現実験とは扱いません。実施したのは日本語画像1枚のデモ推論と、その実出力の公式スクリプトによる後処理です。

よくある質問

Unlimited-OCR-2は日本語を読めますか?
今回の公開デモでは、簡単な横書きの日本語納品書1枚から伝票番号・数量・金額を読み取れました。日本語の精度保証、縦書き、手書き、長文書の品質を確認した結果ではありません。
Unlimitedなら何ページでも公開デモへ送れますか?
確認した公開デモの実装では1回最大8ページです。モデルの長文書向け設計とデモの制限は別で、実運用にもメモリーや出力設定などの条件があります。
MacのローカルLLMとして使えますか?
公式の動作確認例はNVIDIA A800とCUDAです。MacのMetalやCPU上での推論は本稿では確認しておらず、モデル規模だけで利用可能とは判断できません。
モデルの出力はそのままMarkdownですか?
公式後処理ガイドでは、ページ・ブロック・座標などを含む文字列を出すと説明されています。今回の実出力は公式スクリプトで通常の文章へ変換できましたが、誤認識の自動修正や複数ページの表の正確さまで保証するものではありません。
シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp