调用EasyOCR的readtext方法触发错误,请求故障排查
故障排查与解决方法
故障原因分析
- 图片文件异常:日志中重复出现PNG文件流(IHDR/PLTE/IDAT),且提示
Operation on closed image,说明sign.png可能存在损坏、格式不规范(如多帧PNG)或资源读取冲突。 - CPU指令集不兼容:错误码
0xC000001D是Windows系统的非法指令错误,EasyOCR的预训练模型可能使用了当前CPU不支持的高级指令集(如AVX2),在CPU模式下触发报错。 - 依赖库版本冲突:Pillow、OpenCV、EasyOCR或PyTorch之间的版本不匹配,导致图片处理时出现资源过早释放的问题。
- 预训练模型损坏:
./model目录下的模型文件可能未下载完整或已损坏,导致模型加载或推理时出错。
分步解决方法
1. 验证并修复图片
- 用图片编辑工具(如系统画图、Photoshop)打开
sign.png,重新保存为标准单帧PNG格式,或转换为JPG格式后重试。 - 用代码验证图片完整性:
from PIL import Image try: img = Image.open('sign.png') img.verify() # 验证图片完整性 img = Image.open('sign.png') # 重新打开加载 print("图片文件正常") except Exception as e: print(f"图片损坏或格式错误:{str(e)}")
2. 解决CPU指令集问题
- 如果有NVIDIA显卡,将代码中
gpu=False改为gpu=True,切换到GPU运行(GPU模式不受CPU指令集限制)。 - 若只能用CPU,尝试安装适配旧CPU的EasyOCR版本,或从源码编译时禁用AVX2等高级指令集。
3. 修复依赖库版本
卸载现有冲突依赖,重新安装兼容版本:
pip uninstall easyocr pillow opencv-python torch -y pip install easyocr pillow==9.5.0 opencv-python==4.8.0 torch==2.0.1+cpu --index-url https://download.pytorch.org/whl/cpu
4. 重新下载预训练模型
- 删除
./model目录下的所有文件。 - 重新运行代码,让EasyOCR自动重新下载完整的英文识别模型。
5. 调整图片读取方式
手动读取图片后再传入readtext,避免自动读取时的资源冲突:
import cv2 # 手动读取图片 img = cv2.imread('sign.png') if img is not None: result = reader.readtext(img) print(result) else: print("无法读取图片文件")
内容的提问来源于stack exchange,提问作者Dawn
相关产品推荐
相关产品推荐

