dots.ocrは、レイアウト検出とコンテンツ認識を同時に行える1.7Bパラメータの視覚言語モデル(VLM)に基づく、強力な多言語文書解析ツールです。dots.ocrは、低リソース言語を含む多言語をサポートしています。dots.ocrは、低リソース言語を含む複数の言語をサポートしており、学術論文や財務報告書などの複雑な文書の処理に適しています。従来のマルチモデルパイプラインに比べ、dots.ocはシングルモデルアーキテクチャを採用しているため、入力プロンプトを変更するだけでタスクを切り替えることができ、推論を高速かつ効率的に行うことができる。ユーザーは、GitHub上のオープンソースコードと提供されるDockerイメージを通じて、素早くデプロイして使用することができます。
機能一覧
- レイアウト検出文書内の要素(テキスト、表、数式、画像など)を特定し、正確なバウンディングボックス(bbox)座標を提供します。
- コンテンツ認識文書からテキスト、表(HTML形式で出力)、数式(LaTeX形式で出力)などを抽出します。
- 多言語サポート100言語、特に低リソース言語での文書解析をサポート。
- 読み順の最適化文書要素を人間の読書習慣に従って並べ替え、論理的な出力を保証する。
- 高速推論1.7Bのパラメータに基づくコンパクトなモデルで、多くの大規模モデルよりも優れた推論速度を持つ。
- 柔軟なキュー切り替え例:さまざまなプロンプト(例えば
prompt_layout_only_en
そしてprompt_ocr
)を使って、タスクに特化した構文解析を実現する。 - 出力多様性JSONフォーマット、Markdownファイル、バウンディングボックスのビジュアライゼーションで構造化されたレイアウトデータを生成します。
ヘルプの使用
設置プロセス
dots.ocrを使用するには、まず必要な環境とモデルの重みをインストールする必要があります。以下に詳細なインストール手順を示します:
- 仮想環境の構築::
conda create -n dots_ocr python=3.12 conda activate dots_ocr
- クローン・コード・リポジトリ::
git clone https://github.com/rednote-hilab/dots.ocr.git cd dots.ocr
- PyTorchのインストールと依存関係::
CUDAのバージョンに応じて、対応するバージョンのPyTorchをインストールする:pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/cu128 pip install -e .
- モデルウェイトのダウンロード::
提供されているスクリプトを使用して、モデルの重みをダウンロードします。モデルの保存パスのフォルダ名にはピリオドを使用できないことに注意してください。DotsOCR
::python3 tools/download_model.py
- Dockerイメージの使用(オプション)::
インストールに問題が発生した場合は、公式に提供されているDockerイメージを使用することができる:git clone https://github.com/rednote-hilab/dots.ocr.git cd dots.ocr pip install -e .
展開方法
dots.ocr おすすめ ブイエルエルエム デプロイは、最適な推論パフォーマンスを得るために実行される。以下は、vLLM ベースの展開の手順である:
- モデルをvLLMに登録する::
python3 tools/download_model.py export hf_model_path=./weights/DotsOCR export PYTHONPATH=$(dirname "$hf_model_path"):$PYTHONPATH sed -i '/^from vllm\.entrypoints\.cli\.main import main$/a\ from DotsOCR import modeling_dots_ocr_vllm' `which vllm`
- vLLMサービスの開始::
CUDA_VISIBLE_DEVICES=0 vllm serve ${hf_model_path} --tensor-parallel-size 1 --gpu-memory-utilization 0.95 --chat-template-content-format string --served-model-name model --trust-remote-code
- vLLM API の実行例::
python3 ./demo/demo_vllm.py --prompt_mode prompt_layout_all_en
あるいは、推論にはHuggingFaceを使う:
python3 demo/demo_hf.py
文書解析操作
vLLMサービスが開始したら、以下のコマンドで画像やPDFファイルを解析することができます:
- 単一画像の解析::
python3 dots_ocr/parser.py demo/demo_image1.jpg
- PDFファイルの解析::
複数ページのPDFの場合は、スレッド数を多めに設定することをお勧めします:python3 dots_ocr/parser.py demo/demo_pdf1.pdf --num_threads 64
- レイアウトテストのみ::
python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_layout_only_en
- テキストのみを抽出(ヘッダーとフッターは除く)::
python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_ocr
- バウンディングボックスに基づく構文解析::
python3 dots_ocr/parser.py demo/demo_image1.jpg --prompt prompt_grounding_ocr --bbox 163 241 1536 705
出力結果
解析後、dots.ocrは以下のファイルを生成する:
- JSONファイル(例
demo_image1.json
): レイアウト要素のバウンディングボックス、カテゴリー、テキストコンテンツを含みます。 - マークダウン・ファイル(例
demo_image1.md
): 検出されたすべてのテキストコンテンツをMarkdownフォーマットにマージします。demo_image1_nohf.md
ヘッダーとフッターを除いたバージョン。 - ビジュアライゼーション(例
demo_image1.jpg
): 検出されたバウンディングボックスを元画像上に描画します。
ランニング・デモ
インタラクティブ・プレゼンテーション・インターフェースは、以下のコマンドで起動できる:
python demo/demo_gradio.py
またはバウンディングボックスベースのOCRデモを実行する:
python demo/demo_gradio_annotion.py
ほら
- モデル保存パスモデルの保存パスにピリオドが含まれていないことを確認してください。
DotsOCR
)でなければ、モジュールのロード・エラーにつながる可能性がある。 - 画像解像度画像解像度が11289600ピクセルを超えないようにし、PDF解像度のDPIを200に設定することをお勧めします。
- 特殊文字の取り扱い連続する特殊文字(例.
...
もしかしたら_
)は出力例外が発生する可能性がある。prompt_layout_only_en
もしかしたらprompt_ocr
ヒント
アプリケーションシナリオ
- 学術論文の分析
dots.ocrは、学術論文のテキスト、数式、表を効率的に解析し、研究者が文献を整理するための構造化JSONデータとMarkdownドキュメントを生成します。 - 財務報告の処理
財務報告用に、dots.ocrは表とテキストのコンテンツを正確に抽出し、HTML形式で表を生成するため、データ分析やアーカイブが簡単に行えます。 - 多言語ドキュメント
100言語の解析に対応し、多言語の契約書や法的文書などの処理に適しており、コンテンツとレイアウトの正確な抽出を保証します。 - 教材の照合
教科書、テスト用紙、その他の教材を解析して数式(LaTeX形式)とテキストを抽出し、教師や生徒が学習リソースを簡単に整理できるようにします。
品質保証
- dots.ocrはどの言語をサポートしていますか?
dots.ocrは、英語、中国語、チベット語、ロシア語など100の言語をサポートしている。 - 大きなPDFファイルを扱うには?
利用するparser.py
スクリプトを作成し--num_threads
パ ラ メ タ (た と えば 64) を使用す る と 、 複数ページの PDF の解析を速 く す る こ と がで き ます。 - 解析結果はどのように出力されますか?
結果には、JSONファイル(構造化データ)、Markdownファイル(テキストコンテンツ)、ビジュアル画像(バウンディングボックス付き)が含まれる。 - モデルの読み込みエラーを解決するには?
モデルの保存パスにピリオドが含まれていないことを確認してください(例えばDotsOCR
)、vLLM登録スクリプトが正しく実行されていることを確認する。