web-dev-qa-db-ja.com

画像内の数字を認識する

私はウェブ上の画像で数字を認識するためのリソースを探していました。そのトピックに関する多くのリソースを提供する多くのリンクを見つけました。しかし、残念ながら、それは助けるよりも混乱します。どこから始めればよいのかわかりません。

5つの数字が入った、邪魔されていない(キャプチャなどがない)画像があります。数字は白地に黒で、標準フォントで書かれています。

私の最初のステップは、数字を区切ることでした。私が現在使用しているアルゴリズムは非常に単純で、列が完全に白であり、したがってスペースであるかどうかをチェックするだけです。次に、各文字をトリミングして、周囲に白い境界線がないようにします。これは非常にうまく機能します。

しかし今、私は実際の数の認識に固執しています。正しいものを推測する最良の方法が何であるかわかりません。フォントと直接比較するのは良い考えではないと思います。数字が少しだけ異なると、それ以上機能しなくなるからです。

誰かがこれがどのように行われるかについて私にヒントを与えることができますか?

質問は関係ありませんが、これをC#またはJavaで実装します。その仕事をするライブラリをいくつか見つけましたが、何かを学ぶために自分で実装したいと思います。

17
svens

TesseractなどのオープンソースOCRエンジンの使用を検討してみませんか?

http://code.google.com/p/tesseract-ocr/

C#Tesseractのラッパー

http://www.pixel-technology.com/freeware/tessnet2/

Tesseract用のJavaラッパー

http://sourceforge.net/projects/tessocrinjava/

サードパーティのライブラリを自分で実装することを検討しないかもしれませんが、サードパーティのツールを統合するだけでも膨大な量の作業が必要になります。単純に見えるかもしれないもの(5番と6番を認識する)はしばしば非常に複雑であることも覚えておいてください。何千行もの複雑なコードについて話しています。少なくとも、tesseractのソースコードを見ると、サードパーティのライブラリを活用したいという正当な理由が得られます。

ここに別のSO質問があり、関連するアルゴリズムについていくつかのアイデアが得られます: https://stackoverflow.com/questions/850717/what-are-some-popular-ocr -アルゴリズム

14
Keith Adler