2016-10-25 9 views
3

イメージからデータを読み取るための簡単なスクリプトを作成し始めました。Tesseractは特定の数字を読み取っていません

require 'rtesseract' 
require 'mini_magick' 

RTesseract.configure do |config| 
    config.processor = "mini_magick" 
end 

image = RTesseract.new("myImage.jpg") 
puts image.to_s 

が、私はこのイメージで始まった:132B 4:戻ってきた

enter image description here

結果ここでそれを読むためにRTesseractを使用して、私のRubyのコードがあります。

私は0がB(私はそれを解決することができる)として戻ったことを理解します。でも、308は一切返ってこなかった。今私はそれが最初の数でそれをしたので、すでに3と0を読む方法を知っていることを知っています。私はそれに次の数字をレンダリングするいくつかの問題があったと思うので、私はそれを白黒にしました。 132B 4:結果はまだ戻ってきたとしてしかし

enter image description here

これは、私が試した第2の画像があります。

最後に画像を切り取り、最後の3つの数字を試しました。

enter image description here

しかし、私は、スクリプトを実行したとき、それは結果が返されない:ここで

はイメージです。なぜ私は最終的な数字を読むことができないのですか?

私はRuby 2.2.2、rTesseract 2.1.0およびMiniMagick 4.5.1を使用しています。私は

+0

イメージを白い黒色のテキストに変え、イメージ圧縮アーティファクトを削除します。これは、@ eric-duminilの提案です。 一貫性のある既知のフォントでは、私自身が文字ごとに素朴なピクセル - 差分マッチングを行うだけの精度が向上しました。 – Kache

+0

@Kache:面白いと思うよ。リンクはありますか? –

+0

@EricDuminilああ、私はリンクがありません。それは非常に素朴な方法でした:1.標準化されたブラック・オン・ホワイト文字にテキストを修正し、カットします。2.フォントに現れる可能性のあるすべての文字イメージとバリエーションをdatamineします。いくつかのトリックを使用して、すべての文字のすべてのピクセルをカウントする必要はありません(たとえば、文字ピクセルの高さ/幅、黒/白ピクセル数など) – Kache

答えて

2

たTesseract 3.04.01を使用しています

私はたTesseract 3.03 、ルビー2.1.5とMiniMagick 4.5.1

はまた132B 4を返すと、私のLinuxのミント17マシン上でスクリプトをテストしました。

あなたは数字が符号化されていることを確認していた場合、あなたは試みることができる:

image = RTesseract.new("myImage.jpg", options: :digits) 

それは13223 4を返します。

パラメータなしのtesseractを起動すると、可能なオプションの一覧が表示されます。 "pagesegmode 7は、" 面白そうだね。だから、7 = Treat the image as a single text line.

image = RTesseract.new("myImage.jpg", options: :digits, psm: 7) 

それは13223 4 3 21 8を返します。

2番目の画像では、3 21 8が返されます。

JPGのアーティファクトがかなり強く、コントラストが数字と背景の間で比較的低いということが最大の問題だと思います。おそらくPNG画像がより良い結果をもたらすでしょう。GIMPで

、Iは、200pxの高さに画像をリサイズ、いくつかのアーチファクトを除去する桁に近いトリミング、150で色/しきい値を用い、画像を反転およびPNGとして保存:

enter image description here

Rtesseract戻り値:

convert myImage.jpg -geometry x200 -threshold 13% -negate myImage.png 

1320 4 3 0 8 

イメージの魔術で、このコマンドは、同じ結果を達成しました

+0

私はあなたの指示に従いました。私は132を取得しています。4 3 8.それでは、まだゼロに問題があるようです。なぜそれが起こっているかもしれないかについての考えはありますか? –

+0

(注:最初の0は "。"を、2番目は "。"をつけてください) –

+0

Tesseractを更新したり、閾値で遊んだりできますか? –

関連する問題