メインコンテンツへスキップ
この記事では、請求書の主要なfieldsがどのように検出され、抽出されるかを説明します。 プログラムは、Document Definition の設定に従ってテキストを認識することで、請求書の処理を開始します。
  • 認識モード (Fast, Balanced, Normal, or Accurate) は、認識速度と、その結果得られるテキストレイヤーの品質を決定します。認識モードを指定するには、Document Definition Editor で Document Definition → Document Definition Properties… → Recognition をクリックします。
  • 認識言語 は、認識に使用する言語です。認識言語を指定するには、Document Definition Editor で Document Definition → Document Definition Properties… → Document Definition Settings をクリックし、次に 国と言語一覧 グループで Edit をクリックして必要な言語を選択します。
Recognition languages in FlexiCapture for Invoices are tied to the country settings. When you add an invoice country to the Countries and Languages group, the corresponding languages automatically appear in the Document Definition settings. Invoice fields are extracted upon recognition.
請求書上のfieldsを検出して抽出するために、プログラムは次を使用できます。 どちらの方法についても、両方の方法で得られた結果を組み合わせる、または最適な結果を選択するアルゴリズムと併せて、以下で説明します。

FlexiLayout の使用

事業部門とベンダー

以下を使用して、ベンダーと事業部門を特定できます。
  • Document Definition の設定: IBAN (国際銀行口座番号) 、VATID、NationalVATID の書式、および対応するキーワード
  • データ セット レコードのfields: IBAN (国際銀行口座番号) , VATID, NationalVATID, Name, 住所, 市区町村, 郵便番号。
Data setsBusinessUnits および Vendors 列の詳細と使用方法については、BusinessUnits データ セットおよび Vendors データ セットを参照してください。

自動会社検出アルゴリズム

データ セットの列に入力された情報の詳細度と品質は、検出品質に大きな影響を与えます。検索結果をできる限り正確にするために、以下の点を確認してください。
  • 一意の会社識別子が入力されていること。 一意の値を持つ列 (VATIDNationalVATIDIBAN) を入力すると、これらの値は各会社に固有であるため、正しく検出される可能性が大幅に高まります。
  • 会社レコードに重複がないこと。 重複するレコードがないと、会社を正しく検出できる可能性が高まります。詳しくは、外部データベース内の重複レコードを削除するを参照してください。
  • 無関係なレコードが含まれていないこと。 データ セットに古いレコードや無効なレコードが含まれていると、さまざまなフィールド値が偶然似ているために、会社が誤って検出される可能性があります。
  • すべての会社レコードで、すべてのfieldが入力されていること。 会社に関する情報は、できるだけ多く指定してください。入力されているfieldが多いほど、会社を正しく検出できる可能性が高くなります。
  • 複数値列は、表記の異なる同じ情報を保存するために使用し、まったく別の情報を保存するためには使用しないでください。 たとえば、1 つの会社に複数の住所がある場合は、他のすべてのfieldに同じ情報が含まれていても、住所ごとに個別のレコードが必要です。詳しくは、ベンダーおよび事業部門データベースの準備を参照してください。
自動ベンダーおよび事業部門検出アルゴリズムは、次のステップで構成されています。
1

一意の識別子の検索

次の field は、一意の会社識別子と見なされます。
  • VATID
  • NationalVATID
  • IBAN
FlexiCapture for Invoices は、上記の値を文書画像内で検索します。Document Definition のプロパティ (Document Definition Settings タブの 国と言語一覧 グループ) では、各国について VATIDNationalVATIDIBAN の形式 (Formats タブ) とキーワード (Keywords タブ) が正規表現を使用して設定されます。
キーワードと識別子の形式を正しく設定すると、検出品質が大幅に向上します。
プログラムは、こうした field について画像上で完全一致を検索します。拡張正規表現を使用することで、正規表現に起こり得る認識エラーも考慮させることができます。詳しくは、拡張正規表現を参照してください。
ABBYY FlexiCapture for Invoices にはあらかじめ用意された正規表現がありますが、必要に応じて独自に作成することもできます。その場合は、Document Definition Settings タブの 国と言語一覧 グループに移動し、該当する国を選択して Edit… をクリックします。
検出された値は、次のように正規化されます。
  • 英字は大文字に変換されます。
  • スペースと次の文字は削除されます: ., ,, , /, \\.
