質問
白ギャップ: WhiteGap の使い方を教えてください。
回答
まずは、実際の使用例を下の図でご覧ください。
例:
下の図 では、文字 ・ バーコード と タイトル・文章 の 間 にある「空白」を 要素: Element として設定しています。基本的には* 読みたい場所には指定しません。他の要素の相対関係の位置の指定に利用します:
*アイデア次第で、様々な使い方ができます。読み取りたい場所に設定し、Blockに格納して読むことも、もちろん可能です。本記事のサンプルのプロジェクトでも、例を示しています。
例:
下の図 では、表の間の読ませたくない、「ある程度の空白」がある行 を設定しています:
白ギャップ: WhiteGap は基本的には*、帳票の空きスペース、空行、空欄 など 印刷要素 がない場所・線だけの場所、多少の 文字 やノイズ や 点々 などがあるが、読みたい印刷要素がない場所 の位置を設定します。
そして、間接的に実際に読み取りたい場所 の 相対位置の関係要素 として利用します。
*アイデア次第で、様々な使い方ができます。読み取る場所を指定することにも利用できます。
実際の設定方法を見てみましょう。
白ギャップ: WhiteGap のプロパティ
向き : 縦 / 横 (どの方向に空間を取るか)
最小の 高さ / (幅)
空間・スペースの最小の高さ。取得したい、空間の「向き」により、設定の意味あいが変わります。
向き: 横: 高さ / 縦: 幅
複数のオブジェクト間で検索 :
どのオブジェクトを印刷物として、無視しないか を設定します。チェックがついていない 要素を無視して空間を取るように動作します。チェックをしているオブジェクト間の 空間・スペース を取得しようとします。
テキスト |
チェックマーク |
句読点 |
区切り |
画像 |
バーコード |
反転テキスト |
ノイズ オブジェクト
チェックをつけた要素でも、ノイズ、つまり、その部分は無視したい印刷要素の大きさを設定します。
下記のこれらの値を調整することで、空白・空間の取り方が変化します。
下限閾値 (ドット ピクセル単位で指定します)
37 (ドット) = プリント文字列の行の高さ (向き : 横) / 幅 (向き : 縦) が 37 (ドット ピクセル)
上限閾値 (ドット ピクセル単位で指定します)
150 (ドット) = プリント文字列 4行分 高さ (向き : 横) / 幅 (向き : 縦) が 150 (ドット ピクセル)
閾値係数 (%)
どれぐらいの割合で閾値の 揺れ幅 を許すか
20 % = 20% の下限・上限の閾値のゆれ幅を許す
実際のプロジェクトでの使用例:
実際のプロジェクトでの使用例を見ていきましょう。
詳しくは下のリンクからご入手できるサンプルプロジェクトをご覧ください。
*ご覧になるには、バージョン12.0.2.3118以上のFlexiCaptureが必要です。
サンプル帳票
下のようなサンプル帳票があったとします。
テキストを避ける - 横方向
上の帳票で、デフォルトの設定(横方向、チェック、各数値もそのまま) のままで、テキストを避け、上図の帳票の一番上の空間を取得するように設定しますと、次のような結果になります。
一番上のほんの少しの隙間*ですが、「請求書一覧」という文字を避け、空白が取得できています。横方向に貫く様に取得されます。
*取得したい空白は「最小の高さ」で調節できます。次以降で見ていきます。
テキストと区切り線を避ける- 横方向
上の図で、「請求書一覧」の下で、ページの一番上に近い、として、白ギャップ: WhiteGap を 横方向で、テキスト、区切り を 無視しない 設定で、最小の高さを調整します(80 ドットより大きい空白)。
下のような結果になります。
白ギャップ: WhiteGap は、指定された範囲(「請求書一覧」の下)で、指定された種類のオブジェクト(本例では、テキストと区切り線 *) を空白の最小の高さ80ドット*とノイズオブジェクトの数値を元に 避けて、指定された横方向に、貫くように展開されます。
*一番上のほんの少しの隙間は80ドットより小さい高さ、ということです。
文字 と 会社名 の下の線 の 区切り線 を避けて、ある程度の高さのある(空白の最小の高さを80ドットに設定した為)一番上にある空間を取得しているのが確認できます。
区切り線のみを避ける (テキストを無視する) - 横方向
指定された範囲(「請求書一覧」の下)で、一番上で、区切り線 のみ をチェックした場合 (テキストは無視する ) はどのような動きをするか見てみましょう。
下のような結果になります。
白ギャップ: WhiteGap は、指定された範囲(「請求書一覧」の下)で、指定された種類のオブジェクト(本例では、区切り線のみ) を 避けて、指定された横方向に、貫くように展開されます。
テキストは無視して展開されているのが分かるかと思います。
このような性質を利用して、区切り線のみを避けた空間の関係性で、たとえば、次のような白ギャップ: WhiteGap の取得ができます。
上の白ギャップ: WhiteGap の下 (区切り線のみを避け、テキストは無視しています)
上の白ギャップ: WhiteGap の下 (区切り線を避け、テキストは無視、また縦方向の区切り線は無視しています)
上の白ギャップ: WhiteGap の下 (区切り線を避け、テキストは無視、また縦方向の区切り線は無視しています)
テキストと区切り線を避ける- 縦方向
サンプルのプロジェクトの帳票で、縦 方向で、他のチェック、各数値はそのままで、テキストを避け、帳票の一番右の空間を取得するように設定しますと、
次のような結果になります。テキスト を避ける はずが、縦方向に並んだ要素中、少し飛び出ているテキスト が無視されていることが確認できます。
これは、この飛び出た部分の テキスト が白ギャップ: WhiteGap のノイズ の パラメータ に従い、「ノイズ」として扱われ、無視された為です。
白ギャップ: WhiteGap の 最小幅 ドット に注意しながら、ノイズオブジェクト の 閾値 を変更することで、飛び出たテキストを無視しないようにもできます。
例: ノイズは 37 ~ 70 ドットの高さで、20%の揺れがある
次のような結果になります。飛び出た文字は無視されず、右端の空間が取得できています。右端の空間は 最小幅 20 ドット より大きく、飛び出ている文字の高さは約70ドットであり、閾値 37 ~ 70 ドットの高さで、20%の揺れ では ノイズではなく、テキスト 扱いになるわけです。
このような数値設定は、各オブジェクト: テキスト、チェックマーク、句読点、区切り、画像、バーコード、反転テキスト の全ての要素にいおいて可能です。無視したくない要素 を チェック しておけば、計算がされ、空間 を探す 範囲の指定、空白 の 最小の大きさ と ノイズ: 無視する部分 の 関係 を元に 白ギャップ: WhiteGap として空間・スペース を要素として、取得ができます。
白ギャップ: WhiteGap の実践的な使い方のヒント
白ギャップ: WhiteGap は上の例のように、各要素間 の 空間・スペース・空白 を取得して、読み取りたい場所 を取得する為 の 相対位置 の 起点として、使用します。ただ、上記のように、無視する/しない要素、空間の大きさの指定をできるという特殊な性質の為、アイデア次第で、様々な応用ができます。
本記事に添付されているプロジェクトでは、ほぼ全ての要素を 白ギャップ: WhiteGap だけで取得しています。
プロジェクト中 の各 白ギャップ: WhiteGap と設定をご覧頂くことで、どのように使用するか、どのような性質があるのかのご理解に役立てば幸いです。
ヒント - 白ギャップ: WhiteGap と帳票の特徴的な部分の関係
帳票の空間の特徴的な部分を空間として取得して、読み取りたい場所を相対位置で指定できることが分かります。
下図: 店舗 の情報の右側に空間がある。つまり、このような空間の左側に店舗情報がある。
下図: 店舗 の情報の 下側 と 表の左に空間がある。つまり、空間の上に店舗情報がある。
下図: 詳細行の下側、小計・税の左側に空間がある。
つまり、空間の右側に小計・税の情報があり、上に詳細行がある。
下図: 表の下側に空間がある。つまり、空間の上に表がある。
白ギャップ: WhiteGap の使い方:応用
上のような空白の特徴を利用して、良く用いられる応用的な使い方として、繰り返しグループ: Repeating Group と組み合わせる方法があります。白ギャップ: WhiteGap の性質が大いに生きてくる使い方の一つです。
空白で区切られた表を読み取る
空間で区切られた 連続した表、複数ページに渡る表 を 白ギャップ: WhiteGap を使って、読み取ります。
上でご紹介したような
空間・スペース に特徴のある帳票が罫線なしで、連続する帳票を読み取る
下図の表は、今回ご紹介した空白のパターンが繰り返されています。ですので、その性質を利用して、連続した表を複数ページに渡っても読み取ることができます。
本記事の 白ギャップ: WhiteGap の基本的な使い方のプロジェクトについて、
詳しくは下のリンクからご入手できるサンプルプロジェクトをご覧ください。
*ご覧になるには、バージョン12.0.2.3118以上のFlexiCaptureが必要です。
コメント
0件のコメント
サインインしてコメントを残してください。