2011-01-20 1 views
2

私はOCR C#プロジェクトを持っています。そこにはテキストが入ったスキャンドキュメントがあり、ドキュメントのテキストを返す必要があります。イメージ処理 - スキャンしたドキュメントを回転させてテキストを整列させます

私はすでにテキストを解析するソリューションを持っていますが、スキャンされたドキュメントが回転している部分(右または左)に詰まっています。

画像にノイズ(全画素が白または黒)がないと仮定した場合、実行時(人間の目なし)で画像を回転させるアルゴリズムをお手伝いできますか?

おかげ

+3

イメージは常に約90度回転しますか? –

答えて

1

(Iない専門家ではなく、好奇心で、この記事を書く)

IMHO、この問題は、ブルートフォース試行錯誤のアプローチと効果的にコストを解決することができます。あまりにも多くの間違った方向があることができないためです。

私はあなたが簡単にテキストの境界ボックスを判断できると思います。このバウンディングボックスは、2つの方法でのみ間違った向きを持つことがあります。時計を賢く回転させたり、時計回りに回転させたりします。したがって、画像を最大で2回転すると(境界ボックスを直立させる回転)、正しい方向を見つけることができます。

つまり、イメージをさらに処理せずに正しいドキュメントの向きを見つけて、テキストの配置を判断できます。そして、テキストの整列を決定することは、私が思うとかなり大きな処理になります。

UPDATE

私たちは、正確な回転角度を見つける必要がないことを示唆しています。ボンディングボックスが直立している場合は、直角または180度の回転角度にすることができます。

1)、結果を確認し、OCRを実行直立ボンディングボックス
2)を行い、OKであればその
3)は180度
2)OCRを実行を回転させて行わ。今度は直角でなければなりません

実際に正確な回転角度を見つけなければならないのなら、文字 'o'、 'c'、または 'm'の斜体フォント)。または、ピリオド( '。')の相対的な位置を見つけます。これは複雑な操作を必要とすると私は思う。

+0

これは、バルクスキャン/コーディングスイートで行った方法です。 –

+1

はい、向きは問題ではない、問題は画像を回転させるための正確な角度を見つけることです。 私が正しく理解していれば、境界ボックスは、最も高い、最も低い、最も右の、そして最も左の黒ピクセルのラインをとって作成された正方形によって決定されます。 このバウンディングボックスを取得したとします。テキストの配置を決定するために必要な処理は何ですか? – MaximD

3

Hough Transformを使用して、水平方向のテキストの向きを指定します。ハフ変換の基本的な前提は、x-y座標をr-θ座標系に変換することであり、rは原点からの距離であり、θは方位である。

イメージが変換されたら、同じテータをビンに入れて、最も強い方向を見つけます。

この方法では、離散rとtheta内で投票が使用されるためです。シータの解像度は使用されるビンの数だけです。 -180度〜+ 180度を1度の増分で使用するのではなく、より正確な角度または速度のいずれかにバインドすることができます。

関連する問題