FlexiLayout とそのプロジェクトをインポートした FlexiCapture 認識結果が異なる。同じではないのか?

現象

FlexiLayout とそのプロジェクトをインポートした FlexiCapture 認識結果が異なります。

原因

結論から申し上げれば、FlexiCapture と FlexiLayout はあくまで別のアプリケーションであり、ほぼ同じ画像処理技術が用いられてはいますが、同じ画像からでも、取り込んだ画像は、それぞれで別々の画像処理を行い、事前処理: 画像ロード時に行う画像補正処理 も それぞれで異なり、別々の画像ファイルとして取り込みます、つまり認識する画像自体が微妙に異なる為、認識の結果は同期しないことがあり、これを完全に避ける方法はありません。

なるべく2者間での差分を少なくすることはでき、その工夫が必要となります。

たとえ、元々同じ画像ファイルだったとしても...

360011290320-01.png

FlexiLayout、FlexiCaptureに取り込まれた後は、下図のように、別々のバイナリファイルになって保存されています。

FlexiLayout では、元ファイルから FlexiLayout独自の画像加工がされ、*.frdat という名前のバイナリファイルとして保存されている:

360011290320-02.png 360011290320-03.png 360011290320-04.png 360011290320-05.png 360011290320-06.png

FlexiCaptureでは、元ファイルから FlexiCapture 独自の画像加工がされ、*.frdat という名前のバイナリファイルとして保存されている:

360011290320-07.png 360011290320-08.png 360011290320-09.png 360011290320-10.png

FlexiLayout と FlexiCapture では、ほとんど同じOCR技術が用いられていますが、繰り返しになりますが、2つは連携をすることはできますが、厳密には、異なる2つのアプリケーションであり、実際は内部の技術も微妙に異なっています。

また、2つアプリケーションの画像処理も、それぞれ異なります。

FlexiCaptureの画像処理:

360011290320-11.png

FlexiCapture のデフォルトの 簡単な画像処理ができる機能。FlexiLayout とは若干異なる:

360011290320-12.png

また、FlexiCapture には、FlexiLayout にはない 詳細な画像処理機能がある:

360011290320-13.png

FlexiCapture では詳細な画像処理が可能: 

360011290320-14.png

一方、FlexiLayoutの画像処理:

スピードを優先するか、スピードが遅くなっても、丁寧に文字や要素を拾うかどうか、などを設定できるが、FlexiCaptureとは画像処理 の考え方やアルゴリズムが異なる:

360011290320-15.png

FlexiLayout では、バーコードや、CJK: Chinese, Japanese, Korean: 中国語、日本語、韓国語のふりがなを判別を試行するかどうか、また、縦横の方向のレイアウトの認識を試行するかどうかの指定、認識領域の指定などができるが、やはり、FlexiCapture とは画像を取り込む時の画像処理が非常に異なっている:

360011290320-16.png

他、FlexiLayout の画像取り込み時の事前の画像処理の設定。FlexiCaptureとは似て非なるもの:

360011290320-17.png

上で示したように、FlexiCapture と FlexiLayout はそれぞれが厳密には異なるアプリケーションであるだけでなく、それぞれの画像を取り込む際の画像処理も大きく異なっています。

また、FlexiCapture は「1画像のみ」の特定の部分を抽出するのではなく、ある程度、画像の品質や多少の位置などが異なり、バラつきのある「大量の複数画像の同じ特定の部分」を抽出するので、 FlexiCapture と FlexiLayout で既に同期しない部分を起点として使った定義だということは、実運用では、そのような変化し易い部分を頼りにした文書定義の使用は機能させることが既に難しいということも意味しています。

解決

できるだけ同期するための方法:

  • できるだけ、品質の良い画像を用いる。
  • できるだけ、品質の良いオブジェクト: キーワード、罫線…を起点に用いる。
  • 差異や戻り作業をできるだけ減らす方法:
  • 早い段階で、FlexiLayout を Exportし、FlexiCaptureでインポートし、認識できるかどうかを確認する。

同じように認識できなければ、キーワードや起点を変える。

・こまめに FlexiLayout を Export して、FlexiCapture で同じように認識できているかを確認する。

  • 画像のロード時の設定を変更してみる:

FlexiLayout の画像ロード時の処理の調整:

ロード時の処理には同じ処理もありますが、他の部分では、それぞれで大きく異なる部分もあり、たとえ同じ画像から読み込んでも、上図で示したように、ロード後は別々の画像ファイルになります。

設定を調整することで、より近い結果になることがあります。

  •  差異や戻り作業をできるだけ減らす方法:

・早い段階で、FlexiLayout を最終的な出力には必要ない、キーワードも含めて Exportし、FlexiCaptureで認識できるかどうかを確認します。同じように認識できなければ、キーワードや起点を変えてください。

・こまめに FlexiLayoutをExportして、FlexiCaptureで同じように認識でいるかを確認します。

360011290320-18.png

360011290320-19.png

  • 画像のロード時の設定を変更してみる:

FlexiLayoutの画像ロード時の処理の調整:

360011290320-20.png

FlexiLayout  高度な事前認識プロパティ / Advanced pre-recognition properties 

360011290320-21.png

下記のような設定が影響することも。

 360011290320-22.png

360011290320-23.png

再度の繰り返しとなりますが、FlexiLayout と FlexiCapture では画像読み込み時に行う処理には、同じ処理もありますが、他、それぞれで、少し異なる部分もあり、たとえ同じ画像からでも、ロード以降は厳密には別々の画像・結果になります。そして、設定を調整することで、互いの認識結果を近づけられる可能性があります。ただし、完全に同じにすることは、画像の品質によっては、大変困難になります。

他にご質問がございましたら、リクエストを送信してください

コメント

0件のコメント

サインインしてコメントを残してください。