OpenSource-Hub

olmocr

CLI ツール

allenai/olmocr

PDFをLLMデータセットに線形化するツールキット。

概要

PDFと画像をクリーンなMarkdownテキストに変換するツールキット。自然な読み順、複雑なレイアウト、表、数式、手書きをサポート。大規模言語モデル向けの高品質なトレーニングデータを準備するために設計されています。

README プレビュー

\n  \n\n\n\n  \n    \n  \n  \n    \n  \n  \n    \n  \n  \n    \n  \n  \n    \n  \n  \n    \n  \n\n\nA toolkit for converting PDFs and other image-based document formats into clean, readable, plain text format.\n\nTry the online demo: [https://olmocr.allenai.org/](https://olmocr.allenai.org/)\n\nFeatures:\n - Convert PDF, PNG, and JPEG based documents into clean Markdown\n - Support for equations, tables, handwriting, and complex formatting\n - Automatically removes headers and footers\n - Convert into text with a natural reading order, even in the presence of\n   figures, multi-column layouts, and insets\n - Efficient, less than $200 USD per million pages converted\n - (Based on a 7B parameter VLM, so it requires a GPU)\n\n### News\n - October 21, 2025 - v0.4.0 - [New model release](https://huggingface.co/allenai/olmOCR-2-7B-1025-FP8), boosts olmOCR-bench score by ~4 points using synthetic data and introduces RL training.\n - August 13, 2025 - v0.3.0 - [New model release](https://huggingface.co/allenai/olmOCR-7B-0825-FP8), fixes auto-rotation detection, and hallucinations on blank documents.\n - July 24, 2025 - v0.2.1 - [New model release](https://huggingface.co/allenai/olmOCR-7B-0725-FP8), scores 3 points higher on [olmOCR-Bench](https://github.com/allenai/olmocr/tree/main/olmocr/bench), also runs significantly faster because it's default FP8, and needs much fewer retries per document.\n - July 23, 2025 - v0.2.0 - New cleaned up [trainer code](https://github.com/allenai/olmocr/tree/main/olmocr/train), makes it much simpler to train olmOCR models yourself.\n - June 17, 2025 - v0.1.75 - Switch from sglang to vllm based inference pipeline, updated docker image to CUDA 12.8.\n - May 23, 2025 - v0.1.70 - Official docker support and images are now available! [See Docker usage](#using-docker)\n - May 19, 2025 - v0.1.68 - [olmOCR-Bench](https://github.com/allenai/olmocr/tree/main/olmocr/bench) launch, scoring 77.4. Launch includes 2 point performance boost in olmOCR pipeli

FAQ (3)

トラブル対応
olmOCR 0.4.4 が OCR 完了後に無期限にハングし、終了しないのはなぜですか?

これは、セマフォのクリーンアップが欠落していることが原因で発生する olmOCR 0.4.4 のリグレッションです。外部の vLLM/サーバーベースのプロバイダーを使用している場合に一般的に発生します。修正済みのリリースにアップグレードしてください:

pip install --upgrade olmocr==0.4.5

処理後に CLI が正常に戻り、すべてのワーカーが終了することを確認してください。すぐにアップグレードできない場合は、最後に正常に動作していたリリースにダウングレードしてください:

pip install olmocr==0.4.3

親プロセスが SIGTERM/SIGKILL により手動で終了されるまで存続し続ける可能性があるため、スクリプト化されたワークフローや自動化されたワークフローでは olmOCR 0.4.4 の使用を避けてください。

参照 Issue #383
トラブル対応
--pdfsが絶対パスの場合、olmOCRの--markdown出力をワークスペース内に保持するにはどうすればよいですか?

古いバージョンの olmOCR では、Markdown の出力パスを導出する際に PDF の絶対パスをそのまま使用していたため、それをワークスペースと結合すると PDF の元のディレクトリに解決されてしまっていました。これは PR #400 で修正されました。修正を含むリリースまたは最新の main ブランチにアップグレードしてください:

pip install -U git+https://github.com/allenai/olmocr.git

その後、再実行してください:

python -m olmocr.pipeline ./localworkspace --markdown \
  --pdfs /my/path/to/my/personal/pdf.pdf \
  --model allenai/olmOCR-2-7B-1025-FP8

これで、出力はワークスペース内に保持されるようになり、ファイル名の衝突を避けるために絶対パスが保持されます:

./localworkspace/markdown/absolute/my/path/to/my/personal/pdf.md

古いバージョンでの回避策:PDF のディレクトリからコマンドを実行し、ファイル名のみを渡してください:

cd /my/path/to/my/personal
python -m olmocr.pipeline /path/to/localworkspace --markdown \
  --pdfs pdf.pdf \
  --model allenai/olmOCR-2-7B-1025-FP8

これにより localworkspace/markdown/pdf.md が生成されます。

参照 Issue #391
トラブル対応
12 GB の Blackwell GPU で olmOCR FP8 が約 0.5 tokens/s しか出ず、共有メモリにスピルしてしまう問題は、どうすれば修正できますか?

速度低下が発生するのは、Transformersの推論パスがFP8の重みをFP16にアップキャストし、メモリ使用量が約7 GBから約20 GBに増加するためです。代わりにvLLMバックエンドを使用してください。olmOCRはデフォルトでvLLMを使用しており、vLLMはインストールされているGPUスタックがサポートしていればネイティブFP8を実行できます。WSL2/Linux上でCUDA 12.8、Blackwell sm_120互換のPyTorchビルドを使用し、その後、Blackwell FP8をサポートするvLLMビルドをインストールまたはアップグレードしてください。python -c "import torch; print(torch.cuda.get_device_capability())"(Blackwellは12.xのケイパビリティを報告するはずです)とpython -c "import vllm; print(vllm.__version__)"でセットアップを確認してください。モデルが実際にvLLM経由でロードされていることを確認してください。Transformersによるロードでは、依然としてFP16へのアップキャストが発生します。olmocr/check.py内の個別にハードコードされた15 GBチェックは、ネイティブFP8 vLLM推論が確認された後でのみ、一時的に引き下げるか削除できます。ネイティブFP8サポートなしにそのチェックを変更しても、FP16へのアップキャストや共有メモリのスピルを防ぐことはできません。

参照 Issue #415