Ubuntu下Python3.6安装tesserocr报错求助
解决Ubuntu下Python3.6安装tesserocr的编译错误
你碰到的是tesseract v4.0.0-beta.1和pip默认安装的tesserocr版本不兼容导致的编译失败,核心原因是tesseract 4.x的API做了不少变更——比如TessPDFRenderer的构造函数参数、OCR引擎枚举值都有调整,但旧版tesserocr还在调用老API,自然会报错。
下面是分步解决方法:
方法一:安装适配tesseract 4.x的tesserocr指定版本
这是最快捷的修复方式,直接安装和你的tesseract版本匹配的tesserocr版本:
- 先清理残留的失败安装包:
pip3 uninstall -y tesserocr
- 安装适配的版本(2.5.2版本完美适配tesseract 4.x系列):
pip3 install tesserocr==2.5.2
方法二:手动编译安装适配分支(如果方法一失败)
如果上面的命令还是报错,就手动从源码安装兼容tesseract 4的分支:
- 先安装必要的编译依赖:
sudo apt-get update && sudo apt-get install -y tesseract-ocr libtesseract-dev libleptonica-dev python3.6-dev gcc g++ git
- 克隆tesserocr仓库并切换到兼容分支:
git clone https://github.com/sirfz/tesserocr.git cd tesserocr git checkout 2.5.2
- 编译并安装:
python3 setup.py build_ext --inplace pip3 install .
验证安装成功
安装完成后,你可以用下面的代码测试是否正常工作:
import tesserocr from PIL import Image # 替换成你的测试图片路径 print(tesserocr.image_to_text(Image.open('test_image.png')))
补充:错误原因拆解
简单解释下你日志里的关键错误:
TessPDFRenderer构造函数:tesseract 4.x要求传入3个参数(输出路径、数据目录、是否仅文本),但旧版tesserocr只传了2个,导致参数不匹配。OEM_CUBE_ONLY枚举:tesseract 4.x里废弃了基于Cube的引擎,换成了LSTM引擎,所以这些旧枚举被移除,换成了OEM_LSTM_ONLY等新值。
内容的提问来源于stack exchange,提问作者Henry Xiao
相关产品推荐
相关产品推荐