field の英字プレフィックスが、Formats タブの国のプロパティで正規表現を使用して指定されている場合、認識されたプレフィックスは主要プレフィックス (これも Formats タブで設定) に置き換えられます。たとえば、識別子 DE12345OE12345 と認識されることがあります。この場合、検出されたプレフィックス OE は正しいプレフィックス DE に置き換えられます。文書画像で検出された VATID、NationalVATID、IBAN の field は、データ セット を照会するために使用されます。データ セット から取得した VATID、NationalVATID、IBAN 列の値は、画像で検出された値と同じ方法で正規化され、その後、画像で検出された正規化済みの値と照合されます (完全一致を使用) 。
2

会社名と住所の検索

文書全体のテキストを使用して、それに最も正確に一致するレコードを検索するクエリが データ セット に送信されます。画像上で検出された NameStreetZIPCity の値は、対応する データ セット のレコードの値と照合されます。
可能な限り最適な名前および会社の検索結果を得るには、対応する データ セット の列に値が入力されていることを確認してください。会社名と住所の情報は、VATIDNationalVATIDIBAN を使用して会社を識別できない場合に特に重要です。
3

仮説の形成

前の手順で見つかった会社を使用して、一連の仮説が形成されます。ABBYY FlexiCapture for Invoices はこれらの仮説を評価し、文書画像上の field 値と最も高い信頼性で一致する 5 件のベンダー レコードと 5 件の事業部門レコードを選択します。これらのレコードから 25 個のベンダー–事業部門の組み合わせが作成され、各組み合わせは個別の仮説として扱われます。次に、ニューラル ネットワーク アルゴリズムが仮説を信頼性に基づいて評価し、最も適合するベンダー–BU の組み合わせが最終仮説となり、ベンダーと事業部門の検出結果になります。
ベンダー データベースのみが接続されている場合、ベンダー–BU の組み合わせ評価の品質に悪影響が及ぶ可能性があります。事業部門の検出が不要な場合でも、事業部門データベースを接続することをお勧めします。詳しくは、ベンダー データベースと事業部門データベースの使用を参照してください。
事業部門の数がごく少ない場合 (たとえば 1 つ) 、そのようなデータベースを接続しても評価に大きな影響はありません。ただし、事業部門が誤ってベンダーとして検出されている場合には、検出品質が向上することがあります。

仮説のフィルタリング

仮説は、マッチングの信頼性 (データ セットのレコードと文書画像のfield値の一致度) に基づいて、次のように分類されます。
  • 文書画像と高い信頼性で一致する
  • 文書画像と低い信頼性で一致する
検証シナリオに応じて、ベンダーと事業部門の検出時に仮説の信頼性を考慮するかどうかを決定できます。ABBYY FlexiCapture for Invoicesで最終仮説を信頼性の高い仮説のみに限定して選択するには、InvoiceReader/ShouldFilterUnsureCompanyHypotheses レジストリ フラグを使用します。設定可能な値は次のとおりです。
  • true — フィルタリングが有効になり、最終仮説は信頼性の高い仮説からのみ選択されます (既定) 。
  • false — フィルタリングが無効になり、最終仮説は信頼性に関係なく、すべての仮説から選択されます。
仮説のフィルタリングの動作は、ベンダーと事業部門で異なります。
  • ベンダーを検出する場合、信頼性の低い仮説は考慮されません。信頼性の高い仮説がない場合、ベンダーは検出されません。
  • 事業部門を検出する場合:
    • 少なくとも1つの信頼性の高い仮説が見つかった場合、信頼性の低い仮説は考慮されません。
    • 仮説のセットに信頼性の高い仮説が1つも含まれていない場合、フラグの値は無視され、最終仮説は信頼性の低い仮説から選択されます。
