請求書のテキストの認識方法
プログラムは、Document Definition の設定に従ってテキストを認識することで、請求書の処理を開始します。請求書のfieldsは認識時に抽出されます。
FlexiCapture for Invoices の認識言語は、国の設定に関連付けられています。国と言語一覧 グループに請求書の国を追加すると、対応する言語が Document Definition の設定に自動的に表示されます。
FlexiLayout による field の検出方法
FlexiLayout は、最初にベンダーと事業部門を検出します。続いて、それらの国に応じて、請求書のその他の field を取得するためのキーワードと税率が選択されます。ベンダーと事業部門の検出
プログラムは、Document Definition の設定と データ セット レコードの値を使用して、ベンダーと事業部門を特定します。
Data sets の BusinessUnits および Vendors 列の詳細と使用方法については、BusinessUnits データ セットおよび Vendors データ セットを参照してください。
会社を正確に検出するためのデータセット要件
Data set の列に入力する情報の詳細さと品質は、検出品質に大きく影響します。最も正確な検索結果を得るには、Data set が次の要件を満たしていることを確認してください。会社検出アルゴリズム
プログラムは、ベンダーと事業部門を 3 つの段階で検出します。各段階の結果を改善する方法については、ベンダーと事業部門の検出の改善を参照してください。1
一意の識別子の検索
一意の会社識別子は VATID、NationalVATID、IBAN です。FlexiCapture for Invoices は、これらの値を文書画像内で検索します。Document Definition のプロパティ (Document Definition Settings タブの 国と言語一覧 グループ) では、各国について VATID、NationalVATID、IBAN の形式 (Formats タブ) とキーワード (Keywords タブ) が正規表現を使用して設定されます。プログラムは、こうした field について画像上で完全一致を検索します。拡張正規表現を使用することで、正規表現に起こり得る認識エラーも考慮させることができます。詳しくは、拡張正規表現を参照してください。検出された値は、次のように正規化されます。
- 英字は大文字に変換されます。
- スペースと次の文字は削除されます:
.,,,—,/,\.
DE12345 が OE12345 と認識されることがあります。この場合、検出されたプレフィックス OE は正しいプレフィックス DE に置き換えられます。文書画像で検出された VATID、NationalVATID、IBAN の field は、データ セット を照会するために使用されます。データ セット から取得した VATID、NationalVATID、IBAN 列の値は、画像で検出された値と同じ方法で正規化され、その後、画像で検出された正規化済みの値と照合されます (完全一致を使用) 。2
会社名と住所の検索
文書全体のテキストを使用して、それに最も正確に一致するレコードを検索するクエリが データ セット に送信されます。画像上で検出された Name、Street、ZIP、City の値は、対応する データ セット のレコードの値と照合されます。
3
仮説の形成
前の手順で見つかった会社を使用して、一連の仮説が形成されます。ABBYY FlexiCapture for Invoices はこれらの仮説を評価し、文書画像上の field 値と最も高い信頼性で一致する 5 件のベンダー レコードと 5 件の事業部門レコードを選択します。これらのレコードから 25 個のベンダー–事業部門の組み合わせが作成され、各組み合わせは個別の仮説として扱われます。次に、ニューラル ネットワーク アルゴリズムが仮説を信頼性に基づいて評価し、最も適合するベンダー–BU の組み合わせが最終仮説となり、ベンダーと事業部門の検出結果になります。
仮説のフィルタリング
仮説は、データ セットのレコードと文書画像上のfield値がどの程度確実に一致するかに基づいて、信頼性の高い仮説と信頼性の低い仮説に分類されます。 検証シナリオに応じて、ベンダーと事業部門の検出時に仮説の信頼性を考慮するかどうかを決定できます。ABBYY FlexiCapture for Invoicesで最終仮説を信頼性の高い仮説のみに限定して選択するには、InvoiceReader/ShouldFilterUnsureCompanyHypotheses レジストリ フラグを使用します。
仮説のフィルタリングの動作は、ベンダーと事業部門で異なります。
フィルタリングの動作が異なるのは、ベンダーと事業部門でデータ セットの性質が異なるためです。
- 通常、事業部門のレコード数はベンダーのレコード数より大幅に少なくなります。また、変更頻度もはるかに低いため、最新の状態に保ちやすくなります。そのため、信頼性の高い仮説を検出できた場合は、最終仮説が正しい可能性が高まります。ただし、信頼性の高い仮説が見つからなかった場合でも、事業部門の検出は重要です。これは、検出結果の信頼性を左右する最も重要な要因が、ベンダーとBUのペアの信頼性評価であるためです。
- 通常、ベンダーのレコード数ははるかに多く、ベンダーは請求書上で事業部門よりも自社に関する多くの情報を記載するため、データ セットにはより多くの列が含まれます。また、レコードに古い情報が含まれていることもあるため、信頼性の低い仮説のフィルタリングは、データ セットの品質と検証シナリオの種類の両方に依存します。
ベンダーと事業部門の検出結果
ベンダーと事業部門の検出で得られる主な結果は、それぞれのレコードの識別子です。このほか、フラグ、field の Region、各企業の国が返される場合もあります。
画像上の field の Region の位置を見ると、プログラムがベンダーおよびビジネス ユニットの field グループの field を正確にどこで見つけ、それをもとにベンダーと事業部門を検出したのかを確認できます。
IBAN および VATID の field 値が Vendors データセットにない場合でも、対応するベンダーが見つかっていれば、銀行口座情報の検出と同じ方法で、キーワードと形式を使用して適切な値を検出できます。
任意の field の Region の検索方法は、学習または追加の FlexiLayout の適用によって変更できます。これによってベンダーと事業部門の検出が変わることはありませんが、Document Definition と請求書のマッチング後、これらの field グループ内の field の Region の位置が変わる可能性があります。詳細については、請求書の追加 field の抽出を参照してください。
ベンダーと事業部門の検出を改善する
データ セット内のベンダーまたは事業部門のレコードが、請求書画像から抽出されたテキストによく一致するほど、プログラムはベンダーまたは事業部門をより正確に検出できます。 まず、請求書上の会社を見つけるために使用されるデータ セットの列に対応する、外部データベース内のデータを特定します。外部データベースとデータ セットは適切に接続されている必要があります。詳細については、ベンダー データベースと事業部門データベースの使用を参照してください。 事業部門の検出が不要な場合でも、事業部門データベースを接続してください。ベンダー データベースのみを接続すると、ベンダーと事業部門のペアの評価品質が低下する可能性があります。 事業部門の数が非常に少ない場合 (たとえば 1 つのみ) 、そのデータベースを接続しても評価に大きな影響はありません。ただし、事業部門が誤ってベンダーとして検出されている場合には、検出品質が向上する可能性があります。 名前と住所で最適な検索結果を得るには、Data set の Name、Street、ZIP、City 列に値を入力してください。VATID、NationalVATID、または IBAN で会社を特定できない場合は、会社名と住所の情報が特に重要になります。 キーワードと識別子の形式を正しく入力すると、検出品質が大幅に向上します。ABBYY FlexiCapture for Invoices には識別子の形式用の正規表現があらかじめ用意されていますが、必要に応じて独自の正規表現を作成することもできます。作成するには、Document Definition Settings タブの 国と言語一覧 グループで該当する国を選択し、Edit… をクリックします。 同じ会社がベンダーの一覧と事業部門の一覧の両方に存在する場合は、両方のデータ セット内の対応するレコードに同じVATIDを指定してください (請求書にVATIDがない場合でも) 。これにより、プログラムがベンダーと事業部門を誤って検出するのを防ぐことができます。 画像上のfield値に生じる可能性のあるばらつきを補うには、次を使用します。事前定義のベンダー値と事業部門の値
請求書の会社に対応するベンダーまたは事業部門は、請求書のソース (Scanning Operator の名前またはメッセージ送信者のメール アドレス) に基づいて事前に特定できます。 自動検出の前にベンダーまたは事業部門を明示的に指定するには、ドキュメントの registration parameterfc_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を見つけるためのキーワード セットは、ベンダーと事業部門の国に基づいて決まります。 キーワードを編集し、学習を使用することで、プログラムによるfield 領域の検索方法を変更できます。プログラムが請求書とクレジット ノートを識別する方法
FlexiCapture は、FlexiLayout の適用時にドキュメントが請求書かどうかを判定します。以下の条件はいずれも、ドキュメントが請求書であることを示すものです。すべての条件を満たす必要はありませんが、条件ごとに一定の重みが設定されています。- InvoiceNumber および InvoiceDate field が検出された。
- InvoiceIdentifiers 位置特定要素のキーワードが検出された。詳細については、キーワードを参照してください。
- ドキュメント上でベンダーまたは事業部門が検出された。
Amounts field グループ
FlexiCapture for Invoices は、請求書から次の Amounts field を抽出します。税率と税合計
Document Definition の情報は、合計金額と税率を見つけるために使用されます。
プログラムは、画像上で最大 2 つまでの税率を見つけようとします。請求書に 3 つ以上の税率がある場合は、追加フィールドを作成し、データ フォームで手動入力できます。
プログラムは、TotalTax field と TotalNetto field を検出するためにキーワードを使用します。これらのキーワードは、用途に応じて国または言語のプロパティで指定できます。詳細は Country and language settings および Keywords を参照してください。
Total field の検出方法
Total field 用のキーワードには 2 種類あり、それぞれ異なるカテゴリにあります。Located element categories の詳細については、Keywords を参照してください。
キーワードに加えて、プログラムは 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 は、正規表現、または候補となる購買注文書番号を含むデータ セットを使用して抽出できます。データセットを使用した購買注文書の検出
候補となる購買注文書番号を含むデータ セットを使用する場合、FlexiCapture for Invoices はこのデータ セット内の番号を画像から検索します。データベース内の購買注文書番号は、できるだけ少なくしておくことをお勧めします。数を減らすには、次の方法があります。- データ セットの VendorId 列を使用します。この場合、プログラムは請求書のベンダーに対応する購買注文書番号のみを使用します。
- すでに請求書を受領している購買注文書を除外し、まだ請求書を受領していない購買注文書の番号だけを追加します。
正規表現による購買注文書の検出
購買注文書は通常、購入者の ERP システムで生成されるため、特定のビジネス ユニット宛ての請求書は似た形式になる傾向があり、通常は正規表現で表現できます。購買注文書番号の正規表現がある場合、プログラムはその式に一致する画像上のすべての番号を検出します。 正規表現は、XML 構成ファイルのRegularExpression 要素で指定できます。
明細 field グループ
FlexiCapture for Invoices では、画像から請求書の明細を抽出できます。請求書の明細の抽出は既定で無効になっています。詳細については、追加フィールドを参照してください。 プログラムが自動的に抽出するフィールドの一覧については、抽出されたフィールドを参照してください。 FlexiCapture for Invoices は、まず画像内のテーブルを検索します。この検索では、Document Definition のプロパティで各言語に対して指定された列タイトルのキーワードを使用します。請求書の明細の列に対応するキーワードは、アイテムの分類、つまり各明細列の種類を判定するためにも使用されます。 その後、プログラムは検出された列に関する情報と数式を使用して、請求書のテーブル内から明細を見つけます。最後に、明細内で各列に対応するフィールドを検索します。 自動的な明細抽出の品質を向上させるために、学習を使用できます。ニューラル ネットワークによるフィールドの検出方法
プログラムには、次のフィールドを抽出するために使用できる 2 つのニューラル ネットワークが含まれています。- InvoiceNumber
- InvoiceDate
- Total
Vendor\NameVendor\AddressBusiness Unit\NameBusiness Unit\AddressPurchase Orders\Order Number- LineItems:
- OrderNumber
- OrderDate
- Position
- ArticleNumber
- Description
- Quantity
- Unit of measurement
- Unit Price
- Total Price Netto
- VATPercentage
ニューラル ネットワークを無効にする
既定では、ニューラル ネットワークは文書のfieldを抽出する第 2 の方法として使用されます。請求書プロジェクトで請求書以外の文書も処理する必要がある場合は、ニューラル ネットワークを無効にできます。ニューラル ネットワークは請求書のfieldを抽出するように特化して学習されているため、他の種類の文書では十分な性能を発揮しない可能性があります。1
Document Definition Editor を開く
Document Definition Editor を開きます。
2
追加フィールドと機能を開く
Document Definition Properties… → Document Definition Settings → Additional Fields and Features をクリックします。
3
オプションを無効にする
ニューラル ネットワークを無効にしたい field グループのオプションを無効にします。
