- テーブルの Header。前に決めたとおり、すでに検出されている補助要素を使って列名を指定します。
- テーブルの Footer。Footer を指定するには、最終部分の開始を識別する InvoiceFooter グループの、すでに検出されている必須要素 Paragraph を使用することにしました。この要素は、テーブルの最下部に最も近い要素として定義済みです。
- テーブルの検索領域。ほかの用途では不要な最後の Sales 列の名前を使って、右側の検索領域を制限できます。
- SearchElements ツリーで、型が Table の 要素 を作成し、名前を InvoiceTable にします。
- Columns タブをクリックします
- Select をクリックし、前に作成した (Step 3 を参照) InvoiceTable block を検索対象の block として選択します
- テーブル列の検索パラメーターを指定します。
- 列のリストで Reference を選択し、Properties… ボタンをクリックします。
この列の名前には、前に検出された TableHeader.kwReference 要素 を使用します。これを使用するには、Use found element as column name を選択し、次に
をクリックして TableHeader.kwReference を選択します。 - 列のリストで Designation を選択し、Properties… ボタンをクリックします。 この列の名前には、前に検出された TableHeader.kwDesignation 要素 を使用します。
- 列のリストで Unit を選択し、Properties… ボタンをクリックします。 この列の名前には、前に検出された TableHeader.kwUnit 要素 を使用します。
- 列のリストで Quantity を選択し、Properties… ボタンをクリックします。 この列の名前には、前に検出された TableHeader.kwQuantity 要素 を使用します。
- 列のリストで UnitPrice を選択し、Properties… ボタンをクリックします。 この列の名前には、前に検出された TableHeader.kwUnitPrice 要素 を使用します。
- 列のリストで Total を選択し、Properties… ボタンをクリックします。 この列の名前には、前に検出された TableHeader.kwTotal 要素 を使用します。
- 列のリストで Reference を選択し、Properties… ボタンをクリックします。
この列の名前には、前に検出された TableHeader.kwReference 要素 を使用します。これを使用するには、Use found element as column name を選択し、次に
- Order タブをクリックします。
- 探している列は、ほかの列 (たとえば ExtraQtyTag) によって途中で区切られている場合がありますが、順序は常に一定です (最初が Designation、次が Unit Price、その次が Total) 。そのため、Rules for column order を選択し、Add… をクリックして、次の順序で列を追加します: Designation << Unit Price << Total。
- Header タブをクリックします。テーブルの Header は必要ですが、追加の制約を設定する必要はないため、既定値のままにします。
- Footer タブをクリックします。テーブルの最終部分には、前に検出された 要素 InvoiceFooter.Paragraph を使用します。Use found element as footer オプションを選択し、
をクリックしてから、InvoiceFooter.Paragraph 要素 を選択します。
- [Rows] タブをクリックします。
- 一部の列のセルには複数行が含まれる場合があるため、行を区切るためのマスター列を指定する必要があります。[Use master columns to detect rows] を選択します。
まず Total 列を指定します。この列には常にデータが含まれており、テーブルの各レコードでこの列には 1 行のデータがあります。この列が画像上で検出されない場合は、次の行分割オプションとして Unit Price 列と Quantity 列を指定します。これらの列を選択するには、
ボタンを使用します。
- [Relations] タブを選択します。対象のテーブル列は Sales 列名の左側にあるため、次の検索条件を追加します。
- TableHeader.kwSales 要素の左、Offset = 0;
注。 画像品質が低い場合 (たとえば、テーブルの body と footer の間に noise がある場合や、header または footer がない場合) は、テーブルの上限と下限を指定できます。この場合、上限には kwDesignation 要素、下限には Paragraph 要素を使用できます。[Relations] タブで、次の検索条件を追加します。
- kwDesignation 要素の上側の boundary より下、Offset = -50、Reference boundary = Top;
- Paragraph 要素より上、Offset = -50; Reference boundary = Bottom.
- テスト画像に対して FlexiLayout を Match します。 プログラムはすべての画像で table 要素 を正しく検出しますが、一部の画像では Quantity 列に直前の列の不要なテキストが含まれています。 Quantity 列の正しいデータと不要なデータを区別するために、この列の content type を指定します。
- table 要素 InvoiceTable の Properties ダイアログを開きます。 [Columns] タブをクリックし、Quantity 列の [Properties…] ダイアログを開いて、[Check content type] オプションを選択します。[Type of column content] で [Number] を選択します。
- ここで画像に対して FlexiLayout を Match すると、Quantity には必要なとおり数字だけが含まれることがわかります。
- 同様に、UnitPrice 列と Total 列には通貨 content を指定します。
- InvoiceTable block の位置を指定するには、[Source 要素] オプションを選択します。
をクリックし、source 要素 として InvoiceTable を指定します。
