Surya OCR

Surya OCRによる文書抽出の評価方法を解説します。新旧インターフェース、コードとモデル重みのライセンス、表の対応関係、処理工程で必要な確認作業を分けて判断します。

モデル情報と利用方法

モデル名
Surya OCR
利用方法
現在のプロジェクトは公式リポジトリとPythonパッケージから利用できます。コードとモデル重みのライセンスは別々に評価します。
モデルの種類
Transformer
アーキテクチャ
独立した検出モデルを備えたSurya 2文書向け視覚言語モデル
対象ユーザー
バージョンを固定し、参照用の標本を作り、自動化する前に抽出結果の構造を確認できる開発者と文書処理の担当者向けです。
入力
公式文書に記載されたOCRインターフェースへ渡すページ画像。パッケージのバージョンと、PDFを画像へ変換した場合の手順を試験記録に残します。
出力
構造化されたOCR結果です。文字、ブロック、読み順、HTML、処理の省略、エラーを、後続処理の入出力仕様に照らして確認します。
費用
モデルのライセンス、サーバーの起動、ページの処理、人による修正を分けて見積もります。コードにアクセスできるだけでは、モデル重みの利用条件を満たすかどうかや、受理済み文書1件当たりの費用は分かりません。
避けるべき場合
ライセンス条件、文書ごとに許容できる誤りの範囲、現在の出力仕様が未確認なら、自動運用への導入を見合わせます。

情報源と評価方法

ライセンスと権利

ライセンス
コードはApache 2.0、モデル重みは修正版OpenRAIL-M
ライセンスの種類
ソースコード公開
ライセンスの適用範囲
コードにはApache 2.0が適用されます。モデル重みには、収益、資金調達、競合利用に関する別の修正版OpenRAIL-Mの条件があります。組織に適用される条件を全文で確認してください。
オープンソース
いいえ

提供状況

状態
提供中
状態の適用範囲
現在のプロジェクトは公式リポジトリとPythonパッケージから利用できます。コードとモデル重みのライセンスは別々に評価します。

要点

Surya 2によるOCR、ページ配置、表の認識

確認した公式文書では、OCR、ページ配置、表の認識に共通の文書モデルを使います。V2のインターフェースと出力のデータ構造は旧版の例と異なります。

文書構造には独自の受け入れ確認が必要

出力のデータ構造にはブロック、読み順、HTML、処理の省略、エラーが含まれます。一つの精度値だけでなく、情報同士の対応関係を確認します。

コードとモデル重みは利用条件が異なる

リポジトリのコードはApache 2.0、モデル重みは追加制限のある修正版OpenRAIL-Mの対象です。予定する導入形態について両方の条件を確認します。

利用例と制約

仕入先文書からの抽出を試す

業務上重要なページ配置、表、失敗例を含む小さな標本を作り、自動化する前に人が用意した参照データと比較します。

バージョン差を確認しながらOCRを移行する

固定したパッケージと保存済みの結果を使い、データ構造、接続先、同時処理数に関する前提の変化を見つけます。実行の完了と後続データの正しさは別々に確認します。

利点

  • 公式文書にあるV2の処理では、OCR、ページ配置、表の認識が推論マネージャーを共有します。
  • 構造化された出力項目により、読み順、省略された内容、エラーを明示的に確認できます。
  • 推論マネージャーは既存のサーバーへ接続できるため、複数の文書処理で同じサーバーを再利用できます。

制約

  • 古いSuryaの使用例は、現在のV2インターフェースや出力のデータ構造と合わない場合があります。
  • コードのApache 2.0ライセンスは、モデル重みに適用される別の修正版OpenRAIL-Mの条件を置き換えません。
  • 文字を正しく認識できても、読み順や表の対応関係が誤る可能性があるため、文書全体の確認が必要です。

トピック

  • Surya OCR

モデルについて

このページの内容

