サンプル4。ステップ5.6:Delivery Addressフィールド、grAddress、wgAddressAbove、DeliveryAddress要素
Delivery Addressを検索することに決めました:
- フィールド名前の右および下で
- 白ギャップ要素を使用して下から検索領域を制限
- パラグラフ要素を使用して
これらすべての要素に共通のプロパティを指定するために、グループ要素を作成します。
グループgrAddress要素を作成するには:
- InvoiceHeader要素で、種類グループの要素を作成して名前をgrAddressと付けます。
- 関係タブをクリックして、グループの要素で以下の検索制限を指定します:
- 上kwDeliveryAddress要素, オフセット =-400
- 左kwDeliveryAddress要素の右境界, オフセット =-800, 参照境界 =右.
- 右kwDeliveryAddress要素の左境界, オフセット =-50, 参照境界 =左.
- 下kwDeliveryAddress要素の上境界, オフセット =-20, 参照境界 =上.
表示...
DeliveryAddress要素の検索領域を下から制限するために、横白ギャップを指定します。
wgAddressAbove要素を作成するには:
- InvoiceHeader.grAddress要素で、種類白ギャップの要素を作成して名前をwgAddressAboveと付けます。
- 白ギャップタブをクリックします。
- 向きの下で、横を選択します。最小の高さを55に設定します。
注意:白ギャップの高さ/幅の値を選択する時に、事前認識結果モードで隣接する画像オブジェクトの幾何学(境界およびサイズ)を考慮に入れたいと思うかもしれません。 - 段落内の白ギャップを探すため、種類のオブジェクトの間の検索の下で、テキストのみを選択します。
- ゴミ箱の下で、以下の値を指定します:
- 下限閾値– 20;
- 上限閾値– 80;
- 閾値係数(%)– 10.
表示...
注意:プロパティ下限閾値、上限閾値、閾値係数(%)の値は、試行錯誤の方法でしか選択できません。デフォルト値から始めることをおすすめします。デフォルト値が機能しない場合は、すべての試験画像で白ギャップが検出されるまで変えていってください。
- 追加的な検索制限を指定せずに、他のオプションのデフォルト値を保持してください。
- 関係タブをクリックします。
- 白ギャップは名前kwDeliveryAddressのキーワードの下にしか置けないため、以下の検索制限を指定します:
- 下kwDeliveryAddress要素, オフセット = 20
オフセットは、 フィールド名とテキストの間などの画像の他の領域で白ギャップが見つからないようにするため、必要です。高度タブをクリックします。 - Delivery Addressフィールドはすべての画像には存在しませんが、発生する時は必ず名前が付いているため、高度な検索前関係フィールドで以下の追加条件を指定します:kwDeliveryAddress要素が検出された場合にのみ画像オブジェクトを検索する。FlexiLayout言語では、この条件は以下のように書き込みできます:
If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind; - FlexiLayoutを合致させて、wgAddressAbove要素がすべての画像で検出されるかを確認します。
- 時に、指定された検索領域で複数の白ギャップが見つけられ、正しくないものが選ばれることもあるため、追加的な検索制限を指定する必要があります。画像を調べると、関心対象の白ギャップが検索領域の最上部のギャップであることに気づきます。従って、高度な検索前関係フィールドで以下の追加条件を指定します:最初のページの上部境界に最も近い画像オブジェクトを探す。FlexiLayout言語では、この条件は以下のように書き込みできます:
NearestY: Page(1).RectGlobal.Top; - InvoiceFooter要素を一時的に除外してFlexiLayoutを合致させます。
DeliveryAddress要素を作成するには:
- InvoiceHeader.grAddress要素で、種類パラグラフの要素を作成して名前をDeliveryAddressと付けます。
- 関係タブをクリックします。
- DeliveryAddressは白ギャップwgAddressAboveの上にしか配置できないため、以下の検索制限を指定します:
- wgAddressAbove要素の上, オフセット = 0。
- DeliveryAddress要素の検索領域は既にInvoiceHeader.grAddressグループの水準で指定されているため、ここで再度指定する必要はありません。
- 高度タブをクリックします。
- DeliveryAddressフィールドの名前も検索領域内にあるため、DeliveryAddressの値のみを取得するには、検索領域を除外する必要があります。また、検索領域には区切りとノイズがあり、除外されている方が良いです。上記理由により、kwDeliveryAddress要素の区域を除外することはできません。kwDeliveryAddress要素の区域を取得し、この区域を拡大してすべてのノイズが除外されるようにし、次に結果の矩形を除外するともっと適切です。これには、高度な検索前関係フィールドに以下の検索制限を指定します:
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;
// 結果の矩形をフィールドの検索領域から除外します
ExcludeRect (Left, Top, Right, Bottom);
} - InvoiceFooter要素を一時的に除外してFlexiLayoutを合致させます。
- DeliveryAddressブロックの位置を、検出されたDeliveryAddress 要素の視覚的な認識が向上するように簡略化され、縦横5ドットずつ拡張された矩形領域として指定します。これには、表現オプションを選択して以下の表現を入力します:
Rect outputRect;
OutputRegion = InvoiceHeader.grAddress.DeliveryAddress.SimplifiedRegion;
IsNull = InvoiceHeader.grAddress.DeliveryAddress.IsNull;
OutputRegion.Inflate (5dt, 5dt);
12.04.2024 18:16:07