メインコンテンツへスキップ
この記事では、FlexiLayoutがドキュメントとマッチングされる順序と、フィールド領域がどのように選択されるかについて説明します。 FCFORINVOICESでは、Document Definitionとのマッチング時に、複数の種類のFlexiLayoutを使用できます。
  1. 汎用FlexiLayout。これはすべての請求書の処理に使用され、さらに次の2種類のFlexiLayoutに分かれます。
a. メインFlexiLayout。標準の定義済み請求書フィールドを検出するために使用されます (このFlexiLayoutはFCFORINVOICESに付属しており、変更できません) 。 b. 追加FlexiLayout。user-defined fieldsと、検出ロジックが変更された標準の請求書フィールドを検出するために使用されます (このFlexiLayoutはユーザーが作成します) 。
  1. FlexiLayoutバリアント。これは特定のベンダーの請求書を処理するために使用されます。FlexiLayoutバリアントでは、それぞれのDocument Definitionで定義された任意のフィールドを検出でき、ユーザーが作成することも、FCFORINVOICESが特定のベンダーの請求書を使って学習した際に作成することもできます。
Document Definitionが請求書とマッチングされると、プログラムはフィールド領域のセットを取得します。これらのフィールド領域は、Document Definitionに含まれる複数のFlexiLayoutから取得されます。

1. 汎用 FlexiLayout のマッチング

A. まず、プログラムはメインのFlexiLayoutを適用します。

事前認識パラメーター

請求書画像は、Document Definition で指定した事前認識パラメーターを使用して事前認識されます。

  • 言語は、Document Definition Properties ダイアログの [Settings] タブの [国と言語一覧] で指定します。
    • 事前認識モード (高速/ バランス/ 通常/ 高精度) は、Document Definition Properties ダイアログの [FlexiLayout] タブで指定します。

メインの FlexiLayout を適用して得られる結果

メインの FlexiLayout を適用すると、プログラムは次のものを取得します。
  • 検出された場合は、ベンダー ID と事業部門 ID
B. 次に、汎用 FlexiLayout で利用可能な場合、プログラムは追加の FlexiLayoutを適用します。

事前認識パラメーター

請求書画像は、FlexiLayout で指定された事前認識パラメーター (つまり、言語と事前認識モード) を使用して事前認識されます。追加の FlexiLayout には、Document Definition と同じ事前認識パラメーターを指定することをお勧めします。この場合、プログラムは請求書を 2 回事前認識する代わりに、ステップ 1A で取得した事前認識結果を使用します。 請求書に特殊な field が含まれている場合は、Document Definition とは異なる事前認識パラメーターを追加の FlexiLayout に指定することもできますが、その場合は処理速度が低下します。

追加のFlexiLayoutの適用によって得られる結果

追加のFlexiLayoutを適用すると、プログラムはその追加のFlexiLayoutで定義されたすべてのフィールドの領域を取得します。これらは、検出ロジックを変更する必要があった標準の請求書フィールドである場合もあれば、メインのFlexiLayoutでは定義されていない追加フィールドである場合もあります。 C. 次に、プログラムは汎用FlexiLayoutの適用結果を集約した結果を生成します。Document Definitionに追加のFlexiLayoutが含まれている場合、この段階でプログラムは、メインのFlexiLayoutの適用結果と追加のFlexiLayoutの適用結果をマージします。 フィールドは名前で識別されます。その結果、メインのFlexiLayoutと追加のFlexiLayoutに由来する、重複のないフィールドのコレクションが作成されます。メインのFlexiLayoutと追加のFlexiLayoutに同じ名前のフィールドがある場合、プログラムは追加のFlexiLayoutを適用して得られたフィールド領域を使用します。 この方法を使うと、新しいフィールドを定義したり、標準の請求書フィールドのいずれかの取り込みロジックを変更したりできます。

2. FlexiLayout候補の適用

手順1で汎用FlexiLayoutを適用した際にプログラムがベンダーを検出し、そのベンダーに対応するFlexiLayout候補がある場合は、この段階でそのFlexiLayout候補が適用されます。

事前認識パラメーター

