はじめに
olmOCRはAllen Institute for Artificial Intelligence (AI2)のAllenNLPチームによって開発されたオープンソースツールで、PDFファイルを線形化されたテキストに変換することに重点を置いており、特にデータセットの準備や大規模言語モデル(LLM)の学習に適しています。このツールは、複雑なPDF文書からのテキスト抽出をサポートし、自然な読み順を維持し、表や数式、手書きの内容も扱うことができます。このツールは効率的に設計されており、ローカルのGPUまたはAWS S3を通じてマルチノードの並列処理で実行できるため、処理コストを大幅に削減できる。公式データによると、その処理速度は毎秒3000+トークンで、コストはGPT-4oのわずか1/32であり、大量のPDFを扱う必要がある研究者や開発者に非常に適しています。olmOCRはApache 2.0ライセンスを使用しており、コード、モデルの重み、データは完全にオープンソースであり、コミュニティが改善に参加することを奨励しています。

デモアドレス:https://olmocr.allenai.org/
機能一覧
- PDF テキスト抽出と線形化PDF ファイルを、読み順を保持したまま、Dolma 形式の JSONL 形式のテキストに変換します。
- GPU加速推論ネイティブGPUとsglangテクノロジーを活用して効率的な文書処理を実現。
- マルチノード並列処理何百万ものPDFを処理するのに適しています。
- 複雑なコンテンツ認識表、数式、手書きテキストを処理し、構造化された結果を出力します。
- 柔軟なワークスペース管理ローカルまたはクラウドのワークスペースをサポートし、処理結果や中間データを保存。
- オープンソースの生態系サポート二次開発やカスタマイズのための完全なコードとドキュメントを提供する。
ヘルプの使用
設置プロセス
olmOCRのインストールはPythonをサポートする環境で行う必要があり、処理効率を上げるためにGPUを使用することを推奨します。以下に詳細な手順を示します:
1.環境準備
- Anaconda のインストールAnacondaを持っていない場合は、公式サイトからダウンロードしてインストールしてください。
- 仮想環境の構築:
conda create -n olmocr python=3.11 conda activate olmocr
- クローン・コード・リポジトリ:
git clone https://github.com/allenai/olmocr.git cd olmocr
2.コアの依存関係のインストール
- 基本的な依存関係のインストール:
pip install -e .
- GPUサポートのインストール(オプション)GPUアクセラレーションが必要なら、sglangとflashinferをインストールしてください:
pip install sgl-kernel==0.0.3.post1 --force-reinstall --no-deps pip install "sglang[all]==0.4.2" --find-links https://flashinfer.ai/whl/cu124/torch2.4/flashinfer/
銘記するGPUドライバーとCUDAのバージョンが上記の依存関係に対応していることを確認してください。
3.インストールの検証
- コマンドラインで
python -m olmocr.pipeline --help
ヘルプメッセージが出力されれば、インストールは成功です。
使用方法
olmOCRは、主にローカルでの単一ファイル処理とクラウドでの大規模処理の2つの利用シーンを提供する。以下、操作の流れを詳しく説明する。
個々のPDFのローカル処理
- PDFファイルの準備:
- 処理するPDFをローカルディレクトリに置きます。
./tests/gnarly_pdfs/horribleocr.pdf
.
- 処理するPDFをローカルディレクトリに置きます。
- 処理コマンドの実行:
python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/horribleocr.pdf
- 結果を見る:
- 処理が完了すると、結果はJSON形式で
./localworkspace
. - 抽出されたテキストは、DolmaスタイルのJSONLフォーマットで
./localworkspace/results
真ん中だ。
- 処理が完了すると、結果はJSON形式で
- 調整パラメータ(オプション):
--workers
デフォルトは8。--target_longest_image_dim
デフォルトは1024ピクセル。
サンプル出力(コンピューティング):
{"text": "Molmo and PixMo:\nOpen Weights and Open Data\nfor State-of-the...", "metadata": {"primary_language": "en", "is_table": false}}
クラウド(AWS S3)での大規模処理
- AWS環境の設定:
- AWSアカウントを持っていることを確認し、アクセスキーを生成する。
- S3に2つのバケットを作成する。
s3://my_s3_bucket/pdfworkspaces/exampleworkspace
歌で応えるs3://my_s3_bucket/jakep/gnarly_pdfs/
.
- PDFファイルのアップロード:
- PDFファイルのアップロード
s3://my_s3_bucket/jakep/gnarly_pdfs/
.
- PDFファイルのアップロード
- マスターノードタスクの起動:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf
- このコマンドはワークキューを作成し、処理を開始する。
- スレーブ・ノードの追加:
- 他のマシンで実行中:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace
- スレーブ・ノードは自動的にキューからタスクを取得して処理する。
- 結果表示:
- 結果は
s3://my_s3_bucket/pdfworkspaces/exampleworkspace/results
.
- 結果は
銘記するAWS CLIを設定し、S3ストレージバケットにアクセスするのに十分な権限があることを確認する必要があります。
ビーカーの使用(AI2内部ユーザー)
- ビーカー・パラメーターの追加:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf --beaker --beaker_gpus 4
- 営業効果:
- ローカルでワークスペースを準備した後、クラスタ内で4つのGPUワーカーノードが自動的に起動します。
注目の機能操作
1.複雑な文書の取り扱い
- 手続き:
- 表や数式を含むPDFをアップロードする。
- デフォルトモデルの使用
allenai/olmOCR-7B-0225-preview
処理コマンドを実行する。 - 出力JSONLファイルをチェックし、テーブルと数式がテキストとして正しく解析されていることを確認する。
- 注意を引く:: 認識が不十分な場合の調整
--target_longest_image_dim
パラメータで画像の解像度を上げる。
2.高スループット処理
- 手続き:
- マルチノード環境(AWSやBeakerなど)を設定する。
- 増加
--workers
パラメータを使用することで、単体での並列性を高めることができる。 - 処理速度を監視し、1秒間に3000枚以上のトークンを確保する。
- ゆうせいコストは100万ページあたり190ドルと、商用APIよりはるかに安い。
3.カスタム開発
- 手続き:
- 修正
olmocr/pipeline.py
処理ロジックを調整する。 - 相互互換性
--model
パラメータを使用します。 - GitHubにコードを投稿し、コミュニティ開発に参加する。
- 修正
ほら
- ハードウェア要件ローカル動作にはGPUが必要で、NVIDIAグラフィックスカードを推奨します。
- ネットワーク要件クラウド処理には、AWSへの安定したネットワーク接続が必要です。
- デバッグのヒント使用
--stats
トラブルシューティングのためにワークスペースの統計を表示するパラメータ。
これらのステップで、olmOCRを素早く使いこなし、1つのPDFでも大規模なデータセットでも、効率的に仕事をこなすことができます。