Surya OCRは、画像やPDFから文字だけでなく、ページ構造も抽出する文書処理プロジェクトです。読み順や表の領域まで必要なアプリケーションでは評価候補になります。ただし、バージョンの区別が重要です。本稿は現在のSurya 2の公式資料に基づいており、古いチュートリアルに残るインターフェースではありません。インストールの成功は出発点にすぎません。受け入れテストでは、抽出後も文書の意味が保たれているかを確認する必要があります。

これは2026年9月10日に確認した情報源に基づく評価です。OCRベンチマークの実行や顧客文書の処理は行っていません。以下では、実測していない精度を掲げる代わりに、却下条件を明示したテスト案を示します。対象業務に合わせて調整してください。

確認したコードと説明文の版: a2363d33.

抽出後に残すべき情報を決める

まず、抽出結果を何に使うかを考えます。アーカイブ検索と請求書の会計システムへの取り込みでは、必要な証拠が異なります。検索では装飾見出しが少し崩れても正しいページを見つけられる場合があります。請求書では、もっともらしく見える誤った口座番号を軽微な書式ミスとして扱えません。

仕入先からPDFを受け取るチームを想定します。読み取りやすいデジタル文字を含むファイルもあれば、押印、2段組みの住所、次ページに続く表を含むスキャンもあります。必要なのは「OCR完了」という表示ではありません。仕入先、品目、数量、合計が元の位置と結び付いた、確認可能な記録です。

設定を選ぶ前に要件を書きます。確認なしに受理できない項目、結び付きを保つ構造、人の確認キューへ送る条件を決めてください。読みやすい段落が、利用不能な表を隠すことを防げます。処理方法を比較するときは、プレビューの見栄えだけでなく、同じ情報を保持できているかを基準にします。

プロジェクト文書は、Suryaを実際の風景に写る文字ではなく文書向けに位置付けています。店舗写真や動く道路標識には別の評価が必要です。多言語対応だけでは、あらゆるカメラ画像への適性を証明できません。Suryaの対象範囲と制限

サンプルをコピーする前に導入版を確認する

Suryaのモデルファミリー名とPythonパッケージ版は別の識別子です。確認時のパッケージ設定は0.22.1を示し、Python 3.10以降を対象としていました。実際のパッケージ、チェックポイント、バックエンド、実行環境を記録してください。これらを記録せずにコマンドだけをコピーしても、組み込み手順を再現できません。パッケージ設定

現在の移行ノートでは、旧来の予測クラスが推論マネージャーに置き換わり、OCR出力項目も変わっています。更新はアプリケーションとの入出力仕様の変更として扱います。文書群をまとめて処理する前に実際の結果を一つ確認し、その版が返す項目を後続の解析処理が正しく読み取れるか検証してください。Surya v1からの移行

現在の認識結果のデータ構造は、ページをブロックと画像境界で表します。各ブロックには読み順、HTML内容、処理の省略やエラーを示す明示的な状態があります。空のブロックを自動的にデータベースの空欄へ変換してはいけません。意図的な省略、認識失敗、文字が本当にない領域を区別できるよう、状態情報を残します。認識データ構造

既存の組み込み処理を更新する場合は、代表的な旧結果と新結果を並べて保存し、文字を評価する前に構造を比較します。項目名、入れ子、ページ順、欠損値の扱いを確認してください。表がすべて失われても合格するようなデータ構造のテストでは、移行を検証できません。

コードとモデル重みの許諾を分ける

リポジトリのコードはApache 2.0です。モデル重みには別の修正版OpenRAIL-Mライセンスが適用されます。システム全体をGPLと説明したり、コードのライセンスから重みの無制限利用を推論したりすると、商用利用に必要な条件の判断を誤らせます。コードライセンスモデル重みライセンス

付属書Aには、前年度総収益が500万米ドルを超える場合、株式または借入による資金調達の総額が同額を超える場合、ライセンス提供者の製品やサービスと競合する場合に関する制限があります。収益と調達の条項にある個人利用または研究の例外と、競合利用の制限は別です。「小規模企業なら利用できる」という一律の説明に変えてはいけません。組織と予定する導入形態について全文を読み、不明な場合は適切な確認を得てください。本稿はライセンスの内容を説明するものであり、利用を法的に許可するものではありません。

