树莓派Python2.7缺pytesseract、Python3缺OpenCV的OCR项目问题求助
树莓派Python版本依赖冲突解决方案
以下是三种可落地的解决路径,按优先级从高到低排序:
方案1:Python3环境安装预编译OpenCV(最推荐)
树莓派官方源已经提供了适配arm架构的Python3 OpenCV预编译包,无需自行编译,成功率极高:
- 先更新系统源:
sudo apt update && sudo apt upgrade -y - 直接安装对应包:
sudo apt install python3-opencv -y - 安装完成后执行验证命令,输出版本号即安装成功:
python3 -c "import cv2; print(cv2.__version__)"
安装完成后所有代码可统一在Python3环境运行,无需额外适配。
方案2:Python2.7环境安装兼容版本pytesseract
最新版pytesseract已停止支持Python2.7,安装时指定兼容版本即可:
- 先安装Python2的包管理工具:
sudo apt install python-pip -y - 安装tesseract底层依赖(所有Python版本共用):
sudo apt install tesseract-ocr libtesseract-dev libleptonica-dev -y - 安装最后一个支持Python2.7的pytesseract版本:
python -m pip install pytesseract==0.3.4 - 验证安装:
python -c "import pytesseract; print(pytesseract.get_tesseract_version())"
安装完成后所有代码可统一在Python2环境运行。
方案3:跨进程调用(兜底方案)
如果上述两种安装方式均失败,无需修改依赖配置,通过进程间通信串联两个版本的逻辑即可:
- 将OpenCV图像处理逻辑单独写为Python2脚本,处理后的图像数据转base64编码输出到标准输出
- 将pytesseract识别逻辑单独写为Python3脚本,读取图像数据完成识别并返回结果
- 在主脚本中通过subprocess模块调用对应版本的脚本传递数据即可,示例逻辑如下(主脚本运行在Python3环境):
import subprocess import base64 import pytesseract from PIL import Image import io # 调用Python2执行OpenCV预处理 preprocess_res = subprocess.check_output([ "python2", "cv_preprocess.py", "/path/to/your/input/image.jpg" ]) # 解码返回的base64格式预处理图像 img_bytes = base64.b64decode(preprocess_res.strip()) img = Image.open(io.BytesIO(img_bytes)) # 直接调用当前环境的pytesseract识别 ocr_result = pytesseract.image_to_string(img, config='--psm 10 digits')
该方案仅增加极微的调用开销,完全满足OCR类场景的性能要求。
内容的提问来源于stack exchange,提问作者yinebebt
相关产品推荐
相关产品推荐

