2011-02-04 7 views

答えて

0

を理解されるであろう。私は、各ピクセルをサンプリングし、元のピクセルの色の閾値内にある近くのピクセルの配列を構築することを提案する(各一致するピクセルの近隣に対して繰り返す)。配列全体を潜在的なキャラクターとして置いて(または今すぐチェックして)、移動してください(以前に収集されたピクセルを無視して高速化する可能性があります)。

テキストのフォントサイズ、品質、および/または色を事前に知っている場合は、最適化が可能です。そうでなければ、「連続した領域」を構成するものの閾値をかなり寛大にしたいと思うでしょう。

+0

私は実際にこのようなことをしました(私はドキュメントのバッチをスキャンし、ドキュメント間に挿入できるセパレータページを作成しました)。 )。あなたがこのルートに行くなら、あなたが想像することができるよりも多くの書体、フォントサイズ、不十分なスキャンなどがあるので、検出アルゴリズムで完全な時間を費やすことになります。私はページ全体をOCRすることをお勧めします。計算上、それほど高価ではありません。 – Sean

8

興味深いのは、答えがそれほど単純ではないように見えることです。写真に登場する人物を探すことがOCRの第一歩だと思う人もいますが、そうではありません。実際には、あなたが実際に認識を終えるまで、それぞれのキャラクターがどこにあるかはわかりません。

完全に動作する方法は、認識しようとしているイメージのタイプによって異なります。最初に、テキスト領域(ブロック)とその他のものすべてにセグメントを分ける必要があります。

ほんの一例:

  • あなたは車の絵の上にナンバープレートを認識している場合は、あなたが最初のナンバープレートを見つけ、だけにして別の文字にそれを分割する必要があります。
  • アプリケーションフォームを認識している場合は、レイアウトがわかるだけでテキストがある領域を見つけることができます
  • ブックページのスキャンを認識している場合は、画像をテキスト領域と区別してからテキストで処理する必要があります。

この瞬間からは、もはや元のイメージは必要ありません。必要なのは、テキストブロックの2進化されたイメージだけです。すべてのOCRアルゴリズムはバイナリイメージで機能します。ラインストレート、パースペクティブ補正、スキュー補正などの他の種類の画像変換も必要になるかもしれません。これは認識している画像のタイプによって異なります。

テキストブロックが見つかって正規化されたら、さらに進んでテキストブロック上にテキスト行を見つける必要があります。 horisontal行のテキストの場合は、水平線でピクセルヒストグラムを作成することで非常に簡単です。

今、行があるとき、それは今簡単だと思うかもしれません、あなたは文字、hurayに分割することができます!再び、それは間違っています。接続された文字、壊れた文字、合字(1つの単一の形状を形成する2つの文字)、またはそれらの部分が上の右に移動したり、次の文字の下にある文字などの現象があります。あなたがすべきことは、単語と個々の文字に線を分割するといういくつかのヒポテスティスを作成し、すべてのhypotheisに確信度を付けてOCRを試してみることです。最後のステップは、辞書を使用してこのグラフの異なるパスをチェックし、最良のものを選択することです。

今は、実際にすべてを認識したときに、個々の文字がどこにあるのかを言うことができます。

簡単な答えは、OCRプログラムで画像を認識し、その出力から文字の座標を取得することです。

関連する問題