Document Definition の事前認識パラメーターが使用されます。これらは、generic FlexiLayout に含まれるメインの FlexiLayout のマッチング時に使用された事前認識パラメーターと同じです。そのため、追加の事前認識は必要ありません。

FlexiLayout バリアントのマッチング結果

請求書に対して FlexiLayout バリアントのマッチングを実行すると、プログラムは、この特定のベンダー用の FlexiLayout バリアントで定義されているすべての field の領域を取得します。なお、さまざまな請求書を使ってプログラムを学習させて FlexiLayout バリアントを取得した場合、そのバリアントには Document Definition で定義されているすべての field が含まれます。一方、FlexiLayout バリアントを手動で作成する場合は、指定したベンダーに固有の操作が必要な field だけをそのバリアントに残す必要があります。

3. 結果のマージ

このステップでは、汎用 FlexiLayout のマッチングで得られた結果と、FlexiLayout バリアント のマッチングで得られた結果をマージします。 FlexiLayout バリアントが、さまざまな請求書を使ってプログラムを学習させることで作成された場合、そのバリアントには Document Definition で定義されたすべての field が含まれます。Document Definition には、学習時にユーザーが領域を変更する必要があった field、つまり汎用 FlexiLayout では十分に検出できなかった field に関する情報が保存されます。プログラムはこの情報に基づいて、どの field 領域を汎用 FlexiLayout から取得し、どの領域をこの特定のベンダーの請求書で学習させた FlexiLayout バリアントから取得するかを判断します。
合計金額 field の領域は、別の方法で選択されます。汎用 FlexiLayout を適用すると、プログラムは 合計金額 field の領域がどの程度の confidence で検出されたかを示します。領域が確実に検出されなかった場合、合計金額 field は Verification が必要になります。指定したベンダーの請求書で学習させた FlexiLayout バリアントが存在し、汎用 FlexiLayout が 合計金額 field を十分な confidence レベルで検出できない、またはまったく検出できない場合は、FlexiLayout バリアントで検出された 合計金額 field の領域が使用されます。また、常に FlexiLayout バリアントで検出された 合計金額 field の領域を使用するようにプログラムを設定することもできます。これを行うには、[HKEY_CURRENT_USER\Software\ABBYY\FlexiCapture\12.0\DAForms]”UseTrainedInvoiceAmounts” registry key の値を true に設定します (既定値は false です) 。
FlexiLayout バリアントが手動で作成された場合、プログラムはその FlexiLayout バリアントに含まれるすべての field の領域を使用します。それ以外の field の領域は、汎用 FlexiLayout のマッチングで得られた結果から取得されます。 field の領域検出にどの FlexiLayout が使用されたかという情報は、認識ログに記録されます。
Document Definition で定義されている field の一部を例に見てみましょう。2 つの標準請求書 field、InvoiceDateInvoiceNumber、および 2 つのユーザー定義 field、CustomFieldACustomFieldB を考えます。
  • InvoiceDateInvoiceNumber は標準 field であり、これらの field の検出アルゴリズムは、汎用 FlexiLayout に含まれるメイン FlexiLayout で指定されています。
  • CustomFieldACustomFieldB はユーザー定義 field であり、これらの field の検出アルゴリズムは、汎用 FlexiLayout に含まれる追加の FlexiLayout で指定されています。
特定のベンダーの請求書に対する InvoiceDateCustomFieldB field の検出品質にオペレーターが満足しておらず、このベンダーの請求書を使ってプログラムを学習させたとします。このベンダーの請求書では、field 領域は次のようにマージされます。
  • InvoiceNumber - この領域は、メイン FlexiLayout で得られた結果から取得されます
  • CustomFieldA - この領域は、追加の FlexiLayout で得られた結果から取得されます
  • InvoiceDateCustomFieldB - これらの領域は、このベンダーの請求書を使ってプログラムを学習させることで生成された FlexiLayout バリアントの結果から取得されます。
他のベンダーの請求書では、field 領域は次のようにマージされます。
  • InvoiceDateInvoiceNumber - これらの領域は、メイン FlexiLayout で得られた結果から取得されます。
  • CustomFieldACustomFieldB - これらの領域は、追加の FlexiLayout で得られた結果から取得されます。