これは、ベンダーと事業部門のデータ セットの違いによるものです。
  • 通常、事業部門のレコード数はベンダーのレコード数より大幅に少なくなります。また、変更頻度もはるかに低いため、最新の状態に保ちやすくなります。そのため、信頼性の高い仮説を検出できた場合は、最終仮説が正しい可能性が高まります。ただし、信頼性の高い仮説が見つからなかった場合でも、事業部門の検出は重要です。これは、検出結果の信頼性を左右する最も重要な要因が、ベンダーとBUのペアの信頼性評価であるためです。
  • 通常、ベンダーのレコード数ははるかに多く、ベンダーは請求書上で事業部門よりも自社に関する多くの情報を記載するため、データ セットにはより多くの列が含まれます。また、レコードに古い情報が含まれていることもあるため、信頼性の低い仮説のフィルタリングは、データ セットの品質と検証シナリオの種類の両方に依存します。
信頼性の高い仮説が検出される可能性を高めるには、データ セットを最新の状態に保ち、ベンダーと事業部門に関する情報をできるだけ多く含めてください。

ベンダーと事業部門の検出結果

請求書でベンダーと事業部門を検出した主な結果は、次のとおりです。
  • Vendors データ セット内のベンダー レコードの識別子
  • BusinessUnits データ セット内の事業部門レコードの識別子
Vendors データ セットで Id が BusinessUnitId に依存すると指定されている場合 (Vendors データ セットを参照) 、ベンダー検出の結果には、BusinessUnitId に対応する Id が含まれます。
事業部門が不確実に検出されることがあります。この場合、ドキュメントの registration parameter fc_Predefined:InvoiceIsVendorSuspicious (fc_Predefined:InvoiceIsBusinessUnitSuspicious) が true に設定されます。 ベンダーおよび事業部門の検出結果として、次の field の region が見つかることがあります。
  • ベンダーの場合: Name、VatID、NationalVatID、IBAN、Street、Zip、City。
  • 事業部門の場合: Name、VatID、Street、Zip、City。
これらの region が画像上のどこにあるかを確認することで、プログラムが Vendor および Business Unit の field グループの field をどこで見つけ、それによってベンダーと事業部門を検出したのかを正確に把握できます。
Vendors データ セットに IBAN および VATID の field values がない場合は、銀行情報を検出するのと同じように、キーワードと形式を使って適切な値を検出できます (対応するベンダーが見つかっている場合) 。
任意の field region の検索は、トレーニングまたは additional FlexiLayout の適用によって変更できます (Capturing additional invoice fieldsを参照) 。これはベンダーおよび事業部門の検出には影響しませんが、Document Definition と請求書のマッチング後に、これらの field グループ内の field region の位置へ影響する可能性があります。
ベンダーと事業部門の検出における重要な結果の 1 つは、それぞれの国に関する情報が、データ セット で見つかった records の CountryCode field から取得されることです。この情報は、その後、キーワードと税率の選択、他の請求書 field の抽出、および請求書のバリデーションルールを開始する条件として使用されます。

プログラムによるベンダーまたは事業部門の検出方法を変更する方法

データ セット内のベンダーまたは事業部門のレコードが、請求書画像から抽出されたテキストによく一致するほど、プログラムはベンダーまたは事業部門をより正確に検出できます。 まず、請求書上の会社を見つけるために使用されるデータ セットの列に対応する、外部データベース内のデータを特定します。外部データベースとデータ セットは適切に接続されている必要があります。詳細については、ベンダー データベースと事業部門データベースの使用を参照してください。 同じ会社がベンダーの一覧と事業部門の一覧の両方に存在する場合は、両方のデータ セット内の対応するレコードに同じVATIDを指定してください (請求書にVATIDがない場合でも) 。これにより、プログラムがベンダーと事業部門を誤って検出するのを防ぐことができます。 画像上のfield値に生じる可能性のあるばらつきを補うには、次を使用します。

