2011-07-01 20 views
11

画像を入力として取り込んでテキストを出力するプログラムを作ってみたい。今私は、ニューラルネットワークを使って、そのキャラクターに単一のキャラクターのイメージを変えることができることを知っています。難しいのは、テキストが入った画像を与えられた場合、個々のキャラクターの周りにどのようにすべての矩形を描くのでしょうか?OCRプログラムはどのように作成しますか?

どのような方法がこれに使用されていますか、それを行う方法を論じている研究論文を知っている人はいますか?

http://en.wikipedia.org/wiki/Optical_character_recognition

はグーグルたTesseract

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

EDITを参照してください:これは、OCRの話をしているように聞こえる、人工知能のような音はありませんあなた

答えて

8

基本的なアプローチは、黒色ピクセルのヒストグラムを作成することです。まず、ライン上のすべてのピクセルを投影します。ヒストグラムの深い谷は、線の間の分離を示します(用紙が傾いている場合は異なる角度を試してください)。次に、ラインごと(またはフォントがモノスペースであることがわかっている場合は1ページあたり)、ピクセルを水平ヒストグラムに投影します。これにより、文字間スペースを強く示すことができます。最低限、これは次のステップで役立つ平均文字高さと幅の値を与えます。

その後、カーニング(文字が重なる部分)を処理する必要があります。スキャンアーチファクトを補償するために、画像上で最初に拡張またはエロージョンを行うことによって、接続されたピクセルを見つけることができます。

スキャン画像の品質によっては、より高度なテクニックを使用する必要があるかもしれませんが、これはあなたを得るでしょう。

+0

これは非常に興味深いのですが、あなたが記述する方法は時にはうまくいくと思うのですが、それは学ぶことができないからです。ニューラルネットワークは、個々のシンボルを読むことでより良くなるように訓練することができますが、あなたのアイデアを使用して完璧になったら、この手順の一部で制限されるような気がします。それが当てはまると思いますか、誤解していますか? – quanta

+0

ああ、少し質問を誤解しました。伝統的なアプローチは、1)画像強調2)セグメント化3)文字認識(NNを使用して)4)コンテキスト情報(辞書検索または統計データの適用)を使用することです。基本的にNNを使用してセグメンテーションを行うか、NNを使用して2)と3)を組み合わせるかの選択肢があります。後者は難しいだろうが、潜在的な利点がある。セグメンテーションにNNを適用したい場合は、優れた機能が必要です。ヒストグラムの谷を使用することは、それらの1つかもしれません(私はこれを実際に行っていないので、実際に結果を予測することはできません)。 – Emile

+0

おめでとうございます!ハフ変換をほぼ再発明しました。 –

2

ありがとうございました未編集の質問は人工知能について質問していた。

+1

@quanta AIとOCRは同じものではありません。それをAIと呼ぶことで、あなたは間違ったことを記述しています。 – Raoul

関連する問題