恼人的python tesseract错误打开数据文件时出错./teddata/eng.traineddata

时间:2014-07-10 09:08:34

标签: python tesseract

我碰到了这个错误,这让我对使用tesseract的python包装器感到有点疯狂,这是一个名为tesseract的python模块。

这是我正在尝试运行的python代码:

img = cv2.imread(image, 0)
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetPageSegMode(tesseract.PSM_AUTO)
tesseract.SetCvImage(img,api)
url = api.GetUTF8Text()
conf=api.MeanTextConf()
print('Extracted URL : ' + url)
api.End()

这就是我得到的:

Error opening data file ./tessdata/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language 'eng'
Tesseract couldn't load any languages!

我不明白为什么会这样做,因为我已将TESSDATA_PREFIX env变量正确设置为我的tesseract安装的正确路径(带有斜杠)。

当我尝试直接从powershell运行Tesseract时(我在windows 7顺便说一句,顺便说一下),通过这样做:

 tesseract.exe .\data\test.tif -psm 7 out

它就像一个魅力! 此外,当我在我的python脚本中使用Popen调用Tesseract时,它工作正常,但我不喜欢我无法直接从stdout获取OCR文本的想法。实际上,似乎没有其他选择,只能为Tesseract提供输出文件名,然后从该文件中进行fopen和读取。我觉得处理临时文本文件只是为了得到OCR的输出会非常糟糕......

帮助?

2 个答案:

答案 0 :(得分:5)

api.Init的第一个参数应为TESSDATA_PREFIX。

答案 1 :(得分:0)

get location of ur tessdata folder by typing in command prompt: 
$ brew list tesseract
in may case:
/usr/local/Cellar/tesseract/3.05.01/bin/tesseract
/usr/local/Cellar/tesseract/3.05.01/include/tesseract/ (27 files)
/usr/local/Cellar/tesseract/3.05.01/lib/libtesseract.3.dylib
/usr/local/Cellar/tesseract/3.05.01/lib/pkgconfig/tesseract.pc
/usr/local/Cellar/tesseract/3.05.01/lib/ (2 other files)
/usr/local/Cellar/tesseract/3.05.01/share/man/ (11 files)
/usr/local/Cellar/tesseract/3.05.01/share/tessdata/ (28 files)

now
tessdata_dir_config = r'--tessdata-dir "/usr/local/Cellar/tesseract/3.05.01/share/tessdata"'

txt= image_to_string(img,lang='eng',config=tessdata_dir_config)