Exclude function が検索領域から Region を除外する仕組み
Exclude function は、要素の検索領域から Region を除外します。除外する Region は、function の呼び出し時に指定します。
除外対象の Region には、次のいずれかを指定できます。
- 仮説の Region (検出されていても、されていなくても可)
- 見つかった要素の Rectangle または矩形の array
- 見つかった仮説の一部であるオブジェクトの Region から構成された Region (
ExcludeSetメソッドを参照)

Exclude.fsp sample プロジェクト
Exclude.fsp project (フォルダー %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Exclude) では、Exclude function の動作を確認できます。
この project には 4 つのページがあります。
- ページ 1 – 住所fieldは複数行で記載されています。Address: という名前は 1 行目にあるため、data field が field 名の右側または下側にあるとは言えません。ただし、この名前は認識から除外する必要があります。
- ページ 2 – 住所fieldには名前がありません。
- ページ 3 と 4 – (Address) という行が data field 内にあります。ただし、これも認識から除外する必要があります。
field 名と住所 field の要素を作成する
名前用の要素は、住所 field 用の要素より先に作成する必要があります。これは、
Exclude 関数では、現在の要素よりも FlexiLayout tree の上位にある要素しか参照できないためです。
Address の検索領域から field 名を除外する
要素のプロパティを保存したら、FlexiLayout のマッチング手順をもう一度実行します。すると、住所 field に対応するブロックの Region が非矩形になることがわかります。これは、名前の Region がそこから切り取られているためです。

Exclude regions of elements セクションでは、別の要素に対して見つかった 仮説 の Region を、現在の要素の検索領域から除外できます。より複雑な形状の Region を除外する場合、または最初に Region を検出してから 認識 処理から除外する場合は、Advanced pre-search relations field で
Exclude、ExcludeRect、ExcludeSet 関数を使用します。ブロックの Region は定義上、複数の矩形を上下に重ねて構成されるため、どの水平線もその Region と交差できるのは 1 回だけです。つまり、垂直方向に突き出た「歯」のような形状は存在できません。したがって、除外する line と必要な情報が同じ高さ、またはほぼ同じ高さにある場合、その名前を FlexiLayout の作成段階で除外することはできません。その場合は、FlexiCapture で認識後に Substitute from the list ルールを使用して名前を除外できます。


