サンプル4。ステップ5.5:Invoice Dateフィールド、grDate、InvoiceDate、InvoiceDateAsString要素
画像を調べると、以下に気づくでしょう:
- Invoice Dateフィールドがフィールド名の右に位置している文書もあれば、名前の下に位置している文書もあります。従って、検索領域を名前の右と下の矩形に制限します。
- Date要素を使用して日付を探します。また、以下の条件を指定します。フィールド名が検出されない場合は、フィールドデータを検索しない。
- 日付が低い信頼性で認識されることもよくあります。原因には、スキャンの不具合、無効な日付形式などがあります。従って、日付要素が日付を見つけられない場合に備えて、追加的な文字列要素を指定します。
すべての要素に共通する設定として、グループ種類の要素を作成します。
グループ種類のgrDate要素を作成するには:
- InvoiceHeader要素で、種類グループの要素を作成して名前をgrDateと付けます。
- 高度タブをクリックして、追加的な検索制限を指定します:検索領域を、フィールド名の右の1つの矩形およびオフセット付きのフィールド名の下の矩形で構成される矩形の配列に制限します。FlexiLayout言語では、この制限は以下のように書き込みできます:
RectArray DataRegion;
Let r1= Rect (kwInvoiceDate.Rect.Right, kwInvoiceDate.Rect.Top -20dt, kwInvoiceDate.Rect.Right + 650dt, kwInvoiceDate.Rect.Bottom + 50dt);
Let r2 = Rect (kwInvoiceDate.Rect.Left - 150dt, kwInvoiceDate.Rect.Bottom, kwInvoiceDate.Rect.Right + 100dt, kwInvoiceDate.Rect.Bottom + 100dt);
DataRegion = RectArray (r1);
DataRegion.Add (r2);
RestrictSearchArea (DataRegion);
InvoiceDate要素を作成するには:
- InvoiceHeader.grDate要素で、種類日付の要素を作成して名前をInvoiceDateと付けます。
- 日付タブをクリックします。
- InvoiceDate要素の可能なすべての日付形式を指定します:
表示...
- 一部の画像では、Invoice Dateフィールドの検索領域に既に検出されているkwInvoiceNumberおよびInvoiceNumber要素が含まれます。これらの要素の値がInvoice Dateフィールドの仮説と見なされないようにするには、これらの要素を検索領域から除外します:
- 要素区域を除外フィールドの隣の追加...ボタンをクリックします。
- 要素のリストからkwInvoiceNumberを選択します。
- OKをクリックします。文字列SearchElements.InvoiceHeader.kwInvoiceNumberが要素区域を除外フィールドに表示されます。
要素SearchElements.InvoiceHeader.InvoiceNumberに上の手順を繰り返します。
- 高度タブをクリックします。
- Invoice Dateフィールドは必須要素ではありません。しかしながら、文書に日付が含まれている場合(Invoice Dateフィールド)、常に文書に対応するフィールド名があります(kwInvoiceDate要素で記述)。従って、高度な検索前関係で追加的な検索条件を指定できます:kwInvoiceDateが検出された場合のみ、画像オブジェクトを検索します。FlexiLayout言語では、この条件は以下のように書き込みできます:
If InvoiceHeader.kwInvoiceDate.IsNull
Then DontFind(); - InvoiceFooter要素を一時的に除外してFlexiLayoutを合致させます。
認識結果が日付要素のどの標準パラメータにも合わないような質の悪い画像の場合、条件を緩和して請求日フィールドを検索する代替要素を追加します。
InvoiceDateAsString要素を作成するには:
- InvoiceHeader.grDate要素で、種類文字列の要素を作成して名前をInvoiceDateAsStringと付けます。
- 文字列タブをクリックします。
- アルファベットを指定します:
,-./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz - 非アルファベット文字の割合を30%に設定します。
- 文字カウントフィールドで、文字列の長さのファジー間隔{-1, 8, 14, INF}を、可能な値を8〜14文字と仮定しながら指定します。この範囲外の仮説にはペナルティが科せられます。
- 最大スペース長さを20に設定します。これにより、テキスト文字列の最大スペース長さが20ドットに制限されます。
- 他の要素のプロパティでは、デフォルト設定を維持します。
- 高度タブをクリックします。
- 画像でInvoiceDateが検出されない場合に限りInvoiceDateAsString要素を検索するため、高度な検索前関係フィールドで以下の条件を指定します:InvoiceDate要素が検出されない場合に限り画像オブジェクトを検索する。FlexiLayout言語では、この条件は以下のように書き込みできます:
If Not InvoiceDate.IsNull Then DontFind; - 上記のようなInvoiceDateの追加条件を指定します:kwInvoiceDate要素が検出された場合に限り画像オブジェクトを検索する。kwInvoiceDate要素に最も近い画像オブジェクトを検索する。FlexiLayout言語では、この条件は以下のように書き込みます:
If InvoiceHeader.kwInvoiceDate.IsNull Then DontFind;
Nearest: InvoiceHeader.kwInvoiceDate; - InvoiceDateブロックの位置を、5ドットずつ縦横に拡大した検出済みInvoiceDate要素またはInvoiceDateAsString要素の矩形区域として指定します。これには、表現オプションを選択して以下の表現を入力します:
Rect outputRect;
if not InvoiceHeader.grDate.InvoiceDate.IsNull then
outputRect = InvoiceHeader.grDate.InvoiceDate.Rect;
else
{ outputRect = InvoiceHeader.grDate.InvoiceDateAsString.Rect;
IsNull = InvoiceHeader.grDate.InvoiceDateAsString.IsNull;
}
OutputRegion = outputRect;
OutputRegion.Inflate (5dt, 5dt);
12.04.2024 18:16:07