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