OCRの精度を上げるための、画像加工について教えていただきたいことがあります。


仕事の関係上詳細は書けないので、ご了承ください。

OCRを使って、画像にある数字を読み込みたいのですが、背景が画像の半分ほど占めており、なかなか数字を認識してもらえません。

id:deflation さんに教えていただいた、
* コントラスト向上
* シャープネス
* 2値化
で、ある程度は改善されました。

しかしまだ不十分な状態です。

OCRで読み込みたい数字以外の、背景部分を上手く消す方法は無いでしょうか?

画像加工ソフトPhotoshop等は使えません。プログラムに組み込んで使うためです。

読み込みたい数字以外の背景を消すアルゴリズムを教えていただくか、サイトを詳解していただけないでしょうか?

どうぞよろしくお願いいたします。

URLは必須ですが、詳しくアルゴリズムを紹介していただければ、ダミーでも大丈夫です。

回答の条件
  • URL必須
  • 1人5回まで
  • 13歳以上
  • 登録:2010/12/08 00:16:42
  • 終了:2010/12/14 19:55:26

ベストアンサー

id:hathi No.2

hathi回答回数203ベストアンサー獲得回数462010/12/09 10:31:23

ポイント35pt

この数字を読み込む処理が、定型的背景パターンの上にある数字を読み込むものだったら、定型的背景パターンを軽減するような処理をしてはどうでしょうか。

背景を白や灰色に単純化できれば、数字部分がまだら模様になっていてもコントラストを調整したり、二値化したりすれば、何とかなりませんか。

 http://kyle-in-jp.blogspot.com/2008/06/jmagick_29.html

 http://imagingsolution.blog107.fc2.com/blog-entry-246.html

 http://www2.lint.ne.jp/~lrc/im_edit.htm

 

また読み取りたい数字と同色でランダムに背景に色がついている場合には単なる画像処理ではなくて、あり得ないゴミやパターンを除去するような処理が必要と思います。OCRの処理にはそうした処理が含まれていると思います。漢字や「・」「,」「.」「、」「。」などがなく、0~9だけで、ほぼ数字の大きさも統一がとれ、数字の位置も決まっていることがはっきりしているのなら、そのように扱ってはいかがでしょうか。

 

もともとの画像が機械読み取りを防止するために加工された画像ならば、それを読み取る工夫をするのは好ましくないし、おそらく加工処理の腕を破るのは難しいでしょう。

id:gbs01

詳しい解説ありがとうございます。

紹介してくださったサイトを参考にいたします。

>漢字や「・」「,」「.」「、」「。」などがなく、0~9だけで、

>ほぼ数字の大きさも統一がとれ、数字の位置も決まっていることがはっきりしている

だいたいその通りでございます。上司と相談します。

他にもアイデアやアルゴリズムをご存知のかたよろしくお願いいたします。

2010/12/09 13:39:32

その他の回答(2件)

id:online_p No.1

online_p回答回数1153ベストアンサー獲得回数592010/12/09 03:32:26

ポイント23pt

その数字と同じフォントを数字として特に登録してはどうでしょうか?http://www

id:gbs01

なるほど。一つアイデアが増えました。上司と相談します。

他にもアイデアやアルゴリズムをご存知のかたよろしくお願いいたします。

2010/12/09 13:36:34
id:hathi No.2

hathi回答回数203ベストアンサー獲得回数462010/12/09 10:31:23ここでベストアンサー

ポイント35pt

この数字を読み込む処理が、定型的背景パターンの上にある数字を読み込むものだったら、定型的背景パターンを軽減するような処理をしてはどうでしょうか。

背景を白や灰色に単純化できれば、数字部分がまだら模様になっていてもコントラストを調整したり、二値化したりすれば、何とかなりませんか。

 http://kyle-in-jp.blogspot.com/2008/06/jmagick_29.html

 http://imagingsolution.blog107.fc2.com/blog-entry-246.html

 http://www2.lint.ne.jp/~lrc/im_edit.htm

 

また読み取りたい数字と同色でランダムに背景に色がついている場合には単なる画像処理ではなくて、あり得ないゴミやパターンを除去するような処理が必要と思います。OCRの処理にはそうした処理が含まれていると思います。漢字や「・」「,」「.」「、」「。」などがなく、0~9だけで、ほぼ数字の大きさも統一がとれ、数字の位置も決まっていることがはっきりしているのなら、そのように扱ってはいかがでしょうか。

 

もともとの画像が機械読み取りを防止するために加工された画像ならば、それを読み取る工夫をするのは好ましくないし、おそらく加工処理の腕を破るのは難しいでしょう。

id:gbs01

詳しい解説ありがとうございます。

紹介してくださったサイトを参考にいたします。

>漢字や「・」「,」「.」「、」「。」などがなく、0~9だけで、

>ほぼ数字の大きさも統一がとれ、数字の位置も決まっていることがはっきりしている

だいたいその通りでございます。上司と相談します。

他にもアイデアやアルゴリズムをご存知のかたよろしくお願いいたします。

2010/12/09 13:39:32
id:tama213 No.3

tama213回答回数486ベストアンサー獲得回数302010/12/11 23:26:18

ポイント22pt

OCR用のライブラリを買って、それを使うだけにすればよいと思いますが・・。

WEBとかでも、アルファベットや数字の崩れたものに背景が重なってるものを

自動で認識して自動投稿するようなライブラリがすでにありますよ。

>OCRで読み込みたい数字以外の、背景部分を上手く消す方法は無いでしょうか?

輪郭だけを抽出とかして、あとはごみを消去

数字とわかってる場合は、パターン認識で判断していくとかです。

グラフィック処理系もライブラリを使うのが早いです。

http://q.hatena.ne.jp/answer

id:gbs01

OCRライブラリは、50万円ほどするものをすでに評価版で試しておりますが、

満足のいく結果は得られておりません。

ライブラリをもっと使いこなせれば精度が上がるのかもしれませんが。

2010/12/12 04:52:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません