OCR認識シリーズの1つ - 技術的な実現

システムに入力された画像がテキストのページである場合、認識時に最初に行うことは、ページ上のテキストの方向を判断することです。取得したページは多くの場合完璧ではなく、歪んでいたり、汚れている可能性があるためです。そのため、最初に行う必要があるのは、画像を前処理し、角度補正を行い、ノイズを除去することです。

次に、ドキュメントのレイアウトを分析し、各行をセグメント化し、各行のテキストを切り出し、最後にテキストの各行を列にセグメント化し、各文字を切り出し、その文字を文字認識のためにトレーニング済みの OCR 認識モデルに送信し、結果を取得する必要があります。

ただし、モデルの認識結果は不正確であることが多く、文字の組み合わせロジックが合理的かどうかを検出する文法検出器を設計するなど、認識結果を修正して最適化する必要があります。たとえば、「 Because 」という単語について考えてみます。設計した認識モデルはそれを 8ecause として認識します。その後、文法検出機能を使用してこのスペル ミスを修正し、8 を B に置き換えて認識修正を完了します。このようにして、OCR プロセス全体が完了します。大きなモジュールの概要から、一連の OCR プロセスは次のように分割できます。

レイアウト解析 → 前処理 → 行・列の切り取り → 文字認識 → 後処理の認識・修正

OCR テクノロジーの実現は、一般に、画像の前処理文字の切り取り文字の認識レイアウトの復元テキストの後処理の 5 つのステップに分けることができます

画像の前処理とテキストの後処理は最も難しい部分です。

文字の切り取り、文字の認識、レイアウトの復元は、文字認識の中核となるステップです。

1. 画像の前処理

(1) 傾いたテキストの場合は、テキストの最小面積の四角形 (minAreaRect) を見つけて、その四角形を回転して四角形を真っ直ぐにし、角度を補正します。

四角形領域内の文字が再び傾いている場合は、この時点でハフ ライン変換 (HoughLinesP) の使用を検討してください。ハフ ライン変換とは、グラフ上のいくつかの点が直線を形成し、その直線を描画することです。

各行の単語は直線上にある必要があることがわかります。

補正は直線法を求めて行います。

(2) 文字の歪みについては、写真を撮るときによく起こりますが、写真を撮る角度によって文字が歪んでしまうことがあります。

処理手順:

1.元画像を入力

2. グレースケール処理

3. 2値化

4. 拡張操作

5. 腐食処理、エッジスリミング

6. エッジ検出

7. 長方形枠の検出

8. 歪んだ長方形を修正する

9.修正完了

一部の特定されたソース データでは、状況は改善され、前処理は無視できます。

2. 文字をカットする

前処理を経て絵が統一された後に、文字ごとに切り出す文字切りを行います。OCR の最終的な認識は 1 つの文字を認識することであるため (たとえば、あなたを認識する場合、実際には y、o、u が順番に認識されます)、さらに、文字を切り取る場合、後続の復元操作のために各文字にマークを付ける必要があります。文字間の相対位置に応じて復元します。

文字の切り抜き方法

(1) 投影法

各エンティティには影があるという常識に基づいて、文字にも影があります。この方法は、行の分割と列の分割に使用できます。最初に行を切り取り、次に列を切り取る必要があることに注意してください。

ラインカット:ピクセルを水平に集め、左から挿入、右から押し出し、すべての黒い点を右端に積み重ねます

列カット: 行カットに基づいて垂直にカットし、各カットブロックに対して個別に列投影を実行します。

 最後に、突起の間の隙間を通して、各文字を切り取ることができます。

OCRの識別を容易にするために、カット文字を白黒文字にプログラムしており、RGBカラー値で0が黒、255が白を表します。

3. ニューラルネットワークを使用して文字を認識する

それぞれのキャラクターの特徴を学ぶのがメインで、32×32ピクセルの絵で特徴を学びながらもしっかり学ぶことができます。

ニューラルネットワークを構築し、学習用の画像を入力するだけで、機械が各キャラクターの特徴を自然に学習するため、比較的簡単なプロセスです。

4. テキストの後処理

割引::

文字認識後は文字を復元する必要があり、この作業が非常に重要です。復元には先ほど取得した文字認識結果と文字位置情報を利用します。

文字の位置情報に基づいて、文字が同じ行、同じ列にあるかどうかを判断します。

たとえば、2 つの単語が同じ行にあるかどうかを判断するには、Y 軸上の 2 つの単語の重なりを見ることができます。重なりが一定の割合に達すると、2 つのデータ セットは同じ行にあるとみなすことができます。2つのテキストの縦方向の重なり率を見て、同じ列に属するかどうかを判断することもできます。

修正:

より正確なテキスト コンテンツを取得するには、結果を修正する必要もあります。スマート修正を使用して、状況に応じて修正を行うことができます。たとえば、いくつかの固定コーディング規則などです。

5. まとめ

OCR の焦点はデータにあると思います。データの量が認識率を決定します。同じアルゴリズムの場合、大量のデータの一般化は、少量のデータの一般化よりも明らかに強力です。データ量が少なすぎると、何らかの変化が生じると認識率に重大な影響を及ぼす可能性があります。この機械学習は人間と同じで、中国語の文字を読んで英語を認識するだけで、英語の文字が何であるかは絶対に知りません。したがって、データの多様性は非常に重要です。


 

おすすめ

転載: blog.csdn.net/wangmengmeng99/article/details/129947017