メインコンテンツへスキップ
要素の仮説は、見つかる場合と見つからない場合があります。見つかった仮説は、原則として、1 つまたは複数の画像オブジェクト、またはその断片に基づいて形成されます (例外は White Gap 要素で、これは画像オブジェクトをまったく含まない場合があります) 。 単純な要素で見つかった仮説は、常に連続した Region です。White GapSeparator、および Barcode 要素の仮説は、常に単一の Rectangle です。 仮説が検出された画像オブジェクトのセットに基づいて形成される場合、たとえば Paragraph 要素の仮説では、その仮説の Region は、検出されたオブジェクトの矩形の array に基づいて構築されます。この方法で作成された Region は、仮説の Region メソッドで取得できます。画像上に仮説の Region を表示するとき、または仮説に基づいてブロックを作成するとき、Region の boundaries は各 Rectangle の boundaries に正確には一致しません。代わりに、見やすく表示するために 検索領域 の boundaries が滑らかにされます。この方法で作成された Region は、仮説の SimplifiedRegion メソッドを使用して取得できます。Region メソッドと SimplifiedRegion メソッドは、Advanced タブの Advanced pre-search relations field (要素の 検索領域 を記述する場合) または、ブロックのプロパティを記述してすでに見つかっている要素を使用する場合の Region expression field のいずれかで使用できます。 仮説が見つからなかった場合、それはその 検索領域 の ファジー矩形 と一致します。画像上に見つからなかった仮説を表示するとき、プログラムは ファジー矩形 の外側の矩形を描画します。 任意の仮説の LefttopRightBottom の boundaries は range です。見つかった各仮説では、その range は点になります。つまり、Left.Start = Left.End、top.Start = top.End などです。見つからなかった仮説では、boundaries の range はその 検索領域 の range と一致します。 ブロックと要素の対応するダイアログのコードで、生成された仮説とそのプロパティにアクセスすると、FlexiLayout を設定するための追加の機能を利用できます。要素の仮説には、要素名でアクセスできます。Advanced post-search relations field で現在の要素の仮説にアクセスするには、プロパティ名のみを使用できます。 仮説とそのプロパティには、読み取り専用モードでアクセスします。要素の仮説には、要素の Properties ダイアログの Advanced タブにある Advanced pre-search relations および Advanced post-search relations field、ならびにブロックの Properties ダイアログにある Region expression field でアクセスできます。Advanced pre-search relations では、FlexiLayout ツリーで現在の要素より上にあるすべての要素について、生成された仮説 (およびそのプロパティ) にアクセスできます。Advanced post-search relations では、FlexiLayout ツリーで現在の要素より上にある要素について生成された仮説と、現在の要素自体の仮説にアクセスできます。Region expression では、すべての要素の仮説 (およびそのプロパティ) にアクセスできます。 以下のテーブルに、すべての種類の要素に対する仮説のプロパティを示します。

Logic IsNull()

これがヌル仮説かどうかを示します (要素が検出されている場合、仮説の IsNull プロパティは True です) 。

Logic IsFound()

仮説が null ではないかどうかを示します (要素が検出されていない場合、仮説の IsNull プロパティは False です) 。IsNull と同等です。

XInterval Left()

仮説の左境界です。グローバル座標における水平方向の範囲を表します。

YInterval top()

仮説の上境界です。グローバル座標における垂直方向の範囲を表します。

XInterval Right()

仮説の右境界です。グローバル座標における水平方向の範囲を表します。

YInterval Bottom()

仮説の下境界です。グローバル座標における垂直方向の範囲を表します。

XInterval XCenter()

仮説の中心の X 座標です。グローバル座標における水平方向の範囲を表します。

YInterval YCenter()

仮説の中心の Y 座標です。グローバル座標における垂直方向の範囲を表します。

DistInterval Width()

グローバル座標における仮説の幅です。距離の範囲を表します。

DistInterval Height()

グローバル座標における仮説の高さです。距離の範囲を表します。

FuzzyRect FuzzyRect()

グローバル座標における仮説のファジー矩形です。