文書自体の権利も別に確認します。モデルを実行できることは、仕入先記録をアップロードする権利、抽出した識別子を無期限に保持する権利、別システムの訓練に使う権利を証明しません。入力の所有者、結果を見られる人、処理を許可された環境を記録してください。

高コストな誤りが見える小さな標本を作る

仕入先の例では、実際に届く文書の問題を含む小さな標本を選びます。デジタルPDF、薄い文字のスキャン、向きが回転したページ、多段組み文書、見出しが繰り返される表を含めます。これらは標本に含める文書の候補であり、Suryaが必ず成功または失敗するという主張ではありません。

モデル出力を見る前に、人が重要項目を転記し、期待する読み順を示します。そうしないとモデルの出力自体を正解として扱ってしまいます。元のページを参照用の転記と並べて保存し、読み取りが曖昧な記号は都合のよい値に決めず、曖昧なまま記録します。

各ページに安定したIDを付け、入力のハッシュ値と寸法、処理設定、出力の保存先を記録します。非公開文書を公開の不具合報告や共有するスクリーンショットへ入れてはいけません。可能なら同じページ配置を持つ非機密の代替物で解析処理の不具合を再現し、顧客文書の処理結果ではなく、診断用のテストデータと明記します。

最小限の標本から試し、入力、自分たちの解析処理、取り込み先のアプリケーションまで結果を追跡します。Suryaのプレビューだけで判断しません。未検証の解析処理へ全アーカイブを送っても、最初の誤った前提に関する証拠は増えず、修正作業だけが増えます。

単一の精度値ではなく受け入れ表を使う

次の表は仕入先文書向けの編集上の提案です。実際の許容値は取り込み先システムの責任者と決めます。Suryaの実測結果を記入した表ではありません。

確認保存する証拠却下または人の確認へ送る条件
重要な識別項目元画像の切り出し、参照転記、抽出値一文字の違いで仕入先や支払いの参照番号が変わる。
読み順読み順を付けた元の領域と出力ブロック列が混ざる、または注記が別の節に付く。
表の関係見出し、行ラベル、数量、金額を一緒に保存正しい数値が別の品目に結び付く。
欠落ページ数、含まれるはずの領域、出力状態ページ、継続行、脚注が警告なく消える。
取り込み先の動作元のページへのリンクを持つ取り込み済みの記録不確実性や出典情報が失われる。

重大な誤りと見た目の差を分けます。改行の変化は検索では無害でも固定帳票では拒否条件になり得ます。この区別を結果を見てから即興で決めず、受け入れ方針に書きます。次の確認者も同じ基準を使えるよう、各分類の理由を記録します。成功ページの実行時間だけでなく、修正して受理するまでの人の作業も測ってください。入力作業が減っても元ページを何度も探す必要があれば、工程全体は遅くなる可能性があります。失敗も含め、修正済みの記録が受理されるまでの時間を測り、標本を単なるモデル実演ではなく運用判断に使います。

起動時間と処理時間を分けて測る

現在の文書はNVIDIA GPU向けvLLMと、CPUまたはApple Silicon向けllama.cppを説明しています。Pythonパッケージだけでなく、推論を実行するプロセスも必要です。評価記録にバックエンドを明記してください。「手元の環境で動いた」だけでは機器とソフトウェアの構成を十分に示せません。推論バックエンドの文書

設定ファイルには、モデルのキャッシュ、接続先、サーバーの起動と停止に関する設定がそれぞれあります。ローカルで実行したコマンドが遠隔サーバーへ接続する場合があり、初回にはモデルのダウンロードが必要な場合もあります。オフラインまたは機密文書向けと呼ぶ前に、実際の通信動作と文書の流れを確認してください。推論設定

環境の初回起動、起動済み環境でのページ処理、出力の変換、人による修正を分けて記録します。同じ標本で比較し、失敗も時間と共に報告します。起動済み環境での実行が速くても、文書ごとに新しい環境を起動する定期処理の挙動は分かりません。

解像度や同時処理数は一度に一つだけ変え、毎回小さい文字と難しい表を再確認します。処理全体を観察し、メモリ不足や切り詰められた出力がないか確かめます。新設定が同じ受け入れ表に合格するまでは旧設定を残します。仕入先の小数点記号を失う高速化は、有用な最適化ではありません。

再試行する前に壊れた段階を特定する

元ページ、生の結果、取り込み済み記録を一緒に見ます。生の結果ですでに文字が誤っているなら、データベースへの項目の対応付けを変えても認識は直りません。生の結果が正しく、取り込み後に行が混ざるなら、モデルを再実行しても解析処理の不具合は直りません。

症状最初の調査変更後に観察する確認
何も取り込まれない想定するデータ構造、生の結果、エラーを示すフラグを比較内容があると分かっているページから想定した記録が作られ、エラーの状態も残る。
文字は読めるが意味が変わる列の順序と、見出しから値への対応関係を追跡各値を意図した元の領域までたどれる。
小さい文字がない元画像の切り出しと実際に認識へ渡した画像を比較同じ領域が入力で読め、出力にも正しく現れる。
処理速度が大きく変動する起動、バックエンドの処理能力の限界、変換時間を分離失敗ページを除外せず差を説明できる。
新版で以前の文書を正しく処理できない固定したバージョン、設定、出力仕様を比較以前の受け入れ用標本と新たな問題例が、運用へ反映する前にどちらも合格する。

曖昧な元文字を、もっともらしい推測で黙って補わないでください。不確実性を残すか、人の確認へ送ります。流暢な出力によって、原本ではほとんど読めなかった値まで正しいと信じてしまう場合があるためです。

証拠から次の方法を選ぶ

元のPDFに利用可能な文字と構造がある場合は、OCR追加前に直接抽出を比較します。難しい手書きや不規則な表を含む小規模文書群なら、人が確認しながら転記する方が、大がかりなシステム連携よりも管理しやすい場合があります。これは別の方法であり、特定の競合モデルが優れるという主張ではありません。

外部の文書処理サービスを利用する方法は、Suryaを自分たちで運用する方法とは別の選択肢です。現在の規約、データ保持の管理方法、出力仕様、確認作業全体の負担を独立して評価します。関連モデルを使うサービスでもリポジトリと同一ではなく、手元の環境でのテスト結果をそのまま適用できません。

評価の成果として残すべきものは、処理対象にできる文書、確認が必要な項目、自動取り込みを止める失敗条件を明記した運用基準です。保持規則に従って却下例を回帰テスト用の標本として保存し、パッケージ、チェックポイント、バックエンド、解析処理の変更時に再実行します。

本評価は、全言語での精度、本番運用でのプライバシー要件への適合、人の確認を介さない請求書処理を保証しません。対象業務に合うかを試す方法を示します。他カテゴリはモデル一覧から探せますが、同じ情報源の確認と受け入れ基準を適用してください。

よくある質問

Surya OCRを組み込む前に何を確認しますか?

パッケージのバージョン、モデル、接続先またはローカルの推論バックエンド、設定、想定する出力のデータ構造を記録し、人が用意した参照用の標本で試します。

Surya OCR全体がApache 2.0の対象ですか?

いいえ。確認したコードはApache 2.0の対象ですが、モデル重みには追加条件のある修正版OpenRAIL-Mが適用されます。導入する具体的なコードとモデル重みの条件を確認してください。

文字列が正しければ文書抽出も正しいと言えますか?

いいえ。読み順、ブロック同士の関係、表、処理の省略、エラーによって後続処理が成立しない場合があります。アプリケーションが利用する構造を確認してください。

このページでは性能試験を行いましたか?

いいえ。情報源に基づく評価であり、対象文書の精度、速度、機器の要件、確認作業の量を実測していません。