メインコンテンツへスキップ
この記事では、請求書の主要なfieldがどのように検出され、抽出されるかを説明します。 プログラムは、Document Definition の設定に従ってテキストを認識することで、請求書の処理を開始します。
  • 認識モード (Fast / Balanced / Normal / Accurate) は、認識速度と、その結果得られるテキストレイヤーの品質を決定します。認識モードを指定するには、Document Definition Editor で Document Definition → Document Definition Properties… Recognition をクリックします。
  • 認識言語は、認識に使用する言語です。認識言語を指定するには、Document Definition Editor で Document Definition → Document Definition Properties… Document Definition Settings をクリックし、次に国と言語一覧グループで Edit をクリックして必要な言語を選択します。 注: FlexiCapture for Invoices の認識言語は国の設定に関連付けられています。国と言語一覧グループに請求書の国を追加すると、対応する言語が自動的に Document Definition の設定に表示されます。請求書のfieldは認識時に抽出されます。

請求書上のfieldを検出して抽出するために、プログラムでは次の方法を使用できます:

以下では、これら2つの方法と、両方の方法で得られた結果を組み合わせるか、最良の結果を選択するアルゴリズムについて説明します。

FlexiLayout の使用

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

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

データセットの列に入力された情報の詳細度と品質は、検出品質に大きな影響を与えます。検索結果をできる限り正確にするために、以下の点を確認してください。
  • 一意の会社識別子が入力されている 一意の値を持つ列 (VATID、NationalVATID、IBAN) を入力すると、これらの値は各会社に固有であるため、正しく検出される可能性が大幅に高まります。
  • 会社レコードに重複がありません 重複するレコードがないと、会社を正しく検出できる可能性が高まります。重複レコードの削除について詳しくは、外部データベース内の重複レコードの削除を参照してください。
  • 無関係なレコードが含まれていないこと データセットに古いレコードや無効なレコードが含まれていると、さまざまなフィールド値が偶然似ているために、会社が誤って検出される可能性があります。
  • すべての会社レコードで、すべてのfieldが入力されていること 会社に関する情報は、できるだけ多く指定してください。Data setに入力されているfieldが多いほど、会社を正しく検出できる可能性が高くなります。
  • 複数値列は、表記の異なる同じ情報を保存するためのものであり、まったく別の情報を保存するものではありません たとえば、1 つの会社に複数の住所がある場合は、他のすべてのfieldに同じ情報が含まれていても、住所ごとに個別のレコードが必要です。詳しくは、ベンダーおよび事業部門データベースの準備を参照してください。
自動ベンダーおよび事業部門検出アルゴリズムは、次のステップで構成されています。
  1. 一意の識別子の検索
以下のフィールドは、一意の会社識別子とみなされます:
  • VATID,
    • NationalVATID,
    • IBAN (国際銀行口座番号) .
FCFORINVOICESは、上記の値を文書画像内で検索します。Document Definitionのプロパティ (Document Definition SettingsタブのCountries and Languagesグループ) では、VATIDNationalVATID、およびIBAN (Formatsタブ) のフォーマットと、各国のキーワード (Keywordsタブ) が正規表現を使用して設定されています。注: キーワードと識別子のフォーマットを正確に入力することで、検出精度が大幅に向上します。プログラムは、このようなfieldに対して画像上で完全一致を検索します。Regular expressionsを使用すると、認識エラーの可能性も考慮できます。これは拡張Regular expressionsを使用して実現します (拡張Regular expressionsを参照) 。注意: ABBYY FlexiCapture for Invoices にはプリセットの正規表現が用意されていますが、必要に応じて独自の正規表現を作成することもできます。作成するには、Document Definition の設定タブにある「国と言語一覧」グループに移動し、該当する国を選択して Edit… をクリックします。検出された値は以下のように正規化されます:
  • 文字は大文字に変換されます ,
    • スペースと次の文字は削除されます:” . ”、” , ”、” ”、” / ”、” **** ”。
fieldの文字プレフィックスが、Formats tabの国プロパティで正規表現を使用して指定されている場合、認識されたプレフィックスはプライマリプレフィックス (Formats tabの国プロパティで設定) に置き換えられます。 たとえば、識別子 “DE12345” が “OE12345” として認識される場合があります。検出されたプレフィックス OE は、正しいプレフィックス DE に置き換えられます。 文書画像上で検出されたVATID、NationalVATID、およびIBAN (国際銀行口座番号) のfieldsは、Data setへのクエリに使用されます。Data setのfieldsから取得したVATID、NationalVATID、およびIBANのcolumn値は、画像上で検出された値と同じ方法で正規化され、その後、画像上で検出されたfieldsの正規化済み値とマッチング (完全一致マッチングを使用) されます。
  1. 会社名・住所の検索
