- field 名の右側かつ下側で
- 検索領域の下側を制限するために ホワイトギャップ 要素を使用して
- *Paragraph 要素を使用して
- InvoiceHeader 要素内に、型 Group の要素を作成し、名前を grAddress にします。
- Relations タブをクリックし、グループ内の要素に対して次の検索条件を指定します。
- kwDeliveryAddress 要素の Above、Offset = -400
- kwDeliveryAddress 要素の右 boundary の Left of、Offset = -800、Reference boundary = Right。
- kwDeliveryAddress 要素の左 boundary の Right of、Offset = -50、Reference boundary = Left。
- kwDeliveryAddress 要素の上 boundary の Below、Offset = -20、Reference boundary = Top。
表示...
表示...
- InvoiceHeader.grAddress 要素内に、型 ホワイトギャップ の要素を作成し、名前を wgAddressAbove にします。
- ホワイトギャップ タブをクリックします。
- Orientation で Horizontal を選択します。Min height を 55 に設定します。 注。 ホワイトギャップの高さや幅の値を選択する際は、pre-recognition results モードで隣接する画像オブジェクトのジオメトリ (つまり、boundary やサイズ) を考慮するとよいでしょう。
- 段落内のホワイトギャップを探すため、Search among objects of type では Text のみを選択します。
- Rubbish で、次の値を指定します。
- Lower threshold limit – 20;
- Upper threshold limit – 80;
- Threshold coefficient (%) – 10.
プロパティ Lower threshold limit、Upper threshold limit、および Threshold coefficient (%) の値は、試行錯誤によってのみ決定できます。まずはデフォルト値から始めることをお勧めします。デフォルト値でうまくいかない場合は、すべてのテスト画像でホワイトギャップが検出されるまで値を調整してください。
- 追加の検索条件は指定せず、その他のオプションはデフォルト値のままにします。
- Relations タブをクリックします。
- ホワイトギャップ は kwDeliveryAddress というキーワードの下にしか配置できないため、次の検索条件を指定します。
- kwDeliveryAddress 要素の Below、Offset = 20 画像上の別の領域、たとえば field 名とテキストの間にあるホワイトギャップをプログラムが見つけないようにするために、Offset が必要です。Advanced タブをクリックします。
- Delivery Address field はすべての画像に存在するわけではありませんが、存在する場合は必ずその名前を伴うため、Advanced pre-search relations field に次の追加条件を指定します。画像オブジェクトは kwDeliveryAddress 要素が検出された場合にのみ検索します。 FlexiLayout language では、この条件は次のように記述できます。 If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind;
- FlexiLayout をマッチングして、wgAddressAbove 要素がすべての画像で検出されるかどうかを確認します。
- 指定した検索領域内でプログラムが複数のホワイトギャップを見つけることがあり、常に正しいものを選択できるとは限らないため、追加の検索条件を設定する必要があります。画像を確認すると、目的のホワイトギャップは指定された検索領域内で最も上にあるギャップであることがわかります。したがって、Advanced pre-search relations field に次の追加条件を指定します。第 1 ページの上 boundary に最も近い画像オブジェクトを検索します。 FlexiLayout language では、この条件は次のように記述できます。 NearestY: Page(1).RectGlobal.Top;
- InvoiceFooter 要素を一時的に Exclude し、FlexiLayout をマッチングします。
- InvoiceHeader.grAddress 要素内に、型が Paragraph の要素を作成し、DeliveryAddress という名前を付けます。
- Relations タブをクリックします。
- DeliveryAddress はホワイトギャップ wgAddressAbove の上にしか配置できないため、次の検索条件を指定します。
- wgAddressAbove 要素の Above、Offset = 0。
- DeliveryAddress 要素の検索領域は InvoiceHeader.grAddress グループのレベルですでに指定されているため、ここで改めて指定する必要はありません。
- Advanced タブをクリックします。
- DeliveryAddress field の名前も検索領域内にあるため、DeliveryAddress の値だけを取得できるよう、それを除外する必要があります。さらに、検索領域内には区切り線やノイズもあるため、これらも除外するのが適切です。以上の理由から、kwDeliveryAddress 要素の Region をそのまま除外することはできません。kwDeliveryAddress 要素の Region を取得し、すべてのノイズを含むようにこの Region を拡大してから、結果として得られる Rectangle を除外するほうが適切です。これを行うには、Advanced pre-search relations field に次の検索条件を指定します。 If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind; Else // フィールド名の周囲に長方形を描画します (境界に多少のオフセットを含む) { Let Left = InvoiceHeader.kwDeliveryAddress.Rect.Left - 100dt; Let Top = InvoiceHeader.kwDeliveryAddress.Rect.Top - 100dt; Let Right = InvoiceHeader.kwDeliveryAddress.Rect.Right + 20dt; Let Bottom = InvoiceHeader.kwDeliveryAddress.Rect.Bottom; // 生成された長方形を field の検索領域から除外します ExcludeRect (Left, Top, Right, Bottom); }
- InvoiceFooter 要素を一時的に除外し、FlexiLayout をマッチングします。
- DeliveryAddress ブロックの位置を、検出された DeliveryAddress 要素の長方形領域として指定し、視認性を高めるために簡略化したうえで、縦横に 5 ドットずつ拡大します。これを行うには、Expression オプションを選択し、次の式を入力します。 Rect outputRect; OutputRegion = InvoiceHeader.grAddress.DeliveryAddress.SimplifiedRegion; IsNull = InvoiceHeader.grAddress.DeliveryAddress.IsNull; OutputRegion.Inflate (5dt, 5dt);
