> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 複数ページにまたがるテーブルの検出

> 複数ページにまたがるテーブルを検出する方法について説明します。ヘッダーとフッターの繰り返しを制御し、列名には繰り返しグループを使用して、繰り返しテーブルを処理します。

<div id="what-is-a-multi-page-table">
  ## 複数ページにまたがるテーブルとは
</div>

ABBYY FlexiLayout Studio では、複数ページにまたがるテーブル、つまり文書の複数のページにまたがって続き、すべてのページで列の順序と数が同じテーブルを検出できます。列の幅や正確な位置はページごとに若干異なる場合があります (プログラムで許容される最大のずれは 1 インチです) 。

簡潔にするため、複数ページにまたがるテーブルのうち 1 ページ上にある各部分を *1 ページのサブテーブル* と呼びます。

<div id="the-header-and-footer-of-a-multi-page-table">
  ## 複数ページにまたがるテーブルのヘッダーとフッター
</div>

複数ページにまたがるテーブルでは、ヘッダーが各ページに繰り返し表示される場合と、最初のページに 1 回だけ表示される場合があります。Header is on each page オプションは、すべてのページでヘッダーを検出するかどうかを指定します。このオプションが無効になっている場合、ABBYY FlexiLayout Studio は最初の 1 ページのサブテーブルでのみヘッダーを検索します。

同様に、テーブルのフッターも、最後のページに 1 回だけ表示される場合と、各ページの下部に表示される場合があります。Footer is on each page オプションは、すべてのページでフッターを検出するかどうかを指定します。このオプションが無効になっている場合、ABBYY FlexiLayout Studio は最後の 1 ページのサブテーブルでのみフッターを検索します。

<div id="how-the-program-searches-for-a-multi-page-table">
  ## プログラムが複数ページにまたがるテーブルを検索する方法
</div>

プログラムは、ユーザーが指定した検索領域の先頭ページから複数ページにまたがるテーブルの検索を開始し、以降のページでも検索を続けます。検索は、次のいずれかの条件に当てはまると終了します。

* フッターが最後のページにのみ存在する必要があり、そのフッターが検出された場合。
* プログラムが、そのテーブルに対して指定された検索領域の末尾に達した場合。
* プログラムがページ上で 1 ページのサブテーブルを1つも検出しなかった場合。つまり、ヘッダー、フッター、またはテーブル本体のいずれも見つからなかった場合です。

<div id="use-the-region-of-another-element-to-detect-a-column-name">
  ## 別の要素の領域を使って列名を検出する
</div>

複数ページにまたがるテーブルでも、テーブルまたはそのサブテーブルのヘッダーやフッターを検索するには、引き続き 2 つのメソッドを使用できます。1 つはキーワードを指定する方法 (**Detect by keyword** オプション) 、もう 1 つは、すでに検出された要素をヘッダーまたはフッターとして使用する方法 (**Use found element as...** オプション) です。

前者のメソッドを使用すると、プログラムはヘッダーまたはフッターが現れる可能性のあるページ (**Header/Footer occurs on every page** オプションで指定) で、指定したキーワードを検索します。キーワードでは処理対象の画像上の列名を確実に検出できない場合は、**Use found element as...** オプションを使用してください。

複数ページにまたがるテーブルで、ヘッダーが最初のページにのみ、フッターが最後のページにのみ現れる場合は、1 ページのテーブルと同様に、すでに検出されている単純要素を使用できます。このメソッドは [Sample 3](/ja/flexi-capture/fls/tutorial3/tutorial3-general) で使用されています (**%public%\ABBYY\FlexiCapture\12.0\Samples\FLS\English\Invoice** のプロジェクトを参照) 。

ただし、ヘッダーまたはフッターをすべてのページで検出する必要がある場合は、すでに検出されている繰り返しグループのサブ要素を使用するのが最適です。繰り返しグループを使用すると、繰り返しグループ内でヘッダーを 1 回だけ記述し、その繰り返しグループに可能なインスタンス数を指定することで、すべてのページでヘッダーを見つけることができます。

要素ツリーで **Table** 要素が繰り返しグループの下に記述されている場合は、サブ要素のすべてのインスタンス (`AllInstances`) を使用して、列名を繰り返しグループで参照します。この方法の例については、**%public%\ABBYY\FlexiCapture\12.0\Samples\FLS\English\Invoice with Repeatable Groups** のsample プロジェクトを参照してください。

<Note>
  ページ上に選択した繰り返しグループのインスタンスが複数ある場合は、先頭のインスタンスが列名として使用されます。
</Note>

<div id="search-for-repeating-tables">
  ## 繰り返しテーブルの検索
</div>

ドキュメントによっては、1 ページ内に同一のテーブルが複数存在することがあります (これらのテーブルでは、テーブルの配置や列の順序が同じ場合があります) 。また、一連のテーブルの最後の 1 つが途中で途切れ、次のページに続くこともあります。テーブルとテーブルの間には、たとえば表題や説明メモなどのテキストデータや視覚的な書式要素が入る場合があります。

このようなテーブルは、テーブルの 1 つのインスタンスを表す **Table** 要素を 繰り返しグループ の中に配置することで検出できます。これにより、テーブル全体のセットを 1 つの **Table** 要素で記述し、その **Table** 要素を含む 繰り返しグループ のプロパティで、各インスタンスの繰り返し回数を指定できます。

すでに検出された要素に基づいて列名を検出するために **Use found element as...** オプションを使用している場合は、この要素を **Table** 要素の上にある同じ 繰り返しグループ 内に配置すると便利です。

この場合、列名の検出に使用する補助要素を選択するときは、繰り返しグループ 内にある補助要素の現在のインスタンス (`CurrentInstance`) を参照してください。

プログラムは各列名のインスタンスを検索する際に、それに対応する補助要素のインスタンスを使用します。この方法の例については、**%public%\ABBYY\FlexiCapture\12.0\Samples\FLS\English\Prices** の sample プロジェクトを参照してください。
