我碰到了这个错误,这让我有点疯狂使用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()
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
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!
Run Code Online (Sandbox Code Playgroud)
我不明白它为什么这样做,因为我已将TESSDATA_PREFIX env变量正确设置为我的tesseract安装的正确路径(带有斜杠).
当我尝试直接从powershell运行Tesseract时(我在windows 7顺便说一下),通过执行以下操作:
tesseract.exe .\data\test.tif -psm 7 out
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力!此外,当我在我的python脚本中使用Popen调用Tesseract时它工作正常,但我不喜欢我无法直接从stdout获取OCR文本的想法.实际上,似乎没有其他选择,只能为Tesseract提供输出文件名,然后从该文件中进行fopen和读取.我觉得处理临时文本文件只是为了得到OCR的输出是非常糟糕的...
救命?