すべてのドキュメントのテキストを使用して、最も正確に一致するレコードを検索するクエリが Data set に送信されます。画像上で検出された NameStreet (住所) 、ZIPCity の値は、対応する Data set のレコード値と照合されます。 注意: 名前および会社の検索結果を最良にするには、対応する Data set の列に値が入力されていることを確認してください。VATIDNationalVATID、または IBAN (国際銀行口座番号) で会社を特定できない場合は、会社名と住所の情報が特に重要です。
  1. 仮説の形成
ステップ1および2で検出された企業は、仮説のセットを形成するために使用されます。ABBYY FlexiCapture for Invoicesはこれらの仮説を評価し、文書画像上のfield値に最も確実に一致する5件のベンダーレコードと5件のビジネス ユニットレコードを選択します。これらのレコードを使用してベンダーと事業部門の25組のペアが形成され、各ペアは個別の仮説として扱われます。次に、ニューラルネットワークアルゴリズムによって仮説の信頼性が評価され、最も適合するベンダーとビジネス ユニットのペアが最終的な仮説となり、ベンダーおよびビジネス ユニット検出の結果となります。注意: ベンダー データベースのみが接続されている場合、ベンダーと事業部門のペア評価の精度が低下する可能性があります。事業部門の検出が不要な場合でも、ビジネス ユニット データベースを接続することをお勧めします。詳細については、データベースの接続を参照してください。注意: 事業部門の数が非常に少ない場合 (例:1件) 、このようなデータベースを接続しても評価への影響はほとんどありません。ただし、事業部門がベンダーとして誤検出されるケースでは、検出品質の改善に役立つことがあります。

仮説フィルタリング

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

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

請求書上のベンダーと事業部門を検出した主な結果を以下に示します:
  • Vendors データセット内のベンダーレコードの識別子
  • BusinessUnits データ セット内の事業部門レコードの識別子
注意: Vendors データセットで Id が BusinessUnitId に依存すると指定されている場合 (Vendors データセットを参照) 、ベンダー検出の結果には BusinessUnitId に対応する Id が含まれます。事業部門が正確に検出されない場合があります。その場合、ドキュメントの登録パラメーター fc_Predefined:InvoiceIsVendorSuspicious (fc_Predefined:InvoiceIsBusinessUnitSuspicious) が true に設定されます。以下のfieldsのRegionは、ベンダーおよび事業部門の検出結果として見つかる場合があります。ベンダーの場合:
  • Name
  • VatID
  • NationalVatID
  • IBAN
  • 住所
  • 郵便番号
  • 市区町村
事業部門の場合:
  • Name
  • VatID
  • 住所
  • 郵便番号
  • 市区町村
画像上のこれらの Region の位置を確認することで、プログラムがベンダーおよびビジネス ユニットの field グループの fields を画像上のどこで検出したかを正確に把握でき、これによりベンダーと事業部門の特定が可能になります。注意: IBAN (国際銀行口座番号) およびVATIDのfield valuesがVendorsデータセットに存在しない場合、銀行情報の検出と同様に、キーワードとフォーマットを使用して適切な値を検出できます (対応するベンダーが見つかった場合に限ります) 。注意: field regionの検索は、学習または追加のFlexiLayoutを適用することで変更できます (追加のinvoice fieldsのキャプチャを参照) 。これはベンダーおよびビジネス ユニットの検出には影響しませんが、Document Definitionとinvoicesのマッチング後、これらのフィールドグループ内のfieldsのRegionの位置に影響する場合があります。ベンダーとビジネス ユニットを検出することで得られる重要な結果として、データセット内で見つかったレコードの CountryCode フィールドから、それぞれの国に関する情報が取得されます。この情報は、キーワードと税率の選択、およびその他の請求書フィールドのキャプチャに使用されます。また、請求書のバリデーションルールを起動するための条件としても使用されます。

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

