2012年5月1日火曜日

預金通帳のOCR読取精度を上げるコツ(PDF注釈)

ハイ、懲りずに通帳OCRシリーズ。

OCR読取しづらいク○通帳として有名な三菱東京UFJ銀行に加え、前回の記事(Blog the Minor: 預金通帳のOCR読取精度を上げるコツ(認識字種))で新たに「ゆうちょ銀行」を○ソ通帳として追加したところであるが。

最初にそのクソっぷりについて語ると。

まずは三菱東京UFJ銀行。


三菱東京UFJについては残念なポイントはいくつもあるが、その中のひとつがこの点線。


これをOCRソフトに読み取る際に、この点線上に罫線を引いて表認識をさせるのだが。


このように点線を「罫線」としてではなく、接した文字の一部として認識したり、数字の「1」やその他の記号として認識してしまうのである。


全ての行で必ず「1」と認識されるのであればまだ対処のしようもあるが、行によっても認識したりしなかったり、認識結果も毎回異なるのでどうしようもない。


はい、次、ゆうちょ。


狭い。狭いよ・・・。


これをOCR認識させようとするとどうなるか。


このように、OCRソフトの表レイアウトで縦罫線をちゃんと引いていても認識結果では列がズレるのである。

これはイカン。こうなっちゃったらもう父さんお手上げだよ。

ゆうちょ銀行の通帳はフォントも読みやすく(半角カタカナはイマイチだが)漢字も利用されているので、文字・数字の認識精度はかなり高い。
それだけにこの表レイアウトの認識ズレが残念過ぎる・・・。


ここで諦めるわけにはいかないので、何とか対策を考えてみた。

まずは三菱東京UFJ。


OCRソフトの機能として画像の一部を「無効領域」として設定することが出来るので、点線部分を無効にしてみたらどうだろう、と。

結果はまぁまぁではあったが、接した文字の一部まで無効になって正しく認識されなくなってしまうことも。
また、無効領域は読取レイアウトのテンプレートの一部として保存できるが、全ページでピタッとあうわけもなく。
なかなか厳しい状況だ。


次にゆうちょ銀行。


OCRソフトの機能として画像の補正が出来るようになっており、直線を描くことも出来る。
これを、できれば外枠と全部の縦線にしっかり描いてみる。

結果はかなり良い感じ。
ちなみに、上記の三菱東京UFJでも同様に、その点線を上書きするように画像補正で線を描いておくと認識結果は高まった。


これはイケル!


と思いきや、ひとつ大きな欠点が。

これ・・1ページごとに画像補正しなきゃいけない・・・・・。
OCRソフト上ではこの画像罫線を保存しておく機能はない。
すべてのページで1本ずつ線を描いて・・・・・・無理無理無理。



で、その点を解決すべく今回思いついたのがPDF注釈機能の利用。

PDFの注釈であればコピペが可能なので、事前に枠と縦罫線、ついでに余計な部分を矩形注釈で消しておいて他のページにコピペすれば、1本1本線を引くのに比べて手間はかなり減る。
ちなみに、ページよっては貼りつけた線が多少ズレる場合があるが、注釈なので後から微調整が可能。



PDFファイル上でこのような状態にしておいて、その後OCRソフトで認識をすると、さきほどのゆうちょ銀行の認識結果もこのように変わる。


これなら充分使える!

三菱東京UFJの方の画像は用意してないが、こちらも認識結果はかなり改善。
とはいえ、こちらの方はフォント自体にも問題があって他よりは厳しい結果ではあるが・・・。


で、PDF注釈を全ページにひとつずつコピペではなく、一気に処理することも可能であることに気付いた。
こちらの解説はまた次回とするが、これにより通帳をOCRにかけてデータ化するという作戦が現実味を帯びてきたような気がする。


ということで、次回に繋ぎつつ、最後の最後に身も蓋もないことを言ってしまえば。


ゆうちょ銀行なら法人でもネットバンク利用料タダだしね・・・。



0 件のコメント: