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

# すべての種類の要素に対する仮説

> すべての FlexiLayout 要素に共通する仮説のプロパティ（IsNull、Region、FuzzyRect、境界、page メソッド）と、ヌル仮説の具体例。

要素の仮説は、見つかる場合と見つからない場合があります。見つかった仮説は、通常、1 つまたは複数の画像オブジェクト、またはその断片に基づいて形成されます (例外は **White Gap** 要素で、これは画像オブジェクトをまったく含まない場合があります) 。

<div id="hypothesis-regions-and-boundaries">
  ## 仮説の Region と 境界
</div>

単純な要素で見つかった仮説は、常に連続した Region です。**White Gap**、**Separator**、および **Barcode** 要素の仮説は、常に単一の Rectangle です。

仮説が検出された画像オブジェクトのセットに基づいて形成される場合、たとえば **Paragraph** 要素の仮説では、その仮説の Region は、検出されたオブジェクトの Rectangle の array に基づいて構築されます。この方法で作成された Region は、仮説の `Region` メソッドで取得できます。

画像上に仮説の Region を表示するとき、または仮説に基づいてブロックを作成するとき、Region の 境界 は各 Rectangle の 境界 に正確には一致しません。代わりに、見やすく表示するために 検索領域 の 境界 が滑らかにされます。この方法で作成された Region は、仮説の `SimplifiedRegion` メソッドを使用して取得できます。

`Region` メソッドと `SimplifiedRegion` メソッドは、**Advanced** タブの **Advanced pre-search relations** field (要素の 検索領域 を記述する場合) または、ブロックのプロパティを記述してすでに見つかっている要素を使用する場合の **Region expression** field のいずれかで使用できます。

仮説が見つからなかった場合、それはその 検索領域 の ファジー矩形 と一致します。画像上に見つからなかった仮説を表示するとき、FlexiLayout Studio は ファジー矩形 の外側の Rectangle を描画します。

任意の仮説の `Left`、`top`、`Right`、および `Bottom` の 境界 は range です。見つかった各仮説では、その range は点になります。つまり、`Left.Start = Left.End`、`top.Start = top.End` などです。見つからなかった仮説では、境界 の range はその 検索領域 の range と一致します。

<div id="hypothesis-access-in-flexilayout-code">
  ## FlexiLayout コードでの仮説へのアクセス
</div>

ブロックと要素の対応するダイアログのコードで、生成された仮説とそのプロパティにアクセスすると、FlexiLayout を設定するための追加の機能を利用できます。要素の仮説には、要素名でアクセスできます。[Advanced post-search relations](/ja/flexi-capture/fls/template/advanced-post-search) field で現在の要素の仮説にアクセスするには、プロパティ名のみを使用できます。

仮説とそのプロパティには、読み取り専用モードでアクセスします。要素の仮説には、要素の **Properties** ダイアログの **Advanced** タブにある [Advanced pre-search relations](/ja/flexi-capture/fls/template/advanced-pre-search) および **Advanced post-search relations** field、ならびにブロックの **Properties** ダイアログにある [Region expression](/ja/flexi-capture/fls/template/search-constraints) field でアクセスできます。

**Advanced pre-search relations** では、FlexiLayout ツリーで現在の要素より上にあるすべての要素について、生成された仮説 (およびそのプロパティ) にアクセスできます。**Advanced post-search relations** では、FlexiLayout ツリーで現在の要素より上にある要素について生成された仮説と、現在の要素自体の仮説にアクセスできます。

**Region expression** では、すべての要素の仮説 (およびそのプロパティ) にアクセスできます。

<div id="properties-of-hypotheses-for-all-element-types">
  ## すべての要素型の仮説のプロパティ
</div>

次の表は、すべての要素型の仮説のプロパティを示しています。

