datalab-to/surya
OCR, layout analysis, reading order, table recognition in 90+ languages
解決する課題
スキャン文書は雑然としています。見出し、表、図、フォーム、手書き、数式が混在し、異なる言語で書かれていることもよくあります。単純な OCR は生のテキストを出力するだけで、文書を使いやすくする構造が失われます。Surya は文書ページを機械可読なテキストとその構造化された説明に変換します。テキスト行を検出し、レイアウトブロック(見出し、表、画像、キャプションなど)を識別し、読み順を決定し、表の行と列を認識します。また、インラインの数式も処理し、方程式を LaTeX として返します。これにより、スキャンされた PDF や画像が検索可能になり、抽出可能になり、HTML や Markdown などの形式に変換できるようになります。
仕組み
Surya は 650M パラメータの視覚言語モデル(画像を入力としてテキストを生成するモデル)です。バージョン 2 では、1 つの共有モデルがレイアウト分析、ページ全体の OCR、表認識を処理し、別の小さなモデルが行レベルのテキスト検出を処理し、さらに別のモデルが OCR エラーを検出します。初回使用時に、ツールは自動的に推論サーバーを起動します。NVIDIA GPU では vllm を使用し、CPU/Apple Silicon では llama.cpp を使用します。環境変数で既に実行中のサーバーを指定することもできます。コマンドラインツール(surya_ocr、surya_layout、surya_table、surya_detect)は、バウンディングボックス、レイアウトラベル、読み順位置、信頼度スコア、HTML 出力(表は <table>...</table> タグ、数式は <math>...</math> タグ内の LaTeX)を含む JSON 結果ファイルを書き出します。--keep_server フラグを使用すると、コマンド間で推論サーバーを維持し、毎回起動コストを支払う必要がなくなります。Python API と Streamlit グラフィカルインターフェースもあります。
対象ユーザー
文書処理パイプラインを構築する開発者やチーム向けです。例えば、検索用にスキャンアーカイブをインデックス化する、フォームや税務文書からデータを抽出する、教科書や新聞のレイアウトを解析する、PDF を構造化形式に変換するなどです。研究、個人使用、および資金または収益が 500 万ドル未満のスタートアップには無料です。モデル重みのより広範な商用利用には有料ライセンスが必要です(コード自体は Apache 2.0)。README では、大規模または困難なワークロードに対してホスト型 Datalab API も案内しています。
ハイライト
- olmOCR-bench ベンチマークで 83.3% の精度——3B パラメータ未満のモデルで最高スコア
- RTX 5090 GPU で毎秒約 5 ページのスループット
- 多言語:91 言語をカバーする内部ベンチマークで 87.2%
- 読み順を含むレイアウト分析、行と列のジオメトリとセルを出力する表認識、完全 HTML モードは結合セルとヘッダー行を処理
- 数式は同じ OCR パスで認識され、
<math>タグ内の KaTeX 互換 LaTeX として出力 - vllm 経由で NVIDIA GPU 上で実行、または llama.cpp 経由で CPU/Apple Silicon 上で実行
- 画像や PDF で試せるインタラクティブな Streamlit アプリ(
surya_gui)を含む
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト