OCRとは:認識した文字と検証済みの文書データの違い

OCRとは光学文字認識の略で、画像に写っている文字を機械で読み取れるテキストに変換する処理です。スキャンしたページを検索可能にしたり、後続の処理に使うテキストを生成したりできます。認識した文字は、引き続き確認が必要です。OCRは、文書の真正性、フィールドの意味、現実世界に関する主張を検証するものではありません。

スキャンはページの見た目を記録します。OCRは、そこに示された語句や記号の候補を出力します。続くフィールド抽出では、そのテキストの一部を参照番号や金額など、名前の付いた値に割り当てます。これらの段階を分けることで、誤りが最初に記録に入り込んだ場所を特定しやすくなります。

文書のスキャン後にOCRが行うこと

スキャナーやカメラは画像を生成します。認識処理はテキストの候補を見つけ、見た目のパターンを文字に変換します。システムによっては、レイアウト処理によってテキストを読む順番に並べることもできます。これらは別々のタスクです。文字自体が正しくても、順序が違えば帳票や表の内容を誤って表すことがあります。

デジタルで作成された文書には、すでに選択可能なテキストが含まれている場合があります。一方、画像だけのスキャンは、文字の見た目を示すだけで、対応するテキストデータを持ちません。認識処理が必要かを決める前に、原文を確認します。既存の選択可能なテキストにも欠落や順序の誤りがあり得るため、その存在だけでは正確な抽出を保証できません。

画像のぼけ、薄い印字、傾き、重なった印は、証拠を失わせたり、判別を難しくしたりします。画像の補正は確認者の読解に役立つ場合がありますが、コントラストを変えても、よく似た2つの文字のどちらが意図されていたかは確定しません。原文の画像と、認識に使った加工後の画像を両方保持します。

関連情報:PDF 表 抽出:再利用の前に見出し・セル・原文の根拠を保持する。

OCRで検索可能なテキストと検証済みの文書データの違いは何ですか?

検索可能なテキストは、ソフトウェアが認識された語句を見つけられるようにします。意味に基づく抽出は、その値がどのような役割を持つかを判断します。検証は、候補の値を権威ある情報源や定められた受け入れ基準と照合します。金額を含む文字列が問題なく検索できても、別の行に属している可能性があります。

文書AIのガイドは、フィールド抽出と証拠の確認を扱っています。請求書データの抽出では、請求書に特有の計算確認と例外処理を加えます。ここで扱うのは、そうした後続のタスクに進む前に、認識テキストが目に見える文字を保持しているかという、より限定した問題です。

購入メモの文字起こし演習

スキャンを文字入力で再現し、意図的に誤った文字起こしを示したものです。2つのブロックはいずれも架空です。最初のブロックは、想定した原文で確認者が読み取れる内容を表しており、アップロードされた画像ではありません。2つ目は認識エラーを説明するために作成したもので、OCRエンジンからコピーした結果ではありません。

購入メモ P-A — 第1版
上部のラベル:品目参照番号 O0-17
中央のラベル:数量 2
下部のラベル:記載金額 18.50
最下部のラベル:配送先 Depot O
余白の注記:通貨の記載なし
誤認識テキストの例
品目参照番号 00-17
数量 2
記載金額 185.0
配送先 Depot 0
通貨の記載なし

原文の参照番号は、意図的に大文字のOと、その後に続く数字のゼロで始まっています。認識候補では、大文字がもう1つのゼロに置き換わっています。金額では小数点が移動しています。どちらの誤った文字列も、表面的な形式確認には通ってしまうほど、もっともらしく見えます。

手動で付けた原文の位置情報により、読み取りと確認を区別します
原文の切り出し箇所認識テキストフィールドの候補この演習での手動確認
P-Aの上部ラベル00-17item_reference = 00-17読み取りを却下します。文字入力で示した原文はO0-17です。
P-Aの中央ラベル2quantity = 2作成した数量の行と一致します。
P-Aの下部ラベル185.0stated_amount = 185.0小数点の位置が誤っているため却下します。原文の記載は18.50です。
P-Aの最下部ラベルDepot 0delivery_point = Depot 0末尾の文字が誤っているため却下します。原文の記載はDepot Oです。
P-Aの余白通貨の記載なしcurrency = unknown不明のままにします。金額だけでは通貨の根拠になりません。

切り出し箇所の参照は、人が作成した確認用の位置情報です。OCRコンポーネントがバウンディングボックスやページ座標を返したことを意味しません。実際の原文では、確認者が利用できる証拠に基づいて、確認可能なページと領域の参照を記録します。

修正した参照番号を受け入れても、確認できるのはこの原文の行と一致することだけです。在庫システムにその参照番号が存在することは検証できません。同様に、印字された金額が18.50だと確認しても、それが支払うべき金額か、計算が正しいか、特定の通貨で表示されているかは証明できません。

形式が正しく見える文字列でも誤り得る理由

185.0も18.50も、小数として解釈できます。そのため、数値パーサーだけでは、原文に印字されていた値を判断できません。参照番号の形式ルールも、O0-17と00-17の両方を受け入れる場合があります。表記の妥当性と原文への忠実さは、分けて検証します。

表では、行と列の対応関係を確認します。数量が別の品目の参照番号の横に移ると、認識した文字がすべて正しくても、候補のレコードは誤った内容になります。ページを追跡不能な値の一覧に平坦化せず、確認時に原文のラベルと位置を参照できるようにします。

不確かなテキストを、モデルが作ったもっともらしい補完で置き換えないでください。原文が本当に読めない場合は、読み取りが未解決であると記録し、別の原文や権限のある人からの確認を得ます。この演習で文字の修正が可能なのは、架空の原文に文字が明示されているためです。

AI Flowi WorkflowのRead File

カタログのリファレンス内のRead Fileの項目では、ocr_engineの選択肢として"None"と"easyocr"、pipelineの選択肢として"standard"と"vlm"が公開されています。このインターフェースはカタログに文書化されていますが、Ai Flowiによる本番環境でのテストは行われていません。

これらの正確な選択値は設定を識別しますが、エンジンのインストール状況、対応形式、文字の読み取り成功を示すものではありません。選択方法はファイル管理のドキュメントで説明されています。P-Aでは、調べる設定がどれでも受け入れ確認は同じです。候補の参照番号は、大文字のOに続くゼロを保持しているか。金額は原文の小数点の位置を保持しているか。エンジン名だけでは、どちらの比較にも答えられません。

後からモデルを使った抽出を行う場合、必要に応じてご自身のプロバイダーアカウントとAPIキーを用意してください。プロバイダーの利用料金は別途請求されます。この文字入力による比較を行うのに、モデルの呼び出しや、読み取りと抽出を組み合わせた設定は必要ありません。

OCRでよくある誤りと関連用語

アップロードの成功をテキストの可読性と、読みやすいテキストを正確な文字認識と、構造化された結果を検証済みの事実と同一視しないでください。生の認識結果、フィールドの候補、確認済みの値を区別します。原文の版が変わった場合は、以前の確認を引き継がず、比較をやり直します。

コンピュータービジョンは、より広い画像関連のタスクを扱います。データアノテーションは正解データの判断を説明し、自然言語処理は、読める言語データが得られた後の解釈を扱います。OCRだけを根拠に支払いを承認したり、争いのある文書の主張を確定したりしてはいけません。

執筆:Ai Flowi · 公開日