- Text (
アイコンで表示) は、テキストデータの抽出に使用します
テキストブロックのRegionを拡張すると、認識精度が向上する場合があります。Regionを拡張するには、Blocks 要素をダブルクリックしてそのプロパティダイアログを開き、Blocks result region inflate プロパティの垂直方向と水平方向の値を指定します。 - Barcode (
アイコンで表示) は、バーコードの読み取りに使用します - Checkmark (
アイコンで表示) は、チェックマークの認識に使用します - Picture (
アイコンで表示) は、事前認識でテキストとして識別されなかったオブジェクトの処理に使用します - Table (
アイコンで表示) は、テーブルからのデータ抽出に使用します - Group (
アイコンで表示) は、ブロックを論理的にグループ化するために使用します - Checkmark Group (
アイコンで表示) は、チェックマークグループの作成に使用します。この種類のグループに追加できるのはチェックマークブロックだけで、他の型のブロックをここで作成したり移動したりすることはできません。 - Repeating Group (
アイコンで表示) は、ブロックの繰り返しグループを作成するために使用します - Non-Recognized (
アイコンで表示) は、Regionを認識対象から除外するために使用します
ブロックのデータは、ABBYY FlexiCapture などのデータ抽出アプリケーションで抽出されます。
ブロックのプロパティ
- Name - ブロックの名前です。ブロック名には、文字 (ローマ字、ダイアクリティカルマーク付きローマ字、キリル文字) 、数字、アンダースコアを使用できます。ブロック名は、文字またはアンダースコアで始める必要があります。空白や特殊記号を含めることはできません。
- Type - ブロックの型です (作成時に選択) 。ブロックの型は、ブロックで囲まれたRegion内にあるオブジェクトの型に対応している必要があります。
- Comment - ユーザーが指定するコメントです (任意) 。
- Has repeating instances - ブロックが複数のインスタンスで構成されることを示します。たとえば、繰り返しグループ要素のすべてのインスタンスをブロック領域として使用する場合は、このプロパティを選択します。
- Instance sort order - グループインスタンスをどの順序で結合して1つのブロックにするかを設定します。このプロパティは、Has repeating instances が選択されている場合にのみ使用できます。指定できる値は次のとおりです。
- Top to bottom - インスタンスは、画像上の位置に従って上から下の順にブロックへ結合されます
- Left to right - インスタンスは、画像上の位置に従って左から右の順にブロックへ結合されます
- Right to left - インスタンスは、画像上の位置に従って右から左の順にブロックへ結合されます
- In order of finding - インスタンスは、仮説が生成された順にブロックへ結合されます。仮説は、品質の高い順に生成されます。ユーザーがインスタンスに追加条件を指定した場合、仮説はユーザー定義の順序で生成されます。したがって、プログラムで使用される標準の順序とは異なる順序が必要な場合は、追加条件を使用して希望する順序を指定できます。
- For Layout は、検索Regionを指定する代替レイアウトを選択します。
- Source element - ブロックを画像上で見つけるために使用する要素のRegionと同一の、画像上のRegionを指定します。FlexiLayout を画像に適用すると、プログラムはその要素で記述されたオブジェクトを検索します。データはそれらのオブジェクトから抽出されます。繰り返しグループの場合は、いずれか1つのインスタンスを選択することも、すべてのインスタンス (AllInstances) を使用することもできます。詳細については、Using instances of a Repeating Group as reference, excluded or source elementsを参照してください。
- Expression - どの要素のRegionとも一致しない画像上のRegionを設定します。たとえば、複数の要素のRegionとその間の空間を1つのブロックに結合したり、要素のRegionを一定値だけ拡張したり、どの要素にも依存せずにブロックの座標を指定したりできます。この場合、ブロックのRegionは FlexiLayout language で記述できます。
ブロックのRegionは連続しています。つまり、離れて配置された矩形からRegionを作成すると、その間の空間は細い追加の矩形で埋められ、Regionが連続するようになります。
繰り返しグループのインスタンスを使用してブロックRegionを指定する
- テーブル以外のブロックでは、指定されたインスタンスは対応する Field のインスタンスになります
- テーブルブロックでは、指定されたインスタンスは Field の 1 つのインスタンスとして扱われます。つまり、ABBYY FlexiCapture はこのようなブロックを、不連続な Region を持つ Table 型の Field として処理します。
ブロックの繰り返しグループに対する要素参照を作成する際のルール
参照を Source 要素経由で作成した場合、チェックは FlexiLayout の構築時に実行されます。参照を Advanced code を使用して作成した場合、エラーは FlexiLayout のマッチング時に検出されます。
FlexiLayout language を使用してブロックの位置を記述する
| 要素の Region を取得し、幅を 3mm、長さを 5mm 拡張する | OutputRegion = SomeElement.Rect; OutputRegion.Inflate( 3mm, 5mm ); |
|---|---|
| 2 つの要素の Region の矩形を結合し、その結合結果を外接する矩形を取得する | Rect outputRect; outputRect = Element1.Rect Or Element2.Rect; OutputRegion = outputRect; |
| 2 つの要素の Region を外接する矩形を 1 つの Region に結合する | RectArray outputRects; outputRects = RectArray( Element1.Rect ); outputRects.Add: Element2.Rect; OutputRegion = Region( outputRects ); |
| 2 つの異なる要素に対応する object の Region を 1 つの Region に結合する | RectArray outputRects; outputRects = Element1.Rects; outputRects.Add( Element2.Rects ); OutputRegion = outputRects.Region; |
| Element1 の Region に属する object の Region を結合し、Element2 の Region に属する object の Region を削除する | OutputRegion = FormRegion( Element1.Rects, Element2.Rects ); |
| Table 要素を使用して Table ブロックを指定する | OutputTable = SearchElements.TableElement; |
| 特定の要素の仮説のインスタンスを使用して Table ブロックを指定する | OutputInstances = SearchElements.RepeatingGroup.AllInstances.TemplateElement; |
IsNull 変数の使用
IsNull 変数の使用
- ソース要素の Region の幅が 50 ドットを超える場合に、ブロックの Region が見つかったと見なさないようプログラムに指示するには、Region Expression field に次のコードを入力します。 if Element1.Width < 50dt then IsNull = true;
- Element1 のブロックの Region が見つかったかどうかをそのまま反映させるには、Region Expression field に次のコードを入力します。 IsNull = Element1.IsNull
- Element1 と Element2 を使用してブロックを検索する必要があるとします。いずれか 1 つでも要素が見つからない場合、そのブロックは見つからなかったものと見なされます。 Rect outputRect; Let FieldLeft = Element1.Rect.Left; Let FieldRight = Element2.Rect.Right; Let FieldTop = Element1.Rect.Top; Let FieldBottom = Element2.Rect.Bottom; outputRect = Rect( FieldLeft, FieldTop, FieldRight, FieldBottom); if ((Element1.IsNull == True) or (Element2.IsNull == True) ) then {IsNull = true;} OutputRegion = outputRect;
