olmOCR は AI2 が公開する文書線形化ツールキットです。PDF の各ページを画像へレンダリングし、文書向けに調整された視覚言語モデル olmOCR-2 に、本文・表・LaTeX 数式を自然な読み順で再構成させます。その後、YAML フロントマターを検証し、回転や失敗を再試行して、Markdown と Dolma JSONL にまとめます。PNG と JPEG も入力でき、論文コーパス、歴史資料、検索、RAG の前処理に向きます。
ただし、これは単純な文字認識器ではありません。従来型 OCR が文字と座標を中心に扱うのに対し、olmOCR は段組みの順序を判断し、ヘッダー/フッターを省き、見た目の表をテキスト構造へ書き換えます。LLM が読みやすい結果を得やすい一方、出力は生成テキストです。流暢でも、数値、否定、変数、表の対応が原ページどおりとは限りません。原本、ページ画像、レビュー記録を残す必要があります。
1 ページが実際に通る処理
| 段階 | 現行の挙動 | 確認すべき失敗 |
|---|---|---|
| 入力 | PDF、PNG、JPEG をローカルまたは workspace で扱う | 暗号化、破損、巨大ファイル、権利のない資料は別途遮断する |
| レンダリング | PDF 各ページを制限付き PNG に変換し、必要なら回転を再試行する | 微小文字、ぼけ、圧縮、汚損、極端な縦横比で証拠が失われる |
| 再構成 | olmOCR-2 がページ画像から自然順の本文と構造を生成する | 省略、置換、正規化、存在しない内容の補完が起こり得る |
| 検証・再試行 | 終了理由、文脈長、YAML 構文、回転シグナルを検査する | 構文が正しいことは内容が正しいことを意味しない |
| 出力 | ページを結合し、ページ範囲付き Dolma と任意の Markdown を保存する | ページをまたぐ表、脚注、見出し、欠落ページは別途照合する |
現行実装はページ単位で推論するため、並列化、再試行、再開には向きます。しかし、前ページに見出しがあり次ページに表が続く場合など、文書全体の整合を自動で保証しません。ページ ID、原本ハッシュ、失敗一覧を出力と一緒に保持してください。
確認時点でプロジェクトは継続保守され、GitHub で見える最新安定版は 2026 年 3 月 12 日公開の v0.4.27 でした。過去の更新には長いキュー、回転、空白文書での幻覚に関する修正があります。活発である一方、本番では main 追随ではなく、固定版ごとの回帰試験が必要です。
アンカーテキスト:旧方式と現行モデルの境界
リポジトリの anchor.py は、pdftotext、PDFium、pypdf から少量の PDF ネイティブテキストを抽出できます。初期方式では、この不完全なテキストをページ画像と一緒に VLM に渡して文字認識を助けました。CLI には --target_anchor_text_len が残っていますが、ヘルプは「新モデルでは使用しない」と明記します。現行 main のページ要求は no-anchoring プロンプトで、モデル処理失敗時の fallback に pdftotext が使われます。
したがって「olmOCR は常に PDF アンカーを使う」という説明は正確ではありません。アンカリングは歴史的・実装上の技法であり、olmOCR-2 の全推論の証拠ではありません。ただし born-digital PDF ではネイティブ抽出を別に走らせ、VLM 出力と比較する価値があります。不一致は文字コード、読み順、欠落、幻覚のレビュー候補になります。画像だけのスキャンには、そもそもアンカーがありません。
モデル、データ、評価、ライセンス
| 項目 | 一次資料で確認できる範囲 | 読み方 |
|---|---|---|
| 初代学習 mix | 論文は 10 万超のクロール PDF から 26 万ページ、図、手書き、低品質スキャンを含むと説明 | 多様性は全言語・全帳票の均一品質を証明しない |
| olmOCR-2 | Qwen2.5-VL-7B-Instruct 由来の 7B 級モデル、SFT と検証可能な単体テスト報酬による RL | 論文の大きな改善は英語 benchmark の数式、表、多段組みに集中 |
| olmOCR-Bench | 約 1,400 の単ページ PDF、7,000 超の機械検証可能な事実 | 難例に有用だが、自社文書の分布ではない |
| モデル精度 | モデルカードは実用推論に FP8、追加微調整に BF16 を推奨 | 量子化名だけで速度・品質・VRAM は決まらない |
| ライセンス | ツールと公開 olmOCR-2 重みは Apache-2.0。Responsible Use Guidelines への参照もある | 原文書の権利、依存物、基盤モデル、用途を別々に確認する |
リポジトリの leaderboard を万能な精度として転記してはいけません。olmOCR-Bench は英語、ページ単位、fact test 方式で、難しいカテゴリを意図的に集めています。編集距離だけより数式の符号や読み順の失敗を捉えやすい反面、日本語縦書き、契約書、申請書、診療文書の品質を保証しません。本稿は架空の WER や普遍スコアを提示しません。
初代論文には 2025 年当時の特定構成での大規模コスト実験があります。現在の固定価格ではありません。GPU、画像寸法、再試行、モデル版、プロバイダー単価が変わるため、「受け入れ済み 1 ページ当たり」の費用と誤り率を、日付と設定付きで測るべきです。
導入、ローカルバッチ、リモート推論
python -m venv .venv
source .venv/bin/activate
pip install "olmocr[gpu]"
olmocr ./workspace --markdown --pdfs ./samples/report.pdf
olmocr ./workspace --markdown --workers 2 \
--max_page_retries 3 --pdfs ./incoming/*.pdf
pip install olmocr
olmocr ./workspace --server https://inference.example/v1 \
--api_key "$OLMOCR_API_KEY" \
--model allenai/olmOCR-2-7B-1025-FP8 \
--max_concurrent_requests 8 --markdown --pdfs ./incoming/*.pdf
現行メタデータは Python 3.11 以上を要求し、GPU extra は Torch、Transformers、vLLM を固定します。README は 7B VLM に GPU が必要と説明しています。一般的な Transformers で読み込めるという理由だけで、CPU-only をサポート済み本番経路と宣伝しないでください。対象 CUDA ドライバー、GPU、コンテナ、lockfile で互換性を検証します。
ローカル GPU は承認済み環境内にページを留められます。OpenAI-compatible なリモートサーバーは、レンダリング済みページそのものを別ホストへ送ります。ベクトルだけではありません。TLS、認証、リージョン、ログ、保存、DPA、モデル alias、同時実行数を審査し、API key は秘密管理に置きます。
| 配置 | 適する用途 | 制御 | 主なリスク |
|---|---|---|---|
| ローカル 1 GPU | 機密 pilot、中規模 queue | 版固定、worker/VRAM 制限、暗号化 | CUDA/VRAM 相性、単一障害点 |
| 内部 multi-GPU | 大規模な承認済み batch | 再開可能 workspace、並列設定、ページ manifest | 高速化と同時に静かな誤りも拡大 |
| 自前 remote | 承認ネットワーク内の共有推論 | TLS、サービス ID、quota、本文ログ禁止 | 機密データの集中 |
| 外部 API | GPU 購入前の短期評価 | DPA、地域、保持、価格、モデル版 | データ境界と費用が変動 |
| AI2 demo | 公開・合成ページの定性確認 | 機密を入れない | 本番 SLA/privacy 承認とは別物 |
再現できる評価と本番バッチ手順
- 失敗別にサンプルする。デジタル PDF、写真、傾き、古いスキャン、小字、多段、数式、表、手書き、混在言語、空白、最長文書を含めます。
- ページ事実を作る。人名、日付、金額、否定、表のセル関係、数式、必須文、除外すべきヘッダー/フッター、読み順を注釈します。
- 二つ以上の独立経路で処理する。PDF ネイティブ抽出、Tesseract、別 parser と比べ、不一致を人手 queue に送ります。
- 欠落と幻覚を分ける。一文字の負号や一文の捏造は文字率では小さくても意味を壊します。
- 運用も測る。ページ latency、retry、失敗、peak VRAM、token、受入ページ費用を記録します。
- manifest を固定する。input hash、olmOCR 版、checkpoint、精度、runtime、render size、retry、判定を残します。
- 小 batch から拡張する。失敗率、異常に短い出力、retry 急増に停止条件を設けます。
- 高リスク欄を人が確認する。法律、医療、財務、本人確認、数式、研究結論を自動公開しません。
git clone https://github.com/allenai/olmocr.git
cd olmocr
pip install -e ".[bench]"
playwright install chromium
huggingface-cli download --repo-type dataset allenai/olmOCR-bench \
--local-dir ./olmOCR-bench
python -m olmocr.bench.convert olmocr_pipeline --dir ./olmOCR-bench/bench_data
python -m olmocr.bench.benchmark --dir ./olmOCR-bench/bench_data
公式 benchmark は upgrade regression に有用です。文字列の存在/不在、読み順、表の関係、KaTeX での数式レンダリングなどを pass/fail で調べます。bench extra と Playwright Chromium が必要です。README で現在対応 runner を確認し、生成後に score します。
自社 holdout も別に作り、調整に使ったページを最終 unbiased test として再利用しないでください。誤りを事実、構造、順序、言語、scan 品質、運用失敗に分けます。RAG なら chunk がページへ戻れるか、抽出なら見た目ではなく JSON/セル値が正しいかも確認します。
表・数式・スキャン・言語・プライバシー・幻覚
表と数式は強化対象ですが、Markdown や LaTeX が生成できることと意味が正しいことは別です。合計、行列、結合セル、上付き下付き、小数点、桁区切り、負号、変数を確認します。整った表ほど誤った正規化を見落としやすいため、原ページへのリンクを維持します。
低解像度や損傷には証拠の上限があります。拡大は失われたインクを復元せず、VLM は文脈から自然な語を推測できます。不明箇所は不確実として残し、下流 LLM に無根拠で修復させません。空白、重複、破損、ページ内の命令風文字列もテストします。
公式 benchmark は英語です。多言語を処理できても、全 script の均一品質は示されていません。日本語縦書き、旧字体、ルビ、混植、右開き資料、韓国語、中国語、RTL、希少文字を個別に評価し、母語話者がレビューします。英語 leaderboard から日本語精度を推定しません。
ローカルという主張には model cache、S3 workspace、log、crash dump、backup、monitoring まで含めます。保持を最小化し、暗号化、RBAC、log redaction、削除期限を設けます。remote endpoint は完全なページ情報を受け取るため、原文書と同じ感度で扱います。
YAML parse 成功や retry 成功は技術的健康であって、事実確認ではありません。出力長、禁止句、ページ coverage、別 engine との差、重要 field rule で問題を選別し、高リスク文書は人が照合します。
Marker、Docling、Tesseract、クラウド文書 AI との比較
| 選択肢 | 向く条件 | 出力の強み | 代償 |
|---|---|---|---|
| olmOCR | LLM/RAG 向け自然順テキスト、数式・表・複雑 layout | Markdown/text と Dolma | GPU/VLM 運用、生成誤り、位置情報が弱い |
| Marker | 多形式、画像、構造 JSON、CPU/MPS または hybrid mode | Markdown、JSON、HTML、chunks | mode 差と code/weight license の別確認 |
| Docling | 広い形式、統一 Document 表現、local/air-gap | lossless JSON、Markdown/HTML、統合 | 設定範囲が広く、選ぶ pipeline で品質が変わる |
| Tesseract | 決定的な文字 OCR、座標、TSV/hOCR、多言語 pack | 文字と位置 output | layout、表、数式、読み順に追加部品 |
| Cloud Document AI | managed SLA、form/KV、分類、分割 | 構造化 Document と専門 processor | 課金、データ境界、vendor schema |
編集上の判断:olmOCR は「言語モデル用ページ再構成器」と捉えると強みが明確です。pixel 座標付きの監査転写ではありません。座標、決定的証跡、form field、分類が必須なら structured OCR/parser や cloud processor を選び、olmOCR を第二の読みとして併用します。
実運用では一つの万能モデルより router が合理的です。きれいな digital page は native extraction、視覚的に難しい page は VLM、重要 field や二経路の不一致は人へ送ります。品質と費用の両方を制御できます。
よくある質問
olmOCR は Tesseract に LLM を加えただけですか?
違います。Tesseract は文字行と座標を返せます。olmOCR はページ全体から自然順テキスト、表、数式を生成します。layout 理解は広い反面、もっともらしい誤りがあり得ます。
現行 olmOCR-2 は PDF anchor を使いますか?
main の新モデル path は no-anchoring です。CLI も anchor length を新モデルでは使わないと記載します。anchor code と pdftotext fallback は残り、独立検証には有用です。
クラウドへ送らず実行できますか?
weights と依存物を事前取得し、対応 NVIDIA GPU/vLLM を用意すれば可能です。cache、log、workspace、backup も点検してください。remote server mode はページを送信します。
bounding box は保存されますか?
主 output は page span 付き線形テキストで、word-level 座標 graph ではありません。位置が必須なら Tesseract、Marker JSON、Docling、cloud document AI が適します。
表と数式は無検査で使えますか?
使えません。合計、セル関係、符号、変数、単位、結合セルを原ページと照合してください。訓練上の強みは個々の正しさを保証しません。
どの言語に対応しますか?
多言語ページは処理できますが、公式 benchmark は英語です。対象言語、縦横組み、字体ごとに評価し、共通精度を作らないでください。
必要 VRAM は?
7B 級 GPU model で FP8 推論が推奨されていますが、runtime、image size、context、concurrency 全体に共通する固定値は公開されていません。対象 GPU で測定します。
AI2 demo に機密文書を入れてよいですか?
現在の privacy、retention、terms を承認するまでは公開・合成ページだけにしてください。機密は承認済み local または契約済み環境で処理します。
確認した一次資料
- AI2 olmOCR repository and README
- Official release history
- olmOCR original paper
- olmOCR 2 paper: unit-test rewards
- olmOCR-2 model card and license
- olmOCR-Bench design and runner
- Official training guide
- Current page pipeline implementation
- Anchor-text implementation
- Python and GPU dependency metadata
- Apache-2.0 project license
- Marker official repository
- Docling official repository
- Tesseract official repository
- Google Cloud Document AI overview
独立技術レビュー:2026-08-20。確認時の最新安定版は v0.4.27。モデル名、依存関係、API 価格、demo policy は変わるため、本番前に固定 source と private test を再確認してください。


