Skip to main content
FlexiCapture for Invoicesは、3つの段階でFlexiLayoutを請求書とマッチングします。まず汎用 FlexiLayoutを適用し、次にそのベンダー用のFlexiLayout バリアントがあればそれを適用し、最後に結果をマージします。これにより、Document Definitionに含まれる複数のFlexiLayoutから取得されたfield領域のセットが得られます。 FlexiCapture for Invoicesでは、Document Definitionとのマッチング時に、複数の種類のFlexiLayoutを使用できます。

ステージ 1: 汎用 FlexiLayout を Match する

メインの FlexiLayout を適用する

まず、プログラムによってメインの FlexiLayout が適用されます。請求書画像は、Document Definition で指定された事前認識パラメーターを使用して事前認識されます。 メインの FlexiLayout を適用すると、プログラムは次のものを取得します。
  • ベンダーの ID と事業部門の ID (検出された場合) 。
  • 標準fieldの領域。詳細については、抽出されたfieldを参照してください。

追加のFlexiLayoutの適用

次に、汎用FlexiLayoutで利用可能な場合、プログラムは追加のFlexiLayoutを適用します。 請求書画像は、FlexiLayoutで指定された事前認識パラメーター (言語と事前認識モード) を使用して事前認識されます。追加のFlexiLayoutにも、Document Definitionと同じ事前認識パラメーターを指定してください。この場合、プログラムは請求書を再度事前認識する代わりに、メインのFlexiLayoutの適用時に得られた事前認識結果を使用します。 請求書に特殊なfieldが含まれている場合は、追加のFlexiLayoutで異なる事前認識パラメーターを指定できますが、処理速度は低下します。 追加のFlexiLayoutを適用すると、プログラムはその追加のFlexiLayoutで定義されたすべてのfieldの領域を取得します。これらは、検出ロジックを変更する必要があった標準の請求書fieldである場合もあれば、メインのFlexiLayoutでは定義されていない追加fieldである場合もあります。

集約結果を生成する

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

ステージ 2: FlexiLayout バリアントを適用する

ステージ 1 で汎用 FlexiLayout を適用してプログラムがベンダーを検出し、そのベンダー用の FlexiLayout バリアント が存在する場合、このステージでその FlexiLayout バリアントが適用されます。 Document Definition の事前認識パラメーターが使用されます。これらは、汎用 FlexiLayout に含まれるメインの FlexiLayout のマッチング時に使用された事前認識パラメーターと同じです。そのため、追加の事前認識は必要ありません。 請求書に対して FlexiLayout バリアントのマッチングを行うと、プログラムはこの特定のベンダー向けの FlexiLayout バリアントで定義されているすべての field の領域を取得します。さまざまな請求書を使ってプログラムを学習させて FlexiLayout バリアントを得た場合、そのバリアントには Document Definition で定義されているすべての field が含まれます。FlexiLayout バリアントを手動で作成する場合は、そのベンダーに固有の処理を行わないと検出できない field だけをバリアントに残してください。

ステージ 3: 結果をマージする

このステージでは、汎用 FlexiLayout のマッチングで得られた結果と、FlexiLayout バリアント のマッチングで得られた結果がマージされます。field の領域の検出にどの FlexiLayout が使用されたかという情報は、認識ログに記録されます。

学習済み FlexiLayout バリアント

FlexiLayout バリアントが、さまざまな請求書を使ってプログラムを学習させることで得られたものである場合、そのバリアントには Document Definition で定義されているすべての field が含まれます。Document Definition には、学習中にユーザーが領域を変更する必要があった field、つまり汎用 FlexiLayout では十分に検出できなかった field に関する情報が保存されます。プログラムはこの情報を使用して、どの field の領域を汎用 FlexiLayout から取得し、どの field の領域をこのベンダーの請求書で学習した FlexiLayout バリアントから取得するかを決定します。

合計金額 field の領域

合計金額 field の領域は、異なる方法で選択されます。汎用 FlexiLayout を適用すると、プログラムは 合計金額 field の領域がどの程度の信頼度で検出されたかを指定します。領域が十分な信頼性で検出されなかった場合、合計金額 field は確認が必要になります。 指定したベンダーの請求書で学習した FlexiLayout バリアントが存在し、汎用 FlexiLayout が 合計金額 field を十分な信頼度で検出できない、またはまったく検出できない場合は、FlexiLayout バリアントで検出された 合計金額 field の領域が使用されます。 FlexiLayout バリアントで検出された 合計金額 field の領域を常に使用するには、HKEY_CURRENT_USER\Software\ABBYY\FlexiCapture\12.0\DAForms\UseTrainedInvoiceAmounts レジストリ キーの値を true に設定します。既定では、このキーは false に設定されています。

手動で作成された FlexiLayout バリアント

FlexiLayout バリアントが手動で作成されている場合、プログラムはその FlexiLayout バリアントに含まれるすべての field の領域を使用します。その他の field の領域は、汎用 FlexiLayout のマッチング結果から取得されます。

マージされた field 領域の例

2 つの標準請求書 field、InvoiceDate と InvoiceNumber、および 2 つのユーザー定義 field、CustomFieldA と CustomFieldB を考えます。
  • InvoiceDate と InvoiceNumber は標準 field であり、これらの field の検出アルゴリズムは、汎用 FlexiLayout に含まれるメインの FlexiLayout で指定されています。
  • CustomFieldA と CustomFieldB はユーザー定義 field であり、これらの field の検出アルゴリズムは、汎用 FlexiLayout に含まれる追加の FlexiLayout で指定されています。
特定のベンダーの請求書に対する InvoiceDate と CustomFieldB field の検出品質にオペレーターが満足しておらず、このベンダーの請求書を使ってプログラムを学習させたとします。この場合、各 field 領域は、ベンダーに応じてそれぞれ異なる FlexiLayout から取得されます。