Skip to main content
この段階では、次の点を明らかにする必要があります。
  • 画像上の field の配置に、何らかのパターンや規則性はありますか。
  • データfield を探す際に、どの要素を手がかりにできますか。
  • 要素はどの順序で検索すべきですか。(これは重要です。後続の各ステップでは、直前のステップで見つかった要素しか利用できないためです。)
これは複数ページ文書であるため、まず文書の最初と最後のページを識別するために使用できるオブジェクトを特定します。これらのオブジェクトは、特別な複合 Header 要素と Footer 要素で記述できます。
  • Header 要素は、文書の最初のページにのみマッチする必要があります。
プロジェクトに他の文書タイプの文書も含まれている場合、この要素は識別子としても使用されます(つまり、この文書タイプを識別する固有の特徴です)。
  • Footer 要素は、文書の最後のページにのみマッチする必要があります。このグループ内に必須のサブ要素を作成し、Footer 要素が他の文書ページにマッチしないようにしてください。
画像を解析すると、次のことがわかります。
  1. 最初のページには、InvoiceNumberInvoiceDateDeliveryAddress で構成される field グループがあります。InvoiceNumber field の名前は常に各文書の先頭にありますが、InvoiceDateDeliveryAddress は常に存在するとは限りません。
    • InvoiceNumber field と InvoiceDate field は、対応する名前の右側または下側に配置されます。
    • DeliveryAddress についても、検索領域を制限したうえで、対応する名前の右側または下側を探します。さらに、下方向の検索領域を制限するための要素も必要です。
    • 一部の画像ではこれらの field に値がないため、次の条件を指定するとマッチング処理を高速化できます。field の名前が検出されていない場合は、その field の値を探さないようにします。
  2. この field グループは、文書の識別子として使用できます。これらの field は、InvoiceHeader という名前の複合 Header 要素の一部として記述されます。
  3. 文書の最後のページには、テーブルの下に TOTAL AMOUNT MUSTCarried overTotal CHFTOTAL という単語があります。ただし、これらの単語は文書内の他の場所(たとえば、名前やテーブル本体)にも現れることがあります。これらの単語を見つけるには、追加の参照要素(たとえば、テーブルの列名)を使用する必要があります。これらの参照要素は、検索領域を制限するのに役立ちます。
  4. 最後のページを記述する要素は、InvoiceFooter という名前の複合 Footer 要素の一部になります。
  5. Footer 要素が文書の最後のページにのみマッチするようにするには、必須要素を含める必要があります。最後のページを識別する単語(項目 3 を参照)は各文書の最後のページに現れるため、それらを記述する要素を必須要素にしてください。
  6. テーブル(InvoiceTable という名前にします)は最初のページで始まり、最後のページで終わります。さらに、テーブルの前には常に最初のページに列名があります。テーブルの終わり(最後のページ上)を識別するには、補助要素(たとえば、InvoiceFooter グループの必須要素)を使用します。
    文書の全ページの集合は、マルチページキャンバスと呼ばれます。マルチページキャンバスは、文書のすべてのページを隙間なく上から下へ連結し、すべてのページの左境界が点 (0, 0) を通る同じ軸上に来るようにして形成されます。ページを連結する順序は、バッチ内のページ順によって決まります。したがって、指定できるのはテーブルの開始位置(最初のページ上のヘッダー)と終了位置(最後のページ上のフッター)だけです。プログラムは文書全体、つまりマルチページキャンバス全体でテーブルを検索します。
  7. Company field の会社名は、常に最初のページの上部 3 分の 1 の範囲で探します。
  8. Total Amount field の名前は、常に最後のページのテーブルの下にあります。field の値は、名前の右側または下側にあります。