本文へスキップ
kenjtecJournal
Journal内を検索

請求書PDFから使えるデータへ:AI OCRが本当に提供すべきもの

数字を正しく読み取ることは始まりにすぎません。合成した請求書と小さな小数計算を通じて、OCRがどのように追跡可能なデータレコードになるかを示します。

ハンネが長い伝票を粘土の器の横に置いている。赤い器が一つ、空のままになっている。AIによるイラスト。

すべての数字が認識されました。それでも、小計が最終金額としてデータレコードに入ってしまいます。このような誤りは整然として見えます。有効なJSON、入力済みのフィールド、赤いエラーメッセージもありません。欠けているのは、数値、ラベル、表の行の間の関係です。

Mistralの OCRドキュメント では、とりわけ構造化テキスト、表形式、ブロック座標について説明されています。 Document Annotations を使うと、さらに情報をあらかじめ定義したJSON形式に変換できます。これらの構成要素は、文書からアプリケーションに至る経路のそれぞれ異なる部分を解決します。

一つのフィールドに関わる四つのレベル

まず、文字を読み取る必要があります。次に、アプリケーションにはその位置と順序が必要です。その後、値がどのフィールドを表しているかを認識しなければなりません。最後に、事実上の関係が加わります。最終金額は、例に示された明細行と記載された割引に合っているでしょうか。

これらのどのレベルで誤りが起きても、結果として同じ誤った数値になりえます。そのため、完全なテキスト出力だけでは十分な品質指標になりません。重要な値については、それが見つかった場所へたどり戻れる道筋を残しておくべきです。

これは必ずしも手の込んだ図形的なマーカーである必要はありません。文書識別子、ページ、曖昧さのないフィールドの説明だけでも役立ちます。座標を使う場合は、正しいページとレンダリングに対応していなければなりません。文書のバージョンが明確に特定されていない矩形は、それ自体が後に混乱の原因となりえます。

内容がわかっている請求書を作成する

扱いやすいテストのために、明細行が二つある独自のPDFを設計します。品目Aは単価十ユーロで二個、品目Bは十五ユーロで一個です。その下に五ユーロの割引と三十ユーロの最終金額があります。注文番号は意図的に記載していません。これらの数値は技術的な説明のためだけのものであり、税務上のひな形ではありません。

抽出の前に、期待される値とその位置を記録しておきます。二つ目のバージョンでは、レイアウトだけを変更します。割引と合計を明細行の近くに配置します。そうすれば、後で割り当てがラベルに基づいているのか、偶然の位置に頼っているのかを見分けられます。

まず、適切な外部のOCR経路でテキストと構造を出力させます。後続の抽出では、最終金額、通貨、注文番号、文書内の位置を出力するようにします。欠けている注文番号は「不明」として保持します。でっち上げた代わりの番号は、たとえ出力形式を完全に埋めるとしても誤りです。

モデルの外で行う小さな事実確認

合成例の単純な算術関係は、独立して確認できます。このような小数の金額には、二進浮動小数点数ではなく、たとえばDecimalを使います。私たちが作成したこのPythonの例は、私たちが定義した教材用の計算だけを確認します。

from decimal import Decimal

positionen = [
    (Decimal("2"), Decimal("10.00")),
    (Decimal("1"), Decimal("15.00")),
]
rabatt = Decimal("5.00")
ausgewiesen = Decimal("30.00")
berechnet = sum((menge * preis for menge, preis in positionen), Decimal("0")) - rabatt
assert berechnet == ausgewiesen

算術チェックに合格しても、ここで使われた数値が互いに整合していることを示すにすぎません。OCRがこれらの数値を正しい文書から取得したことを証明するものではありません。そのため、算術チェックと出典の確認は、二つの別個の手順のままです。

実際のアプリケーションでは、特定の文書タイプの規則にも従う必要があります。税金、端数処理、通貨、特殊なケースは、この簡略化した請求書からは導き出せません。ここでの課題は、既知の割り当てを追跡可能な形で転記することだけです。

不確実性は受け渡しの取り決めに含めるべきです

判読できない数字や矛盾があった場合にどうするかを明示的に定めてください。データレコードには、値、それが見つかった場所、確認状況を含めることができます。そのうえで、確認済みの転記だけが、意図された次の手順を起動します。

適切な指示の例:「欠けている情報を補わないでください。転記するすべての金額について、ラベルの付いたフィールドを参照してください。矛盾する合計は別途記録してください。作成するのはプレビューのみとし、会計仕訳は作成しないでください。」

したがって、具体的なテストは単にPDFを読み取るだけにとどまりません。文字、構造、フィールドの意味、既知の関係をそれぞれ別々に確認します。まさにこれによって、整然として見えるだけでなく原本にたどり戻れるデータへの、使える経路が生まれます。

情報源と状況

2026年十月25日時点の情報源です。 Document AI OCR processor · Document Annotations。

出発点はハンブルクです。

役立つ知識は、どこへでも。

ハンブルク発、世界に向けたAI実践ガイド。

保存済み記事