Rect Rect()

グローバル座標において仮説を外接する Rectangle です。ファジー矩形の外側の矩形と一致します。

Region Region()

グローバル座標における仮説の Region です。このメソッドは Group 要素ではサポートされていません。

Region SimplifiedRegion()

視覚的により分かりやすく表示できるよう簡略化された、グローバル座標における仮説の Region です。このメソッドは Group 要素ではサポートされていません。

ImageObjectSet Set()

仮説を構成する画像オブジェクトです。

ImageObjectSet ExcludeSet()

Exclude 型のメソッドによって検索領域から除外された領域内の画像オブジェクトです。

RectArray Rects()

仮説に含まれる矩形の配列です。ほとんどの要素では、これは検出されたオブジェクトを囲む矩形の配列と一致します。White Gap および Region 要素では、 オブジェクトは使用できません。

Int HypothesesCount()

検索領域内の要素に対して定式化できる仮説の数です。

重要! この関数は、文書内の最大ページ数と最小ページ数が 1 に設定されている場合、つまり検出された文書が 1 ページしかない場合にのみ使用できます。複数ページ文書に対してこの関数を使用すると、 FlexiLayout のマッチングでエラーが返されます。

PageInterval Pages()

仮説が存在するページ範囲です。

PageArea PageAreaGlobal( Int PageNumber )

指定したページ上にある仮説の部分を、グローバル座標で返します。

PageArea PageAreaLocal( Int PageNumber )

指定したページ上にある仮説の部分を、そのページのローカル座標で返します。

単純要素または Group 要素 の仮説のプロパティにアクセスする前に、アクセス対象の仮説がヌル仮説ではないことを確認してください (IsNull プロパティを呼び出します) 。ヌル仮説 (検出されなかった要素に対応する仮説) のプロパティにアクセスすると、エラーが発生します。ここでは、プログラム CD-ROM に収録されている Sample 1 のプロジェクトを使った例を見てみましょう。文書上にバーコード形式の識別子があり、そのバーコードの値が 1556897142240 である文書にだけ FlexiLayout をマッチングさせたいとします。これを実現するには、次のようにします。バーコードのプロパティと検索条件を記述する要素 (Sample 1 の IdentityNumber 要素) の Advanced post-search relations セクションに、次のコードを記述します。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.”エラーの原因は次のとおりです。プログラムはまずバーコード要素の仮説を見つけます。次に、バーコードの値をコードで指定された値と比較します。値が異なる場合、Quality: 0; によって仮説の値は 0 にリセットされます。すると、この要素に対してヌル仮説が生成され、プログラムはそのヌル仮説についても条件 value != “1556897142240” をチェックします。ヌル仮説の value にはアクセスできないため (このプロパティを持たないため) 、プログラムは “…undefined hypothesis…” というエラーメッセージを出します。そのため、コードは次のように修正する必要があります。if not IsNull then { if value != “1556897142240” then Quality: 0; }Note. 上記のコードは、必須要素に対してのみ機能します。オプション要素の場合は、コードを次のように調整する必要があります。if not IsNull then { if value != “1556897142240” then Quality: 0; } else {Quality: 0;}そうしないと、実際の仮説の品質だけが 0 にリセットされます。するとプログラムはヌル仮説を生成しますが、その仮説に対しては “if not IsNull” が実行されません。そのため、最終的な (ヌル) 仮説の品質は要素のプロパティで指定された値のままになります (既定値のままであれば 0.97) 。その結果、指定した要素がなくても、プログラムは FlexiLayout のマッチングを続行します。コードに else {Quality: 0;} を追加すると、この文はすべての仮説 (ヌル仮説を含む) に対して実行されるため、FlexiLayout のマッチングは停止します。これは、この要素で仮説チェーン全体も 0 にリセットされるためです。
メソッド Region Region()Region SimplifiedRegion() はどちらも要素の Region を取得できますが、Region Region() が返すのは正確な Region です。一方、Region SimplifiedRegion() が返すのは、境界座標に基づいて作成された Rectangle です。