Skip to main content
RestrictSearchArea 関数を使用すると、検索領域をRectangle、矩形の配列、または region として指定できます。

RestrictSearchArea を使用する場合

Document のページごとに、目的の field がその名前に対して異なる位置にあることがよくあります。たとえば、あるページでは field が名前の右側にあり、別のページでは名前の下にある場合があります。このようなケースでは、検索領域を矩形の配列として指定することをお勧めします。 このような場合に RestrictSearchArea 関数を使用する方法について詳しくは、Nearest と FuzzyQuality を使用した要素の検索 を参照してください。 また、複数の 要素 に対して同一の検索条件を重複して設定する代わりに、RestrictSearchArea 関数を使用したほうがよい場合もあります。 この関数は、何らかの理由 (たとえば、画質が低い、または layout 上の特性があるなど) で、1 種類の 要素 だけでは不十分な場合に、日付フィールド やその他の field の検索領域を記述するために使用します。

検索条件が重複した SearchOfDate.fsp プロジェクト

RestrictSearchArea 関数は、日付フィールド を検索するためにも使用できます。原則として、日付フィールド の検索には、少なくとも DateCharacter String という 2 種類の 要素 を使用してください。ただし、画質が非常に低い場合は、これら 2 つの 要素 だけでは不十分なことがあります。日付フィールド の検索をどのように構成するかについて詳しくは、高品質または低品質の認識後の日付検索 を参照してください。 この関数の動作を確認するには、サンプル プロジェクト SearchOfDate.fsp (フォルダー %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\RestrictSearchArea) を実行します。このプロジェクトは、Date\FCS プロジェクト フォルダー内にある同名のプロジェクトのコピーです。このプロジェクト内のすべての 要素 (DateFieldDateAsStringDateAsObjectCollection) の検索条件は、次の図に示すように同一でした。
ABBYY FlexiLayout Studio の検索要素のプロパティにある Relations タブ のスクリーンショット。SearchOfDate.fsp プロジェクトで DateField、DateAsString、DateAsObjectCollection の各 要素 に対して元々指定されていた同一の検索条件が表示されています。

重複した制約をRestrictSearchAreaに置き換える

ただし、このプロジェクトでは、DateAsString 要素と DateAsObjectCollection 要素について Relations タブで検索条件を重複して設定する代わりに、RestrictSearchArea 関数を使用し、Advanced タブの Advanced pre-search relations field に次のコードを記述します。
このコードは、日付フィールドを string または object collection として検索する処理が、FlexiLayout Studio が Date 要素でそれを検出できなかった場合にのみ実行されることを意味します。その後、両方の要素は、DateField 要素が検出されなかったのと同じ領域内で検索されます。 これは、DateField.Rect メソッドが DateField 要素の hypothesis を囲む Rectangle を返すためです。hypothesis が見つからなかったため、その Rectangle は 検索領域 と一致します。 したがって、DateAsString 要素と DateAsObjectCollection 要素に指定された 検索領域 は、検出されなかった DateField 要素の 検索領域 を囲む Rectangle と一致します。