データセット内のベンダーまたはビジネス ユニットのレコードが、請求書の画像から抽出されたテキストと高い精度で一致するほど、プログラムはベンダーまたはビジネス ユニットをより正確に検出できます。まず、請求書上の会社を検索するために使用するデータ セットの列に対応する、外部データベース内のデータを特定する必要があります。外部データベースとデータ セットは適切に接続されている必要があります (ベンダーおよびビジネス ユニット データベースの使用を参照) 。同一の企業がベンダーのリストと事業部門のリストの両方に存在する場合、両方のデータセットの該当するレコードに同じ VATID を指定してください (請求書に VATID が記載されていない場合も同様です) 。これにより、プログラムがベンダーと事業部門を誤って検出するのを防ぐことができます。画像上のfield valuesの変動に対応するには、以下を使用します:

抽出された値とあわせて、事前に決定したベンダー値および事業部門値を使用する

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

InvoiceNumber, InvoiceDate

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

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

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

請求書 の合計金額 (Total) と通貨 (Currency)

はい

はい

税:

  • 税抜き合計金額 (NetAmount0)
  • 課税前の 請求書 の合計金額 (TotalNetAmount)
  • 支払税額 (TotalTaxAmount)

はい

はい

  • 税グループ (課税前合計金額 (NetAmount) 、支払税額 (TaxAmount) 、税率 (TaxRate) )

いいえ

はい

追加税額 (AdditionalCosts)

はい

はい

Document Definition の情報は、合計金額と税率を見つけるために使用されます。
  • ベンダーの国で適用される税率 (国のプロパティの Tax Rates タブで指定できます。詳細は Country and language settings を参照してください)
  • 税率のキーワード (言語のプロパティの Keywords タブで指定できます。詳細は Keywords を参照してください) 。
プログラムは、画像上で最大 2 つの税率を見つけようとします。請求書 に 2 つを超える税率がある場合は、追加のフィールドを作成し、データ フォームで手動入力できます。プログラムは、キーワードを使用して TotalTax フィールドと TotalNetto フィールドを検出します。これらのキーワードは、用途に応じて国または言語のプロパティで指定できます (詳細は Country and language settings を参照) 。キーワードの詳細については、Keywords を参照してください。Total フィールド用のキーワードには 2 種類あり、それぞれ異なるカテゴリにあります (Located elements categories の詳細については Keywords を参照してください) 。
  • AmountTotalHighConfidenceLabels: Total フィールドの近くにのみ現れるキーワード。たとえば、“Pay this amount.” などです。
  • AmountTotalLowConfidenceLabels: Total フィールドの近くに現れることがありますが、他のフィールドの近くにも現れる可能性があるキーワード。たとえば、“Total” というキーワードは Total フィールドの近くに現れることがありますが、請求書 上のすべての品目の総重量を示すフィールドの近くに現れる場合もあります。
Tip. これら 2 つのカテゴリのどちらにキーワードを追加すべきか迷う場合は、AmountTotalHighConfidenceLabels に追加してください。そのキーワードによってプログラムが別のフィールドを Total フィールドとして識別してしまう 請求書 がある場合は、AmountTotalLowConfidenceLabels に移動できます。キーワードに加えて、プログラムは Total フィールドの検出時に次の項目も探します。
  • 画像上で同じ行または同じ列に 2 回または 3 回現れる数値。このような数値は、税が指定されていない 請求書 では Total である可能性があります。
  • 同じ列で、その上にある数値の合計になっている数値。
  • ドキュメントの末尾にある、絶対値が最も大きい数値。
プログラムが Currency フィールドを検索するのは、Total フィールドが検出された場合のみです。Document Definition 内の国のプロパティにあるキーワードが使用されます。画像上で検出できなかった Amounts field グループ内のフィールドは、Total フィールドを除いて自動的に計算されます。このフィールドは画像上で検出される必要があります。プログラムが Amounts field グループ内のフィールドから情報を正しく抽出できない場合、Total フィールドは Verification が必要としてマークされます。プログラムが Total フィールドと Currency フィールドを高い信頼度で検出できない場合、またはまったく検出できない場合は、training を使用して抽出品質を向上させることができます。
FCFORINVOICES は、請求書からすべての購買注文書番号と、それに対応する金額を抽出できます。この機能は既定で無効になっています (購買注文書のマッチングを参照) 。購買注文書番号を抽出するには、候補となる購買注文書番号とその金額の一覧を含むデータ セットが必要です (PurchaseOrders data setを参照) 。購買注文書 field は、次の方法で抽出できます。候補となる購買注文書番号を含むデータ セットを使用する場合、FCFORINVOICES はこのデータ セット内の番号を画像から検索します。データベース内の購買注文書番号はできるだけ少なくしておくことが望ましく、その数を減らすには次の方法があります。
  • データ セットの VendorId 列を使用します。この場合、プログラムは請求書のベンダーに対応する購買注文書番号のみを使用します。
  • すでに請求書を受領済みの購買注文書を除外し、まだ請求書を受領していない購買注文書の番号だけをデータ セットに追加します。
