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