民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS OpenCV でキャプチャした画像を OCR する

<<   作成日時 : 2010/01/21 23:11   >>

驚いた ブログ気持玉 1 / トラックバック 0 / コメント 1

昨日の続き。
http://kzworks.at.webry.info/201001/article_34.html
で、OpenCV を使って USB カメラで画像キャプチャまではできるようになった。
これで、書類をキャプチャして、OCR してみたい。

ここでいう書類とは、ずばり受験票である。
あまりに生々しいのでこれ以上具体的には書けない。
受験票をカメラの前にちらっとかざして、受験番号を読み取りたいのだ。

昨日は、OpenCV のサンプルファイルを改造して、最後に
cvSaveImage ("hoge.tif", frame, 0);
というコードを書き足し、hoge.tif という画像ファイルを作成するところまでだった。

ここで、tiff 形式を選んでいるのが一つのポイント。

今回利用する OCR ソフトは tesseract-ocr 。
http://code.google.com/p/tesseract-ocr/
tesseact-ocr はノーマル状態だと tiff 形式の画像ファイルしか扱えない。

上のページからリンクをたどって、OCR 本体、tesseract-2.04.exe.tar.gz と、OCR のためのデータファイル、boxtiff-2.01.eng.tar.gz を入手し、適当なフォルダに展開しておく。
そして、コマンドラインから
> tesseract.exe hoge.tif hoge
とやると、hoge.txt というファイルができあがる。

この hoge.txt をメモ帳などで開くと OCR の結果が...

やはり OCR は色々と使いこなしのノウハウが必要なようだ。

受験票はまっ平らな状態でUSB カメラの前に置かないといけない。表面が少しでも波打つと一気に精度が落ちる。
また、受験番号以外の部分はなるべく隠さないと、ちょっとした模様でも、OCR は何かの記号として読み取ろうとする。このため、ノイズのような記号が大量にテキストファイルに書き込まれてしまったりする。

そして今回、特に困ったのが、USB カメラの焦点距離。
USB カメラが広角に近いタイプだったのだ。
受験番号をなるべく大きく読み取ろうとすると、どうしてもレンズを受験票に近づける必要があった。
すると、どうしても画面の端のほうの文字がゆがんで横に長くなってしまう。

何回かテストをしてみたものの、10桁の受験番号で、実は10桁ともうまく読めたことは1回もなかった。8桁から9桁が限界。
10桁を綺麗に読み取るには、カメラと受験票をしっかりと固定する台が必要だ。それと、望遠型のレンズと。
逆に言うと、これに近い装置を用意できるなら、かなりの精度での OCR が期待できるということだ。

ただし、アルファベットと数字に限る。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
驚いた

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(1件)

内 容 ニックネーム/日時
せっかくOpenCV使っているのなら、レンズの歪み補正をかければ良いのでは?
通りすがり
2011/09/20 01:15

コメントする help

ニックネーム
本 文
OpenCV でキャプチャした画像を OCR する 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる