2017-05-12 20 views
0

私はtesseractが新しく、訓練を受けた外部データセットを使用しようとするとこのエラーが発生します。Tesseract RuntimeError:画像の認識に失敗しました

tesserocr.pyx in tesserocr.image_to_text (tesserocr.cpp:20994)() 
RuntimeError: Failed recognize picture 

トラブルシューティングの方法がわかりません。問題は外部ライブラリにありますが、それ以上のことはわかりません。どんな指導も高く評価されます。

私はUbuntu 16.04 LTS、x86_64、Python 2.7とTesserocrラッパーを使用しています。外部ライブラリは、https://github.com/arturaugusto/display_ocrからです。

私はちょうどにletsgodigital.traineddataファイルを貼り付け:

/usr/share/tesseract-ocr/tessdata 

コード:デフォルトの英語ライブラリを使用してコードを実行する

import tesserocr 
image = Image.fromarray(im) 
print tesserocr.image_to_text(image, lang = 'letsgodigital', psm=8,) 

言語チェック

print tesserocr.get_languages() 
(u'/usr/share/tesseract-ocr/tessdata/', [u'letsgodigital', u'equ', u'osd', u'eng']) 

の作品
print tesserocr.image_to_text(image, lang = 'eng', psm=8,) 

たTesseractのバージョン情報は:

tesserocr.tesseract_version() 

u'tesseract 3.04.01\n leptonica-1.73\n libgif 5.1.2 : libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.4.4 : libopenjp2 2.1.0\n' 
+0

私の答えはどのようなコメントですか? – thewaywewere

答えて

0

エラーRuntimeError: Failed recognize pictureは、画像をロードすることができないと言います。最初に 'eng'が確実に機能するように、以下を試してみてください。次に、カスタマイズした言語を7セグメントの数字のディスプレイに指定します。

import tesserocr 
from PIL import Image 

image = Image.open('english_text.png') 
digits = tesserocr.image_to_text(image) # print ocr text from image 

また、訓練された言語データパスについては、TESSDATA_PREFIXを以下のように設定してください。

export TESSDATA_PREFIX=/usr/share/tesseract-ocr/tessdata 

このヘルプが必要です。


UPDATE:

は、sampleから切り取らTesseract 4.0.0aWindows 10

enter image description here

を下の画像をテストされ、出力は正しいです。テストの便宜上

enter image description here

上記画像は、お使いのマシンでは動作しない場合、あなたはより多くの上下のマージンを持ってそれ以下編集した画像をみてください。これはデフォルトの--psm 3--oem 3モードでも機能します。

enter image description here

+0

「デフォルトのライブラリを使ってコードを実行する」という文から明らかなように、これらの両方を実行しましたが、私は新しい提案を試みることを非常に喜んでいます。 – DanGoodrick

+0

@DanGoodrickが回答を更新しました。時間が許せば 'OSX'で' tesserocr'( 'tesseract 3.04')でテストしようとします。 – thewaywewere

+0

私のマシン(LinuxとWindows 7)に読み込むために 'letsgodigital'ライブラリを取得できませんでした。しかし、私はKNNを使用して同じタスクを達成することができました。あなたが何をやったのか(なぜ私のコードがうまくいかなかったのか)を理解することができれば、私は自分の質問に答えてマークします。 – DanGoodrick

関連する問題