私のプロジェクトでは、スキャンしたドキュメントの画像前処理ライブラリを作成しています。今のところ、行削除機能にこだわっています。
問題の説明: スキャンされたフォームのサンプル:
Name* : ______________________________
Age* : ______________________________
Email-ID: |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|
注: 以下は、その他の条件です。
- スキャンされた文書には、さらに多くの縦方向および横方向のガイドラインが含まれる場合があります。
- 線の太さが 1px を超える場合があります
- ドキュメント自体が正しく印刷されず、インクの膨れや厚さの不均一な形でノイズが発生する可能性があります
- ドキュメントの背景や線に色が付いている可能性があります
今私がやろうとしているのは、これらの行を検出して削除することです。その際、手書きの内容が失われてはなりません。
解決策: 現在の解決策は Java で実装されています。
キャニー/ソーベル エッジ検出器としきい値フィルター (画像をモノクロにするため) の組み合わせを使用して、これらの線を検出しました。前のアクションから、ピクセルの白黒配列を取得します。配列をトラバースし、そのピクセルの輝度が指定されたビン値を下回るかどうかを確認します。そして、そのようなピクセルが 30 (ピクセル単位の最小行長) 見つかった場合は、それらを削除します。縦線についても同じことを繰り返しますが、横線除去によるカットがあることを考慮して.
解決策はうまくいくようですが。しかし、次のような問題があります。
- 重複文字の削除
- 画像内の文字の間隔が適切でない場合も、線と見なされます。
- エッジ検出の出力画像は白黒です。
- 少し遅い。通常、2480*3508 の画像の場合、約 40 秒かかります。
適切かつ効率的に行う方法を親切にガイドしてください。また、オープンソースのライブラリがあれば教えてください。
ありがとう