datalab-to/indra
1M param OCR model - runs on CPU, 15x faster than tesseract, close to 1B+ param models in accuracy
Indra OCR とは?
Indra OCR は、CPU 上で動作する小型(約 1 M パラメータ)の光学文字認識モデルです。最大 毎秒 49 ページ(4 つの x86 vCPU で 1 ページあたり約 230 ms)の速度で PDF や画像を読み取り、結果を Markdown、プレーンテキスト、または詳細なレイアウト情報を含む JSON として出力します。
主な機能
- 速度 – 同じハードウェアで Tesseract/PaddleOCR より 11〜17 倍高速。
- 精度 – OmniParseBench ヘッドラインスコア 62.1 で、PaddleOCR のフルパイプライン(58.4)を上回ります。
- レイアウト認識 – すべての行とブロックのバウンディングボックス、ブロックラベル(見出し、表、キャプション、脚注など)、および読み取り順序。
- ハイブリッド PDF 処理 – PDF のネイティブテキストレイヤーが品質チェックを通過した場合はそれを使用し、それ以外の場合は OCR にフォールバックして作業を節約します。
- 小型フットプリント – 約 18 MB の ONNX モデル、PyTorch 不要、ONNX Runtime、OpenCV、pypdfium2 で実行。
- 多言語 OCR – ラテン文字、キリル文字、ギリシャ文字、デーヴァナーガリー文字、ベンガル文字、中国語(簡体字・繁体字)。デジタル PDF はテキストレイヤーを介して任意の文字をサポート。
- オプションの数式サポート –
--mathフラグは、LaTeX スタイルのインライン数式を出力する分類器と 2 番目の認識器を追加します。 - ローカルビューア –
indra-ocr-viewerは、オーバーレイされたボックス、Markdown、JSON、タイミングを含むページを表示します。
クイックスタート(CLI)
pip install indra-ocr # パッケージをインストール
indra-ocr paper.pdf # Markdown を標準出力に出力
indra-ocr *.pdf --out results/ # ファイルごとに .md、全コア使用
indra-ocr scan.png --format json # 行、ボックス、信頼度を含む JSON
indra-ocr-viewer # http://localhost:8765 を開く
初回実行時に Hugging Face から ONNX モデル(約 18 MB)をダウンロードします。
Python API(基本的な例)
import indra_ocr
conv = indra_ocr.load(threads=4) # 自動モード(テキストレイヤー + OCR)
for i, page in conv.convert("paper.pdf"):
print(page.markdown) # 見出し、表などを含む Markdown
print(page.blocks) # ラベル付きレイアウトブロックのリスト
一括変換には indra_ocr.convert_many([...], cores=None) を使用します。これは CPU コアごとに 1 つのワーカーを生成します。
出力構造
markdown– フォーマットされたテキスト(見出し、リスト、表は HTML)。--keep-furnitureを使用しない限り、ヘッダー/フッターは省略されます。text– プレーンテキスト、検出された行ごとに 1 行。lines–Line(box, text, confidence)オブジェクトのリスト。blocks–label、bbox、textを持つレイアウトブロック、読み取り順。source–text(PDF レイヤー)、ocr、hybrid、またはerror。timings– ステージごとのミリ秒と合計。rotation、skew、処理パスを説明する短いnoteなどの追加メタデータ。
Indra OCR とマネージドサービスの使い分け
Indra OCR は、クリーンな印刷文書で CPU のみの速度が重要な場合に最適です。適していないのは次の場合です:
- セル結合や行スパンがある複雑な表。
- 手書きテキスト。
- OCR リスト外の文字(アラビア語、ヘブライ語、タイ語、日本語、韓国語) – これらは PDF テキストレイヤー経由でのみ機能します。
- 非常に劣化した、または低解像度のスキャン。
- 縦書きテキスト、バナー幅のページ、エンジニアリング図面のラベル、または 200 dpi で 100 MP を超えるページ。 これらの場合、著者は Datalab マネージドプラットフォームを介して、より高精度で GPU 対応のモデル Chandra を推奨しています。
ライセンスと商用利用
- コード – Apache 2.0。
- モデルウェイト – 修正版 OpenRAIL-M(研究、個人利用、収益 2000 万ドル未満のスタートアップ向け無料)。Datalab の API と競合する商用利用には別途ライセンスが必要です(価格ページを参照)。
インストールメモ
pip install indra-ocr # 安定版
# または最新の GitHub バージョン
pip install git+https://github.com/datalab-to/indra.git
# オプションの Tesseract 比較サポート
pip install "indra-ocr[tesseract]"
Python 3.10+、Linux(x86_64 および aarch64)、macOS(Apple silicon)でサポートされています。パッケージは ONNX Runtime、OpenCV、pypdfium2 を自動的に取得します。
ベンチマーク概要
| 指標 | Indra OCR(デフォルト) | PaddleOCR PP‑OCRv6(テキストのみ) | Tesseract 5 |
|---|---|---|---|
| スループット(ページ/秒)– 32 コア | 49.4 | 4.28 | 2.92 |
| ページあたりの中央値レイテンシ | 228 ms | 2 685 ms | 5 496 ms |
| OmniParseBench ヘッドライン | 62.1 | – | – |
| テキストスコア | 41.3 | 35.8 | 19.3 |
| テーブルスコア | 56.4 | 0.0 | 0.0 |
| レイアウトスコア | 88.6 | – | – |
詳細情報
- ホームページ: https://www.datalab.to
- Hugging Face のモデル: https://huggingface.co/datalab-to/indra-ocr
- ドキュメントと Playground: https://documentation.datalab.to および https://www.datalab.to/playground
- Discord コミュニティ: https://discord.gg/KuZwXNGnfH
TL;DR
Indra OCR は、印刷文書に対して高速で妥当な精度を提供し、豊富なレイアウト出力と使いやすい CLI/Python API を備えた、軽量で CPU 専用の OCR エンジンです。クリーンな PDF や画像のバッチ処理に理想的で、複雑な表、手書き、非ラテン文字の制限を許容できる場合に最適です。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト