- テーブルの ヘッダー を記述します。Reference 列と Designation 列の名前はキーワードで記述し (詳しい手順は Step 13 を参照) (Table 要素 → Properties ダイアログ → Columns タブ → column Properties ダイアログ) 、数量、単価、合計金額 の各列名は、前に記述した補助 要素 を使って検出することにしました。
- テーブルの フッター を記述します。フッター を記述するには、キーワードやフレーズを使用して フッター の先頭を検出する、前に記述した 要素 を使うことにしました (詳しい手順は Step 13 を参照) 。
- テーブルの search area を記述します。右側の検索範囲を制限するため、Sales 列名を使用します。
- 型が Table の 要素 を作成し、InvoiceTable という名前を付けます。
- Columns タブをクリックします。
- Select をクリックし、前に記述した InvoiceTable block を、InvoiceTable 要素 で検出する block として指定します (詳しい手順は Step 2 を参照) 。
- Reference 列を選択して [Properties] をクリックします。この列名を探すにはキーワード Reference を使用するので、既定値のままにします。
- Designation 列を選択して [Properties] をクリックします。この列名を探すにはキーワード Designation を使用するので、既定値のままにします。
- 数量 列を選択して [Properties] をクリックします。この列名を見つけるには、前に検出した 要素 TableHeader.kwQuantity を使用します。Use found 要素 as column name オプションを選択し、
をクリックして TableHeader.kwQuantity 要素 を選択します。

- UnitPrice 列を選択して [Properties] をクリックします。この列名を見つけるには、前に検出した 要素 TableHeader.kwUnitPrice を使用します。Use found 要素 as column name オプションを選択し、
をクリックして TableHeader.kwUnitPrice 要素 を選択します。

- 合計金額 列を選択して [Properties] をクリックします。この列名を見つけるには、前に検出した 要素 TableHeader.kwTotal を使用します。Use found 要素 as column name オプションを選択し、
をクリックして TableHeader.kwTotal 要素 を選択します。 - Order タブをクリックします。
- 探している列の間に別の列 (たとえば Unit) が入ることもありますが、目的の列は常に Reference、Designation、数量、単価、合計金額 の順に並びます。Rules for column order オプションを選択し、[Add…] をクリックして、次の列順を指定します: Reference << Designation << 数量 << 単価 << 合計金額。

表示する...
表示する...

- ヘッダー タブをクリックします。ヘッダー は必要ですが、search constraints は追加しないため、既定値のままにします。

- フッター タブをクリックします。フッターの検出には、先に検出した要素 Footer.kwFooter を使用します。Use found 要素 as footer オプションを選択し、
をクリックして Footer.kwFooter 要素を選択します。

- Rows タブをクリックします。
- テーブル内の一部の列には複数行のエントリが含まれる場合があるため、行を検出するためのマスター列を指定する必要があります。Use master columns to detect rows オプションを選択します。この列には常にデータが含まれ、各エントリがテーブルの1行に対応するため、主マスター列として 合計金額 列を指定します。この列がドキュメント上で検出されない場合に備えて、2番目と3番目のマスター列として、それぞれ 数量 列と 単価 列を指定します。
をクリックし、この順序でマスター列を指定します。

- Relations タブをクリックします。目的の列は Sales 列名の先頭より左側 (少し間隔を空けた位置) にあるため、次の検索制約を設定します。
- 要素 TableHeader.kwSales の左側
- Offset = -40、Reference boundary = Left。 注。 オフセット値を選択する際は、事前認識で検出された参照オブジェクトと対象オブジェクトの幾何学的プロパティ (サイズや境界など) を分析するとよいでしょう。そうしないと、これらの値は試行錯誤で決めることになります。
- テスト画像に対して FlexiLayout をマッチングします。テーブル要素が存在するすべての画像で、プログラムが正常に検出できていることがわかります。ただし、一部の画像では 数量 列に前の列の不要なアーティファクトも含まれています。有用なデータをノイズから分離するため、この列に現れる可能性のあるコンテンツの型を指定しましょう。
- InvoiceTable 要素の Properties ダイアログを開きます。Columns タブをクリックし、数量 列の Properties ダイアログを開いて、Check content type オプションを選択します。Type of column content ドロップダウンリストで Number を選択します。

- テスト画像に対して FlexiLayout のマッチングを試し、数量 列に不要なデータが含まれていないことを確認します。
- InvoiceTable ブロックの位置を記述するには、Source 要素 オプションを選択し、
をクリックして、ソース要素として InvoiceTable 要素を指定します。
