37

OCRアルゴリズムを開発する必要があるプロジェクトに取り組んでいます(画像からテキストを読み取ってから、別の言語に変換する必要があります)。したがって、最初のタスクは画像からテキストを取得することです。

最初のタスクを完了するための手順。

  1. 指定されたソースから任意の画像形式 (bmp、jpg、png) を読み込みます。次に、画像をグレースケールに変換し、しきい値 (Otsu アルゴリズム) を使用して 2 値化します。//完了(出力画像からノイズを除去する方法???)

結果

入力画像

出力画像

  1. 解像度や反転などの画像の特徴を検出します。最終的にそれをさらに処理するためにまっすぐにした画像に変換できるようにします。(画像の回転のコードは完成しましたが、画像を回転させる必要がある画像角度を検出できませんでした。そのため、まだ角度検出部分に取り組んでいます)

  2. 線の検出と削除。このステップは、ページ レイアウト分析の改善、下線付きテキストの認識品質の向上、表の検出などに必要です (その部分は最後に完了することにしました)。

  3. ページ レイアウト分析。このステップでは、画像に存在するテキスト ゾーンを識別しようとしています。その部分のみが認識に使用され、残りの領域は除外されます。

  4. テキスト行と単語の検出。ここでは、さまざまなフォント サイズと単語間の小さなスペースにも注意する必要があります。

  5. 文字の認識。これは OCR の主要なアルゴリズムです。すべての文字のイメージを適切な文字コードに変換する必要があります。このアルゴリズムは、不確かな画像に対して複数の文字コードを生成することがあります。たとえば、「I」文字のイメージを認識すると、「I」、「|」が生成されます。「1」、「l」コード、および最終的な文字コードは後で選択されます。

  6. 結果を選択した出力形式 (検索可能な PDF、DOC、RTF、TXT など) に保存します。元のページ レイアウト (列、フォント、色、写真、背景など) を保存することが重要です。

そのため、パート 6 で助けが必要です。行検出部分 (n 行を含む段落から n 画像を取得する) を完了しましたが、単語と文字認識を取得する次の部分で立ち往生しています。OCR と文字認識部分に関連する良いリンクを知っている場合は、投稿してくださいここ。

文字認識にはasprise(Javaライブラリ)を使おうと思っていますhttp://asprise.com/product/ocr/index.php?lang=java

4

4 に答える 4

18

回転角度を検出するには、ハフ変換を使用します。

ノイズリダクションの場合、近隣 (北、東、南、または西) を持たないピクセルを同じ色 (許容しきい値を使用して類似の色) に置き換え、近隣の平均を使用します。

レイアウト検出のための垂直方向の白いギャップを検索します。縦の隙間に沿ってスライスします。スライスごとに、水平方向のギャップを検索してスライスします。スライスの高さが同じ (似ている) 場合は、ライン レベルです。それ以外の場合は、行だけが残るまで垂直/水平スライスを繰り返します。最後のステップは再び垂直方向のスライスで、単一の文字 (場合によっては合字) が得られます。長くて狭い、または短くて広いスライスは線です。

キャラクター スライスをキャラクター ライブラリと比較します。パフォーマンスが主な問題ではない場合は、使用されているフォントを特定できるまで、さまざまなフォント ライブラリ内の文字を検索してみてください。次に、文字認識のためにそのフォントを使い続けます。

元のイメージで、各文字を背景色に置き換えます。背景色は、文字の各ピクセルに対して文字の一部ではないピクセルを補間することによって決定されます。これにより、背景画像があれば表示されます。

于 2013-06-14T02:58:33.870 に答える
3

文字認識の部分については、Tesseractを参照することをお勧めします。

于 2013-06-14T03:05:44.390 に答える
1

potrace を使用してノイズを減らすことができます。指定された画像 (bmp) をベクトル化し、svg、pdf、およびその他の形式に変換します。

http://potrace.sourceforge.net/potrace.html

于 2014-11-18T12:50:07.377 に答える