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

pytesseract无法识别简单黑白图像的技术求助

解决pytesseract无法识别低分辨率白底黑字图像的问题

你的情况是放大锐化后仍输出'\x0c'(换页符,代表未识别到有效文本),可以从以下几个方向调整:

  • 优化图像预处理逻辑

    1. 固定图像模式:先将图像转为灰度模式(L模式),避免resize后模式异常影响识别
    2. 手动二值化:低分辨率图放大后易出现模糊边缘,手动设置阈值彻底区分文字与背景,比如把像素值低于阈值的设为黑色,其余为白色
    3. 用更清晰的插值方式:resize时采用Image.LANCZOS插值,比默认算法更能保留文字细节
  • 调整tesseract识别参数
    给image_to_string添加针对性参数,提升识别精准度:

    • --psm 6:假设图像是单一均匀文本块
    • --psm 8:如果图像仅含单个字符,用这个模式
    • -l eng:指定识别英文(中文可换chi_sim)
    • --oem 3:启用LSTM+传统引擎的混合识别模式

修改后的代码示例

from PIL import Image, ImageFilter
import pytesseract

# 假设bw_image是你的二值化数组
img_x = Image.fromarray(bw_image).convert("L")  # 转为灰度模式
w, h = bw_image.shape
# 用LANCZOS插值放大图像
img_y = img_x.resize((h*10, w*10), Image.Resampling.LANCZOS)
# 手动二值化:可根据实际图像调整阈值(示例为200)
img_binary = img_y.point(lambda x: 255 if x > 200 else 0)
# 带参数执行识别
result = pytesseract.image_to_string(
    img_binary,
    config='--psm 6 --oem 3 -l eng'
)
print(result.strip())

如果还是无效,可尝试用OpenCV做进一步预处理,比如用cv2.threshold优化二值化,或cv2.morphologyEx去除细微噪点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:07:43