| Property                                    | Description                                                                                                                                                           |
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Logic IsNull()`                            | これがヌル仮説であるかどうか (要素が検出されなかった場合、仮説の `IsNull` プロパティは `True` になります) 。                                                                                                     |
| `Logic IsFound()`                           | 仮説がヌルではないかどうか (要素が検出されなかった場合、仮説の `IsFound` プロパティは `False` になります) 。`not IsNull` と同等です。                                                                                 |
| `XInterval Left()`                          | 仮説の左側の境界。グローバル座標での水平方向の範囲です。                                                                                                                                          |
| `YInterval top()`                           | 仮説の上側の境界。グローバル座標での垂直方向の範囲です。                                                                                                                                          |
| `XInterval Right()`                         | 仮説の右側の境界。グローバル座標での水平方向の範囲です。                                                                                                                                          |
| `YInterval Bottom()`                        | 仮説の下側の境界。グローバル座標での垂直方向の範囲です。                                                                                                                                          |
| `XInterval XCenter()`                       | 仮説の中心の X 座標。グローバル座標での水平方向の範囲です。                                                                                                                                       |
| `YInterval YCenter()`                       | 仮説の中心の Y 座標。グローバル座標での垂直方向の範囲です。                                                                                                                                       |
| `DistInterval Width()`                      | グローバル座標での仮説の幅。距離の範囲です。                                                                                                                                                |
| `DistInterval Height()`                     | グローバル座標での仮説の高さ。距離の範囲です。                                                                                                                                               |
| `FuzzyRect FuzzyRect()`                     | グローバル座標での仮説のファジー矩形。                                                                                                                                                   |
| `Rect Rect()`                               | グローバル座標で仮説を外接する矩形。ファジー矩形の外側の矩形と一致します。                                                                                                                                 |
| `Region Region()`                           | グローバル座標での仮説の Region。このメソッドは **Group** 要素ではサポートされません。                                                                                                                  |
| `Region SimplifiedRegion()`                 | 視覚的にわかりやすく表示するために単純化された、グローバル座標での仮説の Region。このメソッドは **Group** 要素ではサポートされません。                                                                                          |
| `ImageObjectSet Set()`                      | 仮説に含まれる画像オブジェクト。                                                                                                                                                      |
| `ImageObjectSet ExcludeSet()`               | `Exclude` 型のメソッドによって検索領域から除外された Region 内にある画像オブジェクト。                                                                                                                  |
| `RectArray Rects()`                         | 仮説に含まれる矩形の配列。ほとんどの要素では、検出されたオブジェクトを囲む矩形の配列と一致します。**White Gap** および **Region** 要素では、利用可能なオブジェクトはありません。                                                                 |
| `Int HypothesesCount()`                     | 検索領域内でその要素に対して生成できる仮説の数。<br /><br />**重要!** この関数は、文書内の最大ページ数と最小ページ数が 1 に設定されている場合、つまり検出された文書が 1 ページのみの場合にのみ使用できます。複数ページ文書に対してこの関数を使用すると、FlexiLayout のマッチングでエラーが返されます。 |
| `PageInterval Pages()`                      | 仮説が存在するページの範囲。                                                                                                                                                        |
| `PageArea PageAreaGlobal( Int PageNumber )` | 指定したページ上にある仮説の部分を、グローバル座標で返します。                                                                                                                                       |
| `PageArea PageAreaLocal( Int PageNumber )`  | 指定したページ上にある仮説の部分を、そのページのローカル座標で返します。                                                                                                                                  |

<div id="example-check-for-a-null-hypothesis-before-accessing-properties">
  ## 例: プロパティにアクセスする前にヌル仮説を確認する
</div>

単純要素または**Group**要素の仮説のプロパティにアクセスする前に、アクセスしようとしている仮説がヌル仮説ではないことを確認してください (`IsNull`プロパティを確認します) 。ヌル仮説のプロパティにアクセスすると (これは要素が検出されなかったことを示します) 、エラーが発生します。

プログラムのCD-ROMに収録されている Sample 1 のプロジェクトを使用する例を見てみましょう。

文書上にバーコード形式の識別子があり、バーコードの値が`1556897142240`である文書にのみ FlexiLayout をマッチさせたいとします。

バーコードのプロパティと検索条件を記述する要素 (Sample 1 の要素`IdentityNumber`) の**Advanced post-search relations**セクションに、次のコードを記述します。

```text theme={null}
if value != "1556897142240" then Quality: 0;
```

**Apply** または **Check** をクリックします。コンパイラでは構文エラーは検出されず、コードに問題はないように見えます。しかし、Sample 1 の任意のページで FlexiLayout のマッチングを実行しようとすると、次のエラーメッセージが表示されます: `Error in element “MainGroup.IdentityNumber”, Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber`.

エラーの原因は次のとおりです。FlexiLayout Studio はまず、バーコード要素の仮説を見つけます。次に、バーコードの値をコードで指定された値と比較します。値が異なる場合、`Quality: 0;` というコードによって、その仮説の値が 0 にリセットされます。

その後、この要素に対してヌル仮説が生成され、FlexiLayout Studio はそのヌル仮説に対しても `value != "1556897142240"` という条件をチェックします。ヌル仮説の value にアクセスすることはできないため (このプロパティを持たないため) 、FlexiLayout Studio は "...undefined hypothesis..." というエラーメッセージを表示します。

そのため、コードを次のように調整してください:

```text theme={null}
if not IsNull then {
if value != "1556897142240" then Quality: 0;
}
```

前述のコードは、必須要素に対してのみ動作します。

オプション要素の場合は、コードを次のように調整してください。

```text theme={null}
if not IsNull then {
if value != "1556897142240" then Quality: 0;
}
else {Quality: 0;}
```

そうでない場合、0 にリセットされるのは実際の仮説の Quality だけです。すると FlexiLayout Studio はヌル仮説を生成しますが、この仮説に対しては `if not IsNull` 条件は実行されません。

そのため、最終的な (ヌル) 仮説の Quality は要素の Properties で指定された値のままになります (デフォルト値のままであれば 0.97) 。その結果、指定された要素がなくても、FlexiLayout Studio は FlexiLayout のマッチングを続行します。

コードに `else {Quality: 0;}` を追加すると、この文はすべての仮説 (ヌル仮説を含む) に対して実行されます。さらに、この要素で仮説チェーン全体も 0 にリセットされるため、FlexiLayout のマッチングは停止します。

<div id="region-and-simplifiedregion-methods-compared">
  ## `Region()` メソッドと `SimplifiedRegion()` メソッドの比較
</div>

`Region Region()` メソッドと `Region SimplifiedRegion()` メソッドは、どちらも要素の領域を返しますが、`Region Region()` メソッドが返すのは正確な領域です。

<Frame>
  <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/Region.gif?s=e46c1e1919cef7f966fcb472c25b1a2b" alt="検出されたオブジェクトの境界に沿った、ABBYY FlexiLayout Studio で Region() メソッドにより返される正確な仮説領域のスクリーンショット。" width="190" height="159" data-path="images/flexi-capture/fls/Region.gif" />
</Frame>

`Region SimplifiedRegion()` メソッドは、境界座標に基づいて作成されたRectangleを返します。

<Frame>
  <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/Simplified_Region.gif?s=5f6838ff02b0d119264bc09c42536cb7" alt="境界座標に基づく、ABBYY FlexiLayout Studio で SimplifiedRegion() メソッドにより返される単純化されたRectangleの仮説領域のスクリーンショット。" width="181" height="154" data-path="images/flexi-capture/fls/Simplified_Region.gif" />
</Frame>
