メインコンテンツへスキップ
要素に対する仮説は、見つかった場合と見つからなかった場合のいずれかです。見つかった仮説は、原則として 1 つまたは複数の画像オブジェクトまたはその断片に基づいて定義されます(例外は White Gap 要素で、画像オブジェクトをまったく含まない場合があります)。 単純な要素に対する見つかった仮説は、常に連続した領域です。White Gap、Separator、Barcode 要素の仮説は、常に 1 つの長方形です。 仮説が検出された画像オブジェクトの集合(例:Paragraph 要素の仮説)に基づいて定義される場合、仮説の領域は検出されたオブジェクトの長方形配列に基づいて構築されます。この方法で作成された領域は、仮説の Region メソッドで取得できます。画像上に仮説の領域を表示する場合や、仮説に基づいてブロックを作成する場合、領域の境界は各長方形の境界に厳密には一致しません。可視性を高めるため、検索領域の境界は平滑化されます。このように作成された領域は、仮説の SimplifiedRegion メソッドでも取得できます。RegionSimplifiedRegion は、Search Conditions セクション(要素の検索領域の記述時)でも、ブロックのプロパティを記述し既に見つかった要素を使用する場合でも利用できます。 仮説が見つからなかった場合、その仮説は検索領域のファジー長方形と一致します。未検出の仮説を画像上に表示する際、プログラムはそのファジー長方形の外接長方形を描画します。 任意の仮説の Left、Top、Right、Bottom の境界は「範囲」です。見つかった仮説では、範囲は点へと縮退します。すなわち、Left.Start = Left.EndTop.Start = Top.End などです。未検出の仮説では、各境界の範囲はその検索領域の範囲と一致します。 ブロックや要素の対応するダイアログボックスのコードで、生成済みの仮説とそのプロパティにアクセスすることで、FlexiLayout の設定に追加の手段を得られます。要素の仮説には、要素名でアクセスできます。Hypotheses Evaluation セクションで現在の要素の仮説にアクセスする場合は、プロパティ名のみを使用できます。 仮説およびそのプロパティへのアクセスは読み取り専用です。要素の仮説には、Search ConditionsHypotheses Evaluation の各セクション、ならびに field の Code Editor セクションからアクセスできます。Search Conditions では、Elements ツリーで現在の要素より上にあるすべての要素について、生成済みの仮説(およびそのプロパティ)にアクセスできます。Hypotheses Evaluation では、Elements ツリーで現在の要素より上にある要素の生成済み仮説に加えて、現在の要素自体の仮説にもアクセスできます。field の Code Editor では、すべての要素の仮説(およびそのプロパティ)にアクセスできます。 以下の表に、すべての種類の要素に対する仮説のプロパティを示します。
Property説明
Logic IsNull()これがヌル仮説かどうか(要素が検出されている場合、仮説の IsNull プロパティは True になります)。
Logic IsFound()仮説がヌルでないかどうか(要素が検出されていない場合、仮説の 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()仮説を外接する矩形(グローバル座標)。ファジー矩形の外接矩形と一致します。
Region Region()仮説の領域(グローバル座標)。このメソッドは Group 要素ではサポートされません。
Region SimplifiedRegion()視認性向上のために簡略化した仮説の領域(グローバル座標)。このメソッドは 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 要素の仮説のプロパティにアクセスする前に、対象の仮説が null 仮説ではないことを確認してください(IsNull プロパティを呼び出します)。null 仮説(検出されなかった要素に対応)のプロパティにアクセスするとエラーになります。 Document 上にバーコード形式の識別子があり、バーコードの値が 1556897142240 のものにのみ FlexiLayout を一致させたいとします。これを実現するには次の手順に従います。バーコードのプロパティと検索制約を定義している要素の Hypotheses Evaluation セクションに、次のコードを記述します。
if value != "1556897142240" then Quality: 0;
「Apply」または「Check Code」をクリックします。コンパイラは構文エラーを検出しません。コードは問題ないように見えます。しかし、Sample 1 の任意のページで FlexiLayout の照合を試みると、次のエラーメッセージが表示されます: “Error in element “MainGroup.IdentityNumber”, Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber.” エラーの原因は次のとおりです。プログラムはバーコード要素の仮説を検出します。続いて、バーコードの値をコードで指定された値と比較します。値が異なる場合、Quality: 0; のコードによって仮説のスコアは 0 にリセットされます。すると、この要素には null 仮説が生成され、プログラムはこの仮説に対しても条件 value != "1556897142240" をチェックします。null 仮説の値へアクセスすることは許可されていない(そのプロパティが存在しない)ため、プログラムは “…undefined hypothesis…” というエラーメッセージを出力します。 したがって、コードを次のように調整する必要があります。
if not IsNull then {
if value != "1556897142240" then Quality: 0;
}
上記のコードが機能するのは必須要素のみです。任意要素の場合は、次のようにコードを調整してください。
if not IsNull then {
if value != "1556897142240" then Quality: 0;
}
else {Quality: 0;}
そうでない場合は、実際の仮説の品質だけが 0 にリセットされます。これによりプログラムはヌル仮説を生成し、このヌル仮説に対しては「if not IsNull」が実行されません。したがって、最終的な(ヌル)仮説の品質は、その要素のプロパティで指定された値(デフォルト値のままなら 0.97)のままで、当該要素がなくてもプログラムは FlexiLayout のマッチングを継続します。 コードに else {Quality: 0;} を追加すると、その文はすべての仮説(ヌル仮説を含む)に対して実行され、この要素で仮説の連鎖全体が 0 にリセットされるため、FlexiLayout のマッチングは停止します。

メソッド Region Region() と Region SimplifiedRegion() の比較

メソッド Region Region()Region SimplifiedRegion() は要素の領域を取得しますが、Region Region() は厳密な領域を返し、Region SimplifiedRegion() は境界座標に基づいて生成された Rectangle を返します。