枠付き文字を含むテキストフィールドの記述
固定レイアウトの従来型文書で通常発生するフィールドを探すために、FlexiLayoutを作成しなければいけないことがあります。例えば、小さい枠に文字を入力するフィールドを記述する場合です。典型例としては、地域の事務所から文書を収集する企業です。文書が同じように見えても、地域のそれぞれの事務所でレイアウトに微妙な違いがあったりします。単一の「ハード」文書定義を使用して処理できないということです。この場合、1つのFlexiLayoutが、複数の微妙に違う「ハード」文書定義よりも好ましかったりします。
文書で検索されるデータフィールドが「枠付き文字」または「個別の枠付き文字」種類である場合、そのようなフィールドの境界の区切りベース検索は複雑になることがあり、そのようなフィールドの名前が使用不可能または不確実に認識されていると、要素の記述が無駄に大きくなる可能性があります。ブロックにはこれらのフィールドだけでなく、枠全体が含まれていることがとても大切です。区切り線が細い場合は、スキャン中に誤印刷されたり、失われたりすることがあります。このような場合は、白ギャップ要素を使用して境界を検索することをおすすめします。このようなフィールド境界は、ブロックのプロパティダイアログボックスの表現フィールドで、特殊なFlexiLayout言語で記述されています。フィールドの上部境界を上の白ギャップの下端として、下部境界を下の白ギャップの上端として、フィールドの右境界を右の白ギャップの左境界として、フィールドの左境界を左の白ギャップの右境界として記述できます。
試験画像と試験されたFlexiLayoutを含むFlexiLayout Studioプロジェクトの場所%public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks。
例
画像のデータフィールドの位置を形式的に記述するのに必要な、4つのギャップ(LeftGapName、RightGapName、TopGapName、BottomGapName)がすべて見つかったとします。
表現フィールドのコードは以下のようになります:
Rect outputRect;
Let FieldLeft = LeftGapName.Rect.Right;
Let FieldRight = RightGapName.Rect.Left;
Let FieldTop = TopGapName.Rect.Bottom;
Let FieldBottom = BottomGapName.Rect.Top;
outputRect = Rect(FieldLeft, FieldTop, FieldRight, FieldBottom);
OutputRegion = outputRect;
注意:「LeftGapName」、「RightGapName」、「TopGapName」、および「BottomGapName」の代わりに、対応する白ギャップ要素の名前を入力します。必要に応じて、膨張オプションを使用してフィールドの幅と高さを拡張できます。
文書で検索されるデータフィールドが「枠付き文字」または「個別の枠付き文字」でマークされた多行フィールドで、行がギャップで区切られていない場合、白ギャップ要素を使用して、上部境界、下部境界、右境界、左境界を探す必要があります。個々の行の検索は、表現フィールドの特別なアルゴリズムで指定する必要があります。この例では、個々の行の高さは、フィールド全体の高さを2で除算して、算出できます。
12.04.2024 18:16:07