You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTesseract无法识别numpy数组与PIL图像的问题求助

PyTesseract图像对象识别失败的解决方法

针对OpenCV numpy数组的处理

OpenCV读入的图像默认是BGR格式,且部分色彩空间(如HSV)不被PyTesseract支持,直接传入会导致识别失败,可按以下方式修正:

  • 灰度图优化:单通道灰度图需增强对比度,建议添加二值化处理:
_, img_thresh = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
print("Test 4修正: " + pytesseract.image_to_string(img_thresh))
  • 转PIL图像传递:PyTesseract对PIL图像的兼容性更好,将OpenCV数组转为PIL对象后再传入:
from PIL import Image
pil_img_rgb = Image.fromarray(img_rgb)
print("Test 2修正: " + pytesseract.image_to_string(pil_img_rgb))
  • 废弃无效格式:BGR、HSV格式并非Tesseract支持的输入格式,无需尝试直接传入,必须转成RGB或灰度图后处理。

针对PIL图像对象的处理

直接读取的PIL图像可能因模式问题无法识别,可通过模式转换+配置参数优化:

# 转为灰度模式
img2_gray = img2.convert('L')
# 指定识别配置:单文本块模式+字符白名单
custom_config = r'--oem 3 --psm 6 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
print("Test 6修正: " + pytesseract.image_to_string(img2_gray, config=custom_config))

其中--psm 6指定图像为单一均匀文本块,--oem 3使用默认OCR引擎,字符白名单可缩小识别范围,提升准确率。

版本兼容优化

当前使用的PyTesseract 0.3.10与Tesseract 5.2.0理论兼容,但升级PyTesseract到最新版本可避免潜在适配问题:

pip install --upgrade pytesseract

核心原因

直接传入图像路径时,Tesseract内部会自动完成格式校验与转换;但传入numpy数组或PIL对象时,需严格匹配Tesseract支持的格式(RGB/单通道灰度图,且对比度足够),否则会识别失败。

内容的提问来源于stack exchange,提问作者Radicool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:15:54