仮説とは、検出された object が特定の要素に対応しており、つまり、その要素に指定されたプロパティと検索条件を満たしているとプログラムが判断したものです。
要素の 検索領域 内に、その要素に対応する object または object の集合が複数存在することがあります。この場合、プログラムは検出された object ごとに仮説を生成します。
仮説は 品質 によって特徴付けられます。
仮説の 品質 は、検出された object が対応する要素の記述にどの程度一致しているかを表すもので、0 から 1 の数値で示されます。
仮説の 品質 は [ Pre-search quality ]*[ Post-search quality ] として計算されます。ここで、
- Pre-search quality は、Properties ダイアログと Advanced pre-search relations フィールドで行った設定の 品質 です。
- Post-search quality は、Advanced post-search relations フィールドで指定した条件を適用した結果です。
Group element の仮説の 品質 は、その構成要素すべての仮説の 品質 を掛け合わせて計算されます。
オプション要素 に対して、プログラムはヌル仮説を生成します。
ヌル仮説とは、検索領域 内でオプション要素に対応する object が何も検出されなかった場合に、プログラムが生成する仮説です。
つまり、プログラムがオプション要素に対応する object を 1 つも見つけられなかった場合でも、FlexiLayout のマッチングは中断されず、代わりにヌル仮説が生成され、その 品質 にはオプション要素の作成時にユーザーが設定した値が割り当てられます。
便宜上、仮説 という用語は、特定の仮説に含まれる object の集合を指す意味でも使われます。
画像上の 2 つの static text を見つけるために、2 つの要素を作成する必要があるとします。1 つ目の static text は “mother”、2 つ目の static text は “father” で、“father” というテキストは常に “mother” というテキストの下にあります。1 つ目の Static Text 要素 StaticText1 は “mother” というテキストを探すために使用し、2 つ目の Static Text 要素 StaticText2 は “father” というテキストを探すために使用します。さらに、両方の要素は省略可能で、それぞれのヌル仮説の品質が 0.97 に設定されているものとします。
StaticText1 の検索領域には制約が設定されていません。“father” というテキストは常に “mother” というテキストの下にあるため、StaticText2 が常に StaticText1 の下に位置するよう指定できます。これを行うには、StaticText2 要素の Properties ダイアログの Relations タブで、対応する制約 Below: SearchElements.StaticText1; を入力します。
次の図は、“mother” という単語が 2 回 (“father” という単語の上と下に) 出現し、さらに “father” という単語の上にある “mother” という単語に 1 つの OCR エラーがある画像に対して、FlexiLayout をマッチングした結果を示しています。
FlexiLayout のマッチングにより、StaticText1 要素に対して 2 つの仮説が生成されました。1 つ目の仮説は、1 つの OCR エラーを含んで認識された “father” という単語の上にある “mother” という単語に対応し、その品質は 0.98 です。2 つ目の仮説は、“father” という単語の下にある “mother” という単語に対応し、その品質は 1 です。
この段階では、各チェーンの品質は対応する仮説の品質と同じです。したがって、最良のチェーンは品質 1 の仮説から成ります。
StaticText2 要素は StaticText1 要素の下に位置しなければならず、またプログラムは StaticText1 要素に対して 2 つの仮説を生成しているため、ここでプログラムは 2 つの検索領域で必要な static text を探そうとします。プログラムが、“father” という単語の下にある “mother” という単語を見つけた、品質 1 の 2 つ目の仮説を採用した場合、StaticText1 要素の下で StaticText2 要素を見つけることができず、その結果、品質 0.97 のヌル仮説が生成されます。結果として得られる仮説チェーンの品質は 1x0.97=0.97 になります。
一方、プログラムが、“father” という単語の上にある “mother” という単語を見つけた、品質 0.98 の 1 つ目の仮説を採用した場合、StaticText1 要素の下で StaticText2 要素を正しく検出し、品質 1 の仮説を生成します。結果として得られる仮説チェーンの品質は 0.98x1=0.98 になります。
その結果、プログラムは全体の品質が 0.98 のチェーンを選択します。