事前に設定したベンダー値と事業部門の値を使用する

請求書の会社に対応するベンダーまたは事業部門は、請求書のソース (Scanning Operator の名前またはメッセージ送信者のメール アドレス) に基づいて事前に特定できます。 自動検出の前に、ベンダーまたは事業部門を明示的に指定することもできます。そのためには、ドキュメントの registration parameter fc_Predefined:InvoicePredefinedVendorId (fc_Predefined:InvoicePredefinedBusinessUnitId) の値を、Vendors または BusinessUnits データ セット内のエントリの識別子 (Id) に設定します。 これを設定しても、ベンダーまたは事業部門の自動検出は無効になりません。その結果、事前に設定したベンダーまたは事業部門に加えて、信頼度値 (事前に設定した値が画像から抽出された値とどの程度一致しているかを示す値) と、Vendor および Business Unit の field グループに含まれる field の region も取得されます。

請求書ヘッダー field グループ

InvoiceNumber and InvoiceDate

請求書のヘッダーには、InvoiceNumber fieldや InvoiceDate fieldなどが含まれます。 これらのfieldは、Document Definition の言語プロパティで指定されたキーワードを使用して検出されます。まずベンダーと事業部門が検出され、それによりそれぞれの国に関する情報が得られます。国によって言語が決まります (国に対応する言語は Document Definition で指定されます) 。fieldを見つけるためのキーワード セットは、ベンダーと事業部門の国に基づいて決まります。 キーワードを編集し (Keywords を参照) 、学習を使用することで (Training ABBYY FlexiCapture for Invoices を参照) 、プログラムによるfield 領域の検索方法を変更できます。

プログラムは、ドキュメントが請求書であることをどのように判断しますか

FlexiCapture は、FlexiLayout を適用するときに、ドキュメントが請求書かどうかを判断します。 以下の条件は、ドキュメントが請求書であることを示します。これらの条件をすべて満たす必要はありませんが、それぞれに一定の重みがあります。
  • InvoiceNumber fieldと InvoiceDate fieldが検出された。
  • InvoiceIdentifiers located element のキーワードが検出された (Keywords を参照) 。
  • ドキュメント上でベンダーまたは事業部門が検出された。
画像上で CreditNoteKeyword element のキーワードが検出された場合、またはドキュメントの合計金額が負の場合、ドキュメントはクレジット ノートとして識別されることがあります。

Amounts field グループ

FlexiCapture for Invoices は、請求書から次の field を抽出します。 Document Definition の情報は、合計金額と税率を見つけるために使用されます。
  • ベンダーの国で適用される税率 (国のプロパティの Tax Rates タブで指定できます。詳細は Country and language settings を参照してください) 。
  • 税率のキーワード (言語のプロパティの Keywords タブで指定できます。詳細は Keywords を参照してください) 。
プログラムは、画像上で最大 2 つまでの税率を見つけようとします。請求書に 3 つ以上の税率がある場合は、追加フィールドを作成し、データ フォームで手動入力できます。 プログラムは、TotalTax field と TotalNetto field を検出するためにキーワードを使用します。これらのキーワードは、用途に応じて国または言語のプロパティで指定できます (詳細は Country and language settings を参照してください) 。キーワードの詳細については、Keywords を参照してください。 Total field 用のキーワードには 2 種類あり、それぞれ異なるカテゴリにあります (Located element categories の詳細については、Keywords を参照してください) 。
  • AmountTotalHighConfidenceLabels: Total field の近くにのみ現れるキーワード。たとえば、「Pay this amount.」などです。
  • AmountTotalLowConfidenceLabels: Total field の近くに現れることがありますが、他の field の近くにも現れる可能性があるキーワード。たとえば、キーワード「Total」は Total field の近くに現れることがありますが、請求書上のすべてのアイテムの総重量を含む field の近くに現れることもあります。
これら 2 つのカテゴリのどちらにキーワードを追加すべきか迷う場合は、AmountTotalHighConfidenceLabels に追加してください。そのキーワードによってプログラムが別の field を Total field として認識してしまう請求書が見つかった場合は、AmountTotalLowConfidenceLabels に移動できます。
キーワードに加えて、プログラムは Total field の検出時に次のアイテムも探します。
  • 画像上で同じ行または列に 2 回または 3 回現れる数値。このような数値は、税が指定されていない請求書では Total である可能性があります。
  • 同じ列内で、その上にある数値の合計になっている数値。
  • ドキュメントの末尾にある、絶対値が最も大きい数値。
プログラムは、Total field が検出された場合にのみ Currency field を検索します。Document Definition 内の国のプロパティにあるキーワードが使用されます。 Amounts field グループ内で画像上から検出できなかった field は、画像上で検出されなければならない Total field を除き、自動的に計算されます。 プログラムが Amounts field グループの field から情報を正しく抽出できなかった場合、Total field には検証が必要であることを示すマークが付きます。 プログラムが Total field と Currency field を高い信頼度で検出できない場合、またはまったく検出できない場合は、学習を使用して抽出品質を向上させることができます。

購買注文書 field グループ

FlexiCapture for Invoices では、請求書からすべての購買注文書番号と対応する金額を抽出できます。 この機能は既定で無効になっています (購買注文書とのマッチング を参照) 。 購買注文書番号を抽出するには、候補となる購買注文書番号とその金額の一覧を含むデータ セットが必要です (PurchaseOrders data set を参照) 。 購買注文書 field は、次の方法で抽出できます。
  • 正規表現
  • 候補となる購買注文書番号を含むデータ セット (PurchaseOrders data set を参照)
候補となる購買注文書番号を含むデータ セットを使用する場合、FlexiCapture for Invoices はこのデータ セット内の番号を画像から検索します。データベース内の購買注文書番号は、できるだけ少なくしておくことをお勧めします。数を減らすには、次の方法があります。
  • データ セットの VendorId 列を使用します。この場合、プログラムは請求書のベンダーに対応する購買注文書番号のみを使用します。
  • すでに請求書を受領している購買注文書を除外し、まだ請求書を受領していない購買注文書の番号だけを追加します。
プログラムは、検出された購買注文書番号に対応する金額をデータベースから検索します。また、請求書の明細内のものを含め、画像内にあるすべての購買注文書番号も検索します。 購買注文書は通常、購入者の ERP システムで生成されるため、特定のビジネス ユニット宛ての請求書は似た形式になる傾向があり、通常は正規表現で表現できます。購買注文書番号の正規表現がある場合、プログラムはその式に一致する画像上のすべての番号を検出します。正規表現は、次のタグを使用して XML 構成ファイルで指定できます。
XML 構成ファイルの詳細については、XML ファイルで請求書処理設定を編集するを参照してください。

明細 field グループ

FlexiCapture for Invoices では、画像から請求書の明細を抽出できます。 請求書の明細の抽出は既定で無効になっています (追加フィールドを参照) 。 プログラムが自動的に抽出するフィールドの一覧については、抽出されたフィールドを参照してください。 FlexiCapture for Invoices は、まず画像内のテーブルを検索します。この検索では、Document Definition のプロパティで各言語に対して指定された列タイトルのキーワードを使用します。請求書の明細の列に対応するキーワードは、アイテムの分類、つまり各明細列の種類を判定するためにも使用されます。 その後、プログラムは検出された列に関する情報と数式を使用して、請求書のテーブル内から明細を見つけます。最後に、明細内で各列に対応するフィールドを検索します。 自動的な明細抽出の品質を向上させるために、学習を使用できます。

