質問
私は本からの写真です(JPGやTIFF形式の両方で)55個の000画像ファイルを持っています。
各ページの構造はこれです:
一部のテキスト
---(水平線)---
数
一部のテキスト
---(水平線)---
別の番号
一部のテキスト
任意のページにゼロ4に水平線から存在できます。
私は、水平線の下に、番号が何であるかを見つける必要があります。
しかし、番号を見つけるために、私はそれを読む必要はありませんので、数字は厳密には、ページ1に1から始まる、お互いに従ってください:私は簡単に両方であるべき、水平線の存在を検出することができましたそして、数字を検出するために、OCRにページをしようとするよりも安全ます。
アルゴリズムは基本的には、次のようになります。
for each image
count horizontal lines
print image name, number of horizontal lines
next image
問題は、「水平線を数える」の部分を行うための最善の画像ライブラリ/言語がどうなるか。
?解決
おそらくあなたのラインを検出する最も簡単な方法を使用しているの ハフ変換する の中の OpenCVののの(多くの言語のためのラッパーを持っています)ます。
OpenCVのハフtranformは、画像内のすべての行を検出し、その角度を返す/停止座標を開始します。あなただけのその角度を水平に近く、十分な長さのものであるものを維持する必要があります。
O'Reillyの学習OpenCVの<のhref = "http://books.google.com/books?id=seAgiOfu2EIC&pg=PA8&dq=opencv&ei=n_d7SoFIqeLJBPzV5cwM#v=onepage&q=hough%20transform&f=false" のrel = "nofollowをnoreferrer 「>を詳細に関数の入力と出力する(P.148を)説明します。
他のヒント
、連結成分を実行してみて、その結果を分析します。これは、ハフを通じて見つけラインに代わることと、あなたの構造化要素が少し湾曲しているかのラインアルゴリズムは、あなたがそれを拾うしたくない行をピックアップする際にケースをカバーすることができます。
接続された構成要素は、超高速、2つのラスタースキャンアルゴリズムであり、それは異なる標識でマークされ、計上してすべてのあなたの接続要素であなたにマスクを与えるだろう。あなたは(アスペクト比の点で)短い何かを捨てることができます。全体的に、これは、より速く、より一般的しかし、ハフ変換を実行するよりも、おそらく、もう少し関与することができます。ハフは、他の一方で変換コントラストアーティファクトや線でさえも偶然のギャップをより許容されます。 OpenCVのは、あなたのための部品を見つける機能findContours()を持っています。
あなたはジョンResig氏のの<のhref = "http://ejohn.orgをしようとする場合があります/ブログ/ OCR-と-神経ネットインのJavaScript /」のrel = "nofollowをnoreferrer"> OCRとJavascript のでニューラルネット