質問
表をRepeating Group: 繰り返しグループ を使って読み取る方法を教えてください。
回答
Table: 表 は 基本的に、Repeating Group: 繰り返しグループでも読み取ることができます。
それでは全てRepeating Group: 繰り返しグループで読み取れば良いのではないかというとそうではありません。
Table: 表 には次のようなメリットがあります。
- ページをまたぐ表を自動的に続けて読み取ることができる。
- ページをまたぐ表のヘッダ行をある程度、自動的に読み飛ばすことができる。
- 表の末尾が空行ばかりの場合、空行は自動的に無視して読み取りを止めてくれる。
- ...など。
しかし、表の形をしているのに、Table: 表で上手く読み取れない場合もあります。次のような場合です。
- 行の内容に空の行があったりするが、そこで、表の内容は終わらず、下の方の行にレコードの続きがある。
- 行の中身の文字が上下左右の罫線に近すぎたり、行同士の距離が近すぎて、行が上手く一行ずつ読み取れない。
- ...など。
このような場合は、Repeating Group: 繰り返しグループで表を読み取るという方法を考えても良いかもしれません。Table: 表で読み取れない表も Repeating Group: 繰り返しグループを使用すれば、読み取れる可能性は飛躍的に向上します。ただし、上述のようなTable: 表ならではの自動機能は失ってしまいますが、何らかの方法でカバーできることが多いです。
下図のような典型的な構造の表をRepeating Group: 繰り返しグループ で読み取る手順例を紹介します。
ある一定のパターンを持った繰り返しの範囲 ( 表の場合、「行」が繰り返される範囲 ) を Separator : 区切り線などで明確に指定します*。
*上図の表では、表の囲み線の中のヘッダより下側、ということになります。
*表を囲む線の内側
*Separator: 区切り線を頼りに範囲を絞る。
*実際に繰り返す部分は、ヘッダの線より下
*繰り返しする範囲は、表のヘッダより下であることを指定する。
Repeating Group: 繰り返しグループの中に、繰り返しの「基本となる要素」の関係性を設定します。
例では、行の下側の線: Separator: 区切り線 が
- ヘッダ行の線より下側
- ページ最も上側に近い (ページの上辺)
であることを指定しています。
この指定を行って「合致: Match」を行いますと、自動的に繰り返しの基本となる要素の繰り返しが下図のように生成されます。
*hSp_Row_bottom1, 2, 3....N のようにデフォルトでは一つ前の要素に重ならないように、設定に沿った繰り返しの要素の取得が設定した繰り返しの範囲で行われる。
元々取得したい各行は、これら各行の下側の各線 hSp_Row_bottom1, 2, 3....N の上側なので、そのように指定します。
上記で、読み取りたい部分が、基本となる部分、各行の下側の各線 hSp_Row_bottom1, 2, 3....N の上側であることが設定できますが、それだけでは、「どこより下側か」がわかりません。繰り返しグループで便利なのは、 Repeating Group: 繰り返しグループ には特殊なインスタンスがあり、このような表形式の読み取りでは、下図のような設定が可能なことです*。
*上の設定とほとんど同じですが、注意するのは、行の下側の各線 hSp_Row_bottom1, 2, 3....N の LastFound の 下側であると指定する点です。
LastFound とは、 行の下側の各線 hSp_Row_bottom1, 2, 3....N の繰り返しで例を挙げれば、
行の下側の各線 hSp_Row_bottom1, 2, 3....N が CurrentInstance (デフォルト)であるとすれば、LastFoundはその一つ前(最後ではありません)、行の下側の各線 hSp_Row_bottom0(無), 1, 2....N-1 であるということです。
例:
行の下側の各線 でCurrentInstanceが hSp_Row_bottom 2 の LastFound は hSp_Row_bottom1
行の下側の各線 でCurrentInstanceが hSp_Row_bottom 3 の LastFound は hSp_Row_bottom2
このように、繰り返しのパターンを設定すると、各行を下図のように取得できるようになります。
* FlexiLayout上で各行とその要素を取得した例:
FlexiCapture上での読み取り結果例:
詳しくは下のリンクからご入手できるサンプルプロジェクトをご覧ください。
*ご覧になるには、バージョン12.0.2.3118以上の FlexiCaptureが必要です。
追加情報
- 画像上にある表を読み取った Table: 表, Repeating Group: 繰り返しグループ の行数、列数、内容を変更した表を別途検証時に表示したい。また、エクスポートしたい。
- RepeatingGroup: 繰り返しグループ - 格子状の形でない一定の繰り返しパターンがある表を読みたい。
- Repeating Group: 繰り返しグループで多種多様な形式の表を読み取る01 (行を区切る罫線なし、表の列のヘッダが黒塗りに白文字、表の角が丸い)
- Repeating Group: 繰り返しグループ で多種多様な形式の表を読み取る02 (罫線なし、レシートのような画像・サイズと品質の帳票)
- 繰り返しグループ: Repeating Group を 表: Table として表示させたい - FlexiCapture
- 1つの文書、同一帳票で、ページによりレイアウトが微妙に異なる文書に対して、複数の FlexiLayout を設定し、Assembly: アセンブリ (と場合によっては各ページ共通の値により)1つの文書として扱いたい。
コメント
0件のコメント
サインインしてコメントを残してください。