• 締切済み

OCR精度向上のための事前準備

パソコンの画面に表示されている文字をOCRソフト(読んでココ!)で認識しようとしていますが、 画面のキャプチャ(Fn+Alt+PrintAcreen)の解像度粗いため文字認識の精度が悪く困っています。 このため、以下のようにしてOCRの精度向上を目論もうと考えていますが 考え方はあっているでしょうか? また、もっと良い方法はないものでしょうか? OCRに読み込ませる前にキャプチャ画像を以下のように加工する  (1)2値化を行う  (2)画面解像度(dpi)を上げる  (3)文字のガタガタを滑らかにする  ※文字のガタガタを滑らかにする方法の名称(手法)を教えて頂けると   ありがたいです。(OpenCVで、挑戦します) よろしくお願いします

みんなの回答

  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.2

もう解決済みかもしれませんが、 2011/9/30より MSがMS-officeのツールを無償ダウンロードできるようにしています(条件等の詳細未確認)。 Microsoft Office Document Imaging(MODI)をダウンロードしてお使いください。 画面をTiff(文字情報つき)で出力し、MODIで開くと文字化けなしで画面のテキストデータを抽出することが可能です。 AcrobatのOCRではできない表の列単位のコピーも可能ですし、 読んde!!では表にすると行ごとに罫線を入れないと1行単位の表にならないのが、 MODIでは何の操作もなしに1行ごとの表を出力することが可能になります。 もともとこのツールはMS-Officeに付属していたのですが Office2010で付属しなくなり、 クレームが相次いだのか、Office2010ユーザーでも使えるようになったものと思います。 特に注意書きもなかったので、officeユーザーでなくとも利用できるのではないでしょうか?

noname#159916
noname#159916
回答No.1

OCR を使う時の元データは 300DPI 程度必要、と聞いたことがあります。 印刷物の文字高さを見るとおよそ 3mm 、300DPI なら 35~45ドットという計算です。 普段画面に表示される文字を調べると15ドットしかありません。 Webブラウザなら表示文字を大きくして文字を表現するドット数を増やす必要があると思います。 (IE なら <Ctrl>+マウススクロールノブ上下 で簡単に変わります) 1画面の総文字数が減るので作業の手間が増えることになります。 (可能なら画面モード設定を変更し画面の総ドットを増やせば多少マシですが) 元々がビットイメージで、拡大しても使用ドット数が増えるわけでないなら以上の手は使えませんが。 2値化、スムージングによる認識精度向上効果はわかりません。 http://d.hatena.ne.jp/keyword/%A5%B9%A5%E0%A1%BC%A5%B8%A5%F3%A5%B0 尚、画面に表示された文字を取得するソフトを使う手もあります。 どんな場合でも取得できるわけではないし、ビットイメージなら不可ですが、結構使えます。 ベクターや窓の杜での適当な検索キーワードがわからないので検索できてませんが、 以前探した時はいくつか見つかったものです。 少し使ったことがあるのがこれ。 http://www.vector.co.jp/soft/winnt/util/se271444.html

gumagumannbi1
質問者

お礼

ご丁寧なご指導ありがとうございます。 やはり必要なDPIを確保しないと、精度が上がらないのですね。 画面の拡大などを、裏側(画像取得後)で行うことを考え 2値化→拡大→スムージング→2値化の流れを想定していました。 また、Windows画面からのデータ取得ソフト」ありがとうございました。 □Windows標準のメッセージを使用して、以下のコントロールまたは、それを継承したコントロールからテキストを取得できます。 コンボボックス:CB_GETCOUNT⇒CB_GETLBTEXTLEN⇒CB_GETLBTEXT リストボックス:LB_GETCOUNT⇒LB_GETTEXTLEN⇒LB_GETTEXT リストビュー:LVM_GETITEMCOUNT⇒LVM_GETITEMTEXT ツリービュー:TVM_GETCOUNT⇒TVM_GETITEM その他:GetWindowTextLength⇒GetWindowText ただし、完全に確かめたわけではありませんがWindows7では 正常に動作しないようです。 スムージングに関しては、試してみます。 ありがとうございました。

関連するQ&A