プログラムは、検出された購買注文書番号に対応する金額をデータベース内で検索します。またプログラムは、請求書の明細に含まれているものも含め、すべての購買注文書番号を画像内で検索します。購買注文書は通常、購入者の ERP システムで生成されるため、特定のビジネス ユニット宛ての請求書は似た形式になる傾向があります。通常は、正規表現を使ってそれらを表現できます。購買注文書番号に対する正規表現がある場合、プログラムは画像上でその正規表現に一致するすべての番号を検出します。正規表現は、次のタグを使用して XML 構成ファイルで指定できます。
.<InvoiceSettings>
...
<OrderNumber>
   <Value>
      <RegularExpression></RegularExpression>
   </Value>
</OrderNumber>
</InvoiceSettings>
XML 構成ファイルの詳細については、XML ファイルでの請求書処理設定の編集を参照してください。
FCFORINVOICES は、画像から請求書の明細を抽出できます。請求書の明細抽出は、既定で無効になっています (追加 fieldを参照) 。プログラムが自動的に抽出する field の一覧については、抽出される fieldを参照してください。FCFORINVOICES はまず、画像内でテーブルを検索します。この検索では、各言語について Document Definition のプロパティに指定されている列タイトルのキーワードを使用します。請求書の明細の列に対するキーワードは、項目の分類、つまり各請求書明細列の型を判断するためにも使用されます。その後、プログラムは検出された列に関する情報と数式を使用して、請求書内のテーブルから請求書明細を見つけます。最後に、プログラムは請求書明細内で各列から field を検索します。自動的な明細抽出の品質を向上させるために、学習を使用できます。

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

ニューラル ネットワークの主な利点の 1 つは、自己学習能力があることです。ニューラル ネットワークは、入力データ間の複雑な依存関係を検出し、有用な汎化を行うことができます。 このプログラムには、次の field を抽出するために使用できる 2 つのニューラル ネットワークが含まれています。
  • 請求書番号
  • 請求日
  • 合計金額
  • ベンダー \ 名称
  • ベンダー \ 住所
  • ビジネス ユニット \ 名称
  • ビジネス ユニット \ 住所
  • 購買注文書 \ 注文番号
  • 明細行:
    • 注文番号
    • 注文日
    • 明細番号
    • 品目番号
    • 説明
    • 数量
    • 単位
    • 単価
    • 税抜合計金額
    • VAT率
精度を最大限に高めるため、プログラムは請求書の field を抽出する際に、FlexiLayout とニューラル ネットワークの両方を使用します。ニューラル ネットワークで抽出できなかった field は、FlexiLayout を使用して抽出されます。ある field をニューラル ネットワークと FlexiLayout の両方で抽出できる場合、プログラムは両方のメソッドで得られた結果をインテリジェントに組み合わせます。結果の組み合わせ方は field によって異なります (詳しくは field 検出結果の組み合わせ を参照してください) 。

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

既定では、ニューラル ネットワークは文書のfieldを抽出する第 2 の方法として使用されます。請求書プロジェクトで請求書以外の文書も処理する必要がある場合は、ニューラル ネットワークを無効にすることをお勧めします。これは、ニューラル ネットワークが請求書のfieldを抽出するように特化して学習されているため、他の種類の文書では十分な性能を発揮しない可能性があるからです。 明細グループのニューラル ネットワークを無効にするには:
  • Document Definition Editor を開きます。
  • Document Definition Properties… Document Definition Settings Additional Fields and Features をクリックします。
  • Thorough extraction of invoice line items オプションを無効にします。
請求書ヘッダー、ベンダー、ビジネス ユニット、購買注文書の各グループのニューラル ネットワークを無効にするには:
  • Document Definition Editor を開きます。
  • Document Definition Properties… Document Definition Settings Additional Fields and Features をクリックします。
  • Thorough extraction of invoice header fields オプションを無効にします。

field 検出結果の組み合わせ

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