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