> ## 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.

# 検索領域から Region を除外する

> Exclude function を使用して、要素の検索領域から不要な Region を削除する方法を、Exclude.fsp sample プロジェクト の住所fieldを例に説明します。

FlexiLayout を作成する際、検索領域を常に相対位置だけ、たとえば別のオブジェクトの上、下、左、または右という関係だけで定義できるとは限りません。これは特に、検索領域に不要なオブジェクトが含まれている場合に当てはまります。たとえば、scanning 中に入り込んだオブジェクトなどです。これらのオブジェクトは認識ブロックに含まれてはならないため、対応する要素を作成するときに除外する必要があります。

以下の図にある住所のfieldは、そのよい例です。field 名 **Address:** と **(Address)** (これらは認識から除外する必要があります) 、および住所そのもの (これは認識される必要があります) の相対的な位置関係に注目してください。

<div id="how-the-exclude-function-removes-regions-from-a-search-area">
  ## Exclude function が検索領域から Region を除外する仕組み
</div>

`Exclude` function は、要素の検索領域から Region を除外します。除外する Region は、function の呼び出し時に指定します。

除外対象の Region には、次のいずれかを指定できます。

* 仮説の Region (検出されていても、されていなくても可)
* 見つかった要素の Rectangle または矩形の array
* 見つかった仮説の一部であるオブジェクトの Region から構成された Region (`ExcludeSet` メソッドを参照)

<Frame>
  <img src="https://mintcdn.com/abbyy/8aWHPAJyzWmTqglX/images/flexi-capture/fls/viz.gif?s=ba911b9543d2d903bcc7440f23232d54" alt="認識対象の住所テキストの横に、field 名 Company、Address、(Address) が表示された 2 つの住所 field のサンプル図。" width="585" height="170" data-path="images/flexi-capture/fls/viz.gif" />
</Frame>

<div id="the-excludefsp-sample-project">
  ## Exclude.fsp sample プロジェクト
</div>

`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の下にあります。

<div id="create-elements-for-the-field-names-and-the-address-field">
  ## field 名と住所 field の要素を作成する
</div>

まず、**Static Text** 要素を作成し、名前を **CompanyHeader** にして値を指定します。この要素は、field 名を検出するために使用します。

次に、**Static Text** 要素を作成し、名前を **AddressHeader** にします。この要素も、field 名を検出するために使用します。次の Static Text 値を指定します: **Address:|(Address)**。つまり、この行として検出し、その後、住所 field の認識対象から除外するすべての候補を列挙します。

これらの行の検索条件を **Relations** field で設定し、**CompanyHeader** 要素の下方 (**Below**) を検索するよう指定します。

<Note>
  名前用の要素は、住所 field 用の要素より先に作成する必要があります。これは、`Exclude` 関数では、現在の要素よりも FlexiLayout tree の上位にある要素しか参照できないためです。
</Note>

FlexiLayout のマッチング手順 (**Match FlexiLayout**) を実行し、住所の項目名が出現するすべてのページで正しく見つかることを確認します。

この例の住所 field は複数行にわたるため、これを検索するための **Paragraph** 要素を作成します。名前を **Address** にし、前の例と同様に、**CompanyHeader** 要素の下方 (**Below**) を検索するよう指定します。

FlexiLayout のマッチング手順を実行すると、ページ 1、3、4 では、項目名の行も住所 field に含まれていることがわかります。

<Frame>
  <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/exclude.png?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=e10b6efc3880a81082cb305888d07002" alt="Exclude.fsp Project に対する ABBYY FlexiLayout Studio の FlexiLayout matching results のスクリーンショット。ページ 1、3、4 の検出された 住所 field に住所 field 名が誤って含まれていることを示しています。" width="630" height="522" data-path="images/flexi-capture/fls/exclude.png" />
</Frame>

<div id="exclude-the-field-name-from-the-address-search-area">
  ## Address の検索領域から field 名を除外する
</div>

次に、**Address** 要素の **Properties** ダイアログに戻り、**Search Constraints** タブをクリックします。**Exclude regions of elements** セクションの横にある **Add...** をクリックし、リストから **AddressHeader** 要素を選択します。

| <img src="https://mintcdn.com/abbyy/r-nfa7jujx5b9gKX/images/flexi-capture/fls/select_elements_to_exclude.png?fit=max&auto=format&n=r-nfa7jujx5b9gKX&q=85&s=4bc4886f0f87ae6eae0b2d447e192b45" alt="SearchElements ツリーで AddressHeader 要素が選択されている、除外する要素を選択するダイアログのスクリーンショット。" width="385" height="467" data-path="images/flexi-capture/fls/select_elements_to_exclude.png" /> | <img src="https://mintcdn.com/abbyy/r-nfa7jujx5b9gKX/images/flexi-capture/fls/prop_search_elements_adress.gif?s=40e05f2dc7bbaf2fa266aa2e51444d3f" alt="Properties of SearchElements.Address ダイアログの Search Constraints タブのスクリーンショット。Exclude regions of elements のリストに SearchElements.AddressHeader が表示されています。" width="427" height="476" data-path="images/flexi-capture/fls/prop_search_elements_adress.gif" /> |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

要素のプロパティを保存したら、FlexiLayout のマッチング手順をもう一度実行します。すると、住所 field に対応するブロックの Region が非矩形になることがわかります。これは、名前の Region がそこから切り取られているためです。

<Frame>
  <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/exclude_adress.png?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=94d4d98e36becda4f25053c2ec44e657" alt="AddressHeader の Region を除外した後の ABBYY FlexiLayout Studio での FlexiLayout マッチング結果のスクリーンショット。field 名が切り取られているため、住所ブロックが非矩形になっていることを示しています。" width="630" height="522" data-path="images/flexi-capture/fls/exclude_adress.png" />
</Frame>

<Note>
  **Exclude regions of elements** セクションでは、別の要素に対して見つかった 仮説 の Region を、現在の要素の検索領域から除外できます。より複雑な形状の Region を除外する場合、または最初に Region を検出してから 認識 処理から除外する場合は、**Advanced pre-search relations** field で `Exclude`、`ExcludeRect`、`ExcludeSet` 関数を使用します。
</Note>

<Note>
  ブロックの Region は定義上、複数の矩形を上下に重ねて構成されるため、どの水平線もその Region と交差できるのは 1 回だけです。つまり、垂直方向に突き出た「歯」のような形状は存在できません。

  したがって、除外する line と必要な情報が同じ高さ、またはほぼ同じ高さにある場合、その名前を FlexiLayout の作成段階で除外することはできません。その場合は、FlexiCapture で認識後に **Substitute from the list** ルールを使用して名前を除外できます。
</Note>