ニューラル ネットワークの使用

ニューラル ネットワークの主な利点の 1 つは、自己学習できることです。入力データ間の複雑な依存関係を検出し、有用な一般化を行うことができます。 プログラムには、次のフィールドを抽出するために使用できる 2 つのニューラル ネットワークが含まれています。
  • InvoiceNumber
  • InvoiceDate
  • Total
  • Vendor\Name
  • Vendor\Address
  • Business Unit\Name
  • Business Unit\Address
  • Purchase Orders\Order Number
  • LineItems:
    • OrderNumber
    • OrderDate
    • Position
    • ArticleNumber
    • Description
    • Quantity
    • Unit of measurement
    • Unit Price
    • Total Price Netto
    • VATPercentage
最高の精度を実現するために、プログラムは請求書 field の抽出に FlexiLayout とニューラル ネットワークの両方を使用します。ニューラル ネットワークで抽出できなかった field は、FlexiLayout を使用して抽出されます。ある field をニューラル ネットワークと FlexiLayout の両方で抽出できる場合、プログラムはそれらの結果をインテリジェントに組み合わせます。結果の組み合わせ方は、field によって異なります。詳細については、フィールド検出結果の組み合わせを参照してください。

ニューラル ネットワークを無効にする

既定では、ニューラル ネットワークは文書のfieldを抽出する第 2 の方法として使用されます。請求書プロジェクトで請求書以外の文書も処理する必要がある場合は、ニューラル ネットワークを無効にすることをお勧めします。これは、ニューラル ネットワークが請求書のfieldを抽出するように特化して学習されているため、他の種類の文書では十分な性能を発揮しない可能性があるからです。 明細グループのニューラル ネットワークを無効にするには:
1

Document Definition Editor を開く

Document Definition Editor を開きます。
2

追加フィールドと機能を開く

Document Definition Properties… → Document Definition Settings → Additional Fields and Features をクリックします。
3

オプションを無効にする

Thorough extraction of invoice line items オプションを無効にします。
請求書ヘッダー、ベンダー、ビジネス ユニット、購買注文書の各グループのニューラル ネットワークを無効にするには:
1

Document Definition Editor を開く

Document Definition Editor を開きます。
2

追加フィールドと機能を開く

Document Definition Properties… → Document Definition Settings → Additional Fields and Features をクリックします。
3

オプションを無効にする

Thorough extraction of invoice header fields オプションを無効にします。

field 検出結果の組み合わせ

プログラムが field 検出結果をどのように組み合わせるか、または最適な結果をどのように選択するかは、field によって異なります。一般的には、各ニューラル ネットワークで得られた結果が優先されます。この原則の例外となるのは、データ セットに基づく検索と、特定の顧客文書用に作成された正規表現を使用する検索です。 請求書ヘッダー field グループ 次の field では、ニューラル ネットワークで得られた結果が常に優先されます。
  • 請求書番号
  • 請求日
  • 合計金額
事業部門とベンダー 既定では、データ セットが選択されている場合、事業部門とベンダーはデータ セットに基づいて検出されます。 また、データ セット内に対応するレコードがない場合は、次の field がニューラル ネットワークによって検出されることがあります。
  • Name
  • VATID (ABN)
  • 住所
データ セットが選択されていない場合は、ニューラル ネットワークのみが使用されます。 購買注文書 field グループ ニューラル ネットワークは、データ セットまたは正規表現で値が検出されなかった場合にのみ使用されます。 明細 明細の field では、ニューラル ネットワークで得られた結果が優先されます。ニューラル ネットワークが明細テーブル全体を検出した場合は、そのテーブルが以降の処理に使用されます。そうでない場合、プログラムは FlexiLayout で検出された明細を使用します。 ニューラル ネットワークが各明細について Description field と TotalPriceNetto field のみを検出した場合は、それらが FlexiLayout で検出された field によって補完されます。