質問
FlexiLayout Studioはどう使えばいいですか。
回答
本コラムでは、準定型(半構造化)文書のレイアウト定義に使用されるFlexiLayout Studioの基本的な使い方について解説します。
まず、FlexiLayout Studioの外観は以下のようになっています。
赤枠 [左上側] :[バッチ] 枠、Importした画像のリストを表示
橙枠 [左真中] :[FlexiLayout] 枠、設計・配置した要素(エレメント)の構造を表示
黄枠 [左下側] :[プロパティ] 枠、選択した要素(エレメント)のプロパティを表示
緑枠 [右上側] :画像プレビュー、文字/線等認識状態、要素配置状況確認
青枠 [右下側] :[仮設ツリー] 枠、要素と画像のマッチング状況を表示
このFlexiLayout Studioを用いたレイアウト定義の流れは以下の通りとなります。
1. 事前認識設定(FlexiLayout > プロパティ)
認識言語やページ数、認識モード等、文書全体にかかる認識方法を設定します。
2. テスト画像の読み込み
「画像を追加」ボタンをクリックし、テスト画像を読み込みます。同時に、1. の事前認識設定に基づいて画像全体の認識処理が行われます。
※設定を変更した場合は、画像の右クリック > 事前認識を選択することにより再度認識処理を行う必要があります。
※ポイント
事前認識を実施することで、画像全体がどのように認識されているか確認する事が可能です。画像の状態(品質、解像度、レイアウト、等)によって認識精度は大きく異なります。また1. の事前認識設定によっても変わるため、(認識率が最大となるよう)設定内容のチューニングも実施します。
文字認識結果は、以下の「認識された単語」を選択し、該当箇所にマウスを近づけると確認可能です。
同様に、「区切り」を選択するとSeparator(罫線)の認識状況を確認する事ができます。
事前認識結果は、これから実施する文書定義のアプローチを決めるにあたって非常に重要です。できるだけ多くのサンプルについて確認し、全ての帳票で確実に認識が可能となるよう定義を実施します。
3. 読み取り項目の作成([FlexiLayout] 枠 > Blocks)
以下のように、最終的に読み取りたい項目の一覧を作成します。
4 探索要素の作成([FlexiLayout] 枠 > SearchElements(Default))
読み取り項目にたどり着くための要素を作成します。要素の探索はツリーの上から下の順で行われます。なお、中でもHeader, Footerは文書特定(仕分け)及びAssembly(ページ構成)に関連する設定となります。
5. BlocksとSearchElementsのリンク
Blocksの各項目がSearchElements内のどの要素にあたるか、リンクを設定します。
6. 認識テストの実施
「画像を右クリック > 合致」により認識処理を実行し、設定した内容によって各項目が正しく取得できているかを確認します。
※設定を変更する度にこの処理を繰り返し実行します。
※探索要素の設定例
ここまでのステップの実施例として、以下のような帳票に対して赤で囲った今回御請求額の¥36,666を取得する方法を紹介します。
まず最初に、Blocksに読み取り項目:Total(Text Block)を作成し、SearchElementsに「今回御請求額」というキーワードにより辿り着く要素、すなわち静的テキスト要素(Static Text Element):kwTotal を作成します。
この時点で一度認識テストを実施すると、kwTotalが正しく取得できていることが確認できます。
ここで、kwTotalの下にある金額を取得するため、文字列要素(Character String Element):Total を作成します。以下では、取得対象の文字を「数字、カンマ、円マーク」に限定しています(他の文字列を間違えて取得しないため)。
次に、kwTotalからの相対位置(関係)を指定し(グリーンのエリア)、その領域内に存在する文字列を取得するように設定します。
Below :kwTotalの下領域(オフセット:+20)
Above :kwTotalの上領域(境界:kwTotalの下辺、オフセット:-150)
RightOf : kwTotalの右領域(境界:kwTotalの左辺)
LeftOf : kwTotalの左領域(境界:kwTotalの右辺)
ここで再度認識テストを実行すると、問題なく文字列要素のTotalが取得できていることが確認できます。
最後に、Blocks.Totalの設定でソース要素をSearchElements.Totalに指定することで、Blocks.Totalが取得可能となります。
6. 設定ファイルのエクスポート(ファイル > エクスポート)
FlexiLayout Studioでの文書定義が全て完了したら、設定内容をファイル(拡張子:afl)として出力します。
追加情報
FlexiLayout の初期設定について - 特に気をつけること
FlexiLayout Studio:ヘッダー・フッター(Header/Footer)の使い方。複数ページの文書を定義したい。
静的テキスト、 Character String: 文字列 で一致させたい文字同士の距離が離れていて一致できない。どうすれば一致できるのか?
FlexiCapture において画像上で事前認識されなかったテキストがある場合に、これらの要素をキャプチャしたい
Static Text: 静的テキストの内容を動的 (ダイナミック) に変更して、FlexiCaptureにおいて、異なる位置を動的 (ダイナミック) に変更して読み取りたい
正規表現 - サンプル集 - FlexiCapture, FlexiLayout
FlexiLayout: 円マーク: ¥をStatic Text: 静的テキスト、CharacterString: 文字列 でマッチさせたい。
CheckMark: チェックマークをFlexiLayoutで定義して、FlexiCaptureで読み取りたい
FlexiLayout Studio: 白ギャップ: WhiteGap の使い方:基本:空白・空欄・空間・空きスペース を スキップ・読み飛ばす
Table: 表 の行の読み取りが途中で途切れてしまう。テーブルの末尾まで読み取れない。行を読み飛ばす。
Repeating Group の基本的な使い方: 表をRepeating Group: 繰り返しグループを使って読み取る。
RepeatingGroup: 繰り返しグループ - 格子状の形でない一定の繰り返しパターンがある表を読みたい。
Repeating Group: 繰り返しグループで多種多様な形式の表を読み取る01 (行を区切る罫線なし、表の列のヘッダが黒塗りに白文字、表の角が丸い)
Repeating Group: 繰り返しグループ で多種多様な形式の表を読み取る02 (罫線なし、レシートのような画像・サイズと品質の帳票)
FlexiLayout 改ページ の位置に データ がまたがっていて、データ が思うように取得できない。 - 罫線有の表
FlexiLayout Languageことはじめ - なぜFlexiLayout Languageが必要なのか?
高度な検索前関係: Advanced pre-search relations
ページの大体の場所(例: 上/下半分、右上、下部...など)を設定する - 高度な検索前関係: Advanced pre-search relations - FlexiLayout
コメント
0件のコメント
サインインしてコメントを残してください。