メインコンテンツへスキップ
ここまでで、請求書番号、請求日、DeliveryAddress の各field について説明しました。 次に、ほかの要素をどの順序で検出すべきかを決めます。 テスト画像上のfield の配置を解析すると、Country field の検出には、このfield の名前と Character String 型の要素を使用できることがわかります。ただし、Total Quantity field と Total Amount field を検出するには、2 つのfield に共通する名前だけでなく、追加の要素も必要です。そのため、テーブルの対応するcolumn 名を利用できます。 また、テーブル 型の要素を使って検出する Invoice Table field の検索に向けた準備も必要です。
  1. テーブルのヘッダーを記述します。column 名を検出する方法は 2 つあります。
    • 1 つ目は、Column Properties ダイアログ (テーブル element → Columns tab の Properties dialog) で、1 つまたは複数のキーワードを指定する方法です。この方法は手軽ですが、柔軟性はあまり高くありません。
    • 2 つ目は、あらかじめ検出された要素を参照要素として使用し、column 名の位置を特定する方法です。この方法では、要素に用意されている追加設定を最大限に活用できます。事前認識結果を解析すると、認識精度は十分に高いため、1 つ目の方法を使用できます (唯一の問題は、Quantity column 名が非常に短いことです。3 文字のキーワード “Qty” で誤りが 20% 発生するということは、実質的に誤りが許されないことを意味します) 。最初の 2 つのcolumns、ReferenceDesignation の検出には 1 つ目の方法を使用し、残りのcolumns、QuantityUnit PriceTotal の名前の検出には、すでに説明した要素を使用できます (これらの要素は、いずれにしても TotalQuantity field と TotalAmount field を検出するために作成する必要があるためです) 。
  2. テーブルのフッターを記述します。これも、キーワードを使用する方法と補助要素を使用する方法のいずれかで記述できます。フッター内のキーワードを解析すると、画像によってはそれらのキーワードがテーブルの最初のrow にも現れることがわかるため、search area を制限する手段として補助要素を使用する必要があります。
  3. テーブルの search area を記述します。ヘッダーとフッターを記述したら、次にテーブルの右 boundary を記述する必要があります (画像のこの部分にはほかのデータがないため、左 boundary を記述する必要はありません) 。Total column の数値と Sales column の数値は文脈だけでは区別できないため、別の方法が必要です。右側のテーブル search area を制限するために、最後の column である Sales の名前を使用できます。
要素とその検出順序は試行錯誤によって決めるものであり、FlexiLayout の調整中に変更できます。
残りのfield を記述する前に、補助要素を記述します。
  1. 要素間の相互依存関係を分析すると、まず QuantityUnit PriceTotal、および Sales の列名を検出する必要があることがわかります。
  2. テーブルのヘッダーは、列名と Invoice NumberInvoice Date、および Delivery Address の各fieldの間にある水平セパレーターから始まります。このセパレーターを使って、列名の検索領域を絞り込むことができます。
    • このため、型 Separator の要素を作成し、hsTableHeaderTop という名前を付けます (詳細な手順については、Step 14 を参照してください) 。 列名は自然な順序で検索します。
    • Group の要素を作成し、TableHeader という名前を付けます (詳細な手順については、Step 15 を参照してください) 。この要素には次のものを含める必要があります。
      • Static Text の要素 kwQuantity。これはテーブル InvoiceTableQuantity 列名に対応します (詳細な手順については、Step 16 を参照してください) 。
      • Static Text の要素 kwUnitPrice。これはテーブル InvoiceTableUnit Price 列名に対応します (詳細な手順については、Step 17 を参照してください) 。
      • Static Text の要素 kwTotal。これはテーブル InvoiceTableTotal 列名に対応します (詳細な手順については、Step 18 を参照してください) 。
      • Static Text の要素 kwSales。これはテーブル InvoiceTableSales 列名に対応します (詳細な手順については、Step 19 を参照してください) 。
  3. 次に、ドキュメントの下部について説明します。ここで注目するfieldは、Total Quantity および Total Amount のfield名 (テーブルの下側の境界として機能します) と、テーブルの下側の境界を特定するのに役立つその他のキャプションです。また、このロジックグループでは、Country fieldの名前要素とソース要素についても記述します。
  4. Group 要素を作成し、Footer という名前を付けます。この要素には次のものを含める必要があります。
    • Static Text の要素 kwFooter。これは Invoice Table のフッターに対応します (詳細な手順については、Step 21 を参照してください) 。
    • Static Text の要素 kwTotal。これは Total Quantity および Total Amount のfield名に対応します (詳細な手順については、Step 22 を参照してください) 。
    • Static Text の要素 kwOrigin。これは Country field の名前に対応します (詳細な手順については、Step 23 を参照してください) 。
    • Character String の要素 Country。これは Country field に対応します (詳細な手順については、Step 24 を参照してください) 。
これで必要な準備がすべて整い、追加要素を作成する順序も説明できたので、残りのfieldの検索を開始できます。先に検出した列名と Footer を基に、残りの Total Quantity、Total Amount、および Invoice Table のfieldを記述していきます。
  1. このため、型が Character String の要素を 2 つ作成し、TotalQuantityTotalAmount という名前を付けます。これらの要素は、それぞれ Total Quantity field と Total Amount field に対応します (詳しい手順については、Step 25 を参照してください) 。
  2. 型が テーブル の要素を作成し、InvoiceTable という名前を付けます。この要素は Invoice Table field を表します (詳しい手順については、Step 26 を参照してください) 。