DelphiでOCRライブラリを使用せずに数字認識を実装した方法を共有したいと思います。 70 x 10ピクセルの長方形からすばやく正確に数値を引き出す必要がありました。
1600%の近似の元の画像の例
最初のステップは、元の画像を白黒に変換することです。
各ピクセルを調べて、その色を「標準」と比較し、さらに多くの場合は白に変換し、それ以外の場合は黒に変換します。
したがって、私の手ですべての数字のパターン(サンプル)を選択しました。 各桁のサイズは7 x 10ピクセルです。
次に、各桁をゼロと1のシーケンスに分割します。 0は白、1は黒です。 たとえば、ゼロの場合
したがって、左から右に上から下に移動すると、各桁のシーケンスが得られます。
0: '0011100011011011000111100011110001111000111100011110001111101100111100'
1: '0011000111100000110000011000001100000110000011000001100000110001111110'
2: '0111100111111000001100000110000011000011000011000011000011111101111111'
3: '0111100110111000001100000110011110001111100000110000011100001101111110'
4: '0000110000111000111100110110010011011001101111111111111100001100000110'
5: '11111001111100100000000000000111100000111000001110000111000011001111000'
6: '0011110011111011000001100000111111011101111100011110001111101110111110'
7: '1111110111111000001100001100000100000110000110000011000011100001100000'
8: '0011100011011011000110110110011110001111101100111110001111100110111110'
9: '001110011111101100011110001111000111111111110011011000011100001101111100'
4ポイントから、最大2 4 = 16個の一意の値を認識できます。10個で十分です。
70のうち4つの数字の可能な組み合わせの数を計算してみましょう。
C k n = n!/(K!*(Nk)!)= 70!/(4!* 66!)= 70 * 69 * 68 * 67/4!= 916895の組み合わせ。
(各桁を一意に識別するために)すべての桁(0〜9)で異なる組み合わせが必要です。
バスティングは次の点を発見しました:(8,20,57,69)
彼らの座標:
これで、各桁の数と組み合わせを一意に決定できる4つのポイントがわかりました。
。
それだけです 次に、元の画像を次のように処理しました。左側と右側で、かなりのピクセル(黒)が見つかり、白い端がトリミングされました。 残りの画像は、7 x 10ピクセルのブロックに分割されました。 そして、これらのブロックで、4つのポイントで組み合わせを比較しました。
誰かが重宝してくれたら嬉しいです。