令人烦恼的Python Tesseract错误:打开数据文件./tessdata/eng.traineddata时出错。

4
我将翻译以下关于IT技术的内容。这是一段关于 Python 模块 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环境变量正确设置为指向我的tesseract安装路径(包括斜杠)。

当我尝试直接在PowerShell中运行Tesseract时(我使用的是Windows 7),我输入了以下命令:

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

它的效果非常好! 当我在我的Python脚本中使用Popen调用Tesseract时,它可以很好地工作,但是我不喜欢我无法直接从stdout获取OCR文本的想法。实际上,似乎没有其他选择,只能向Tesseract提供一个输出文件名,然后打开并从该文件中读取。我觉得为了获得OCR的输出而处理临时文本文件会非常糟糕...

需要帮助吗?

2个回答

5
api.Init的第一个参数应该是TESSDATA_PREFIX。

1
感谢您的回答。多亏了您,我解决了特定的“Error opening data file ./tessdata/eng.traineddata”错误。我将“.”替换为“C:\Program Files (x86)\Tesseract-OCR\",然后它就可以工作了。祝您有个愉快的一天。 - mak
1
@mak 我有一个类似的问题,它不会将“~”扩展到主目录。 - Navin
@Navin:这是因为将~扩展到主目录路径是由shell完成的,而Python文件API(或任何其他语言文件API)不是shell。 - Karol S
@KarolS 是的,现在我想起来了,我不确定为什么我期望它能够工作。我认为这是因为我之前使用 subprocess.call(shell=True) 调用 tesseract,然后切换到了 API。 - Navin

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接