pytesseract无法识别简单黑白图像的技术求助
解决pytesseract无法识别低分辨率白底黑字图像的问题
你的情况是放大锐化后仍输出'\x0c'(换页符,代表未识别到有效文本),可以从以下几个方向调整:
优化图像预处理逻辑
- 固定图像模式:先将图像转为灰度模式(
L模式),避免resize后模式异常影响识别 - 手动二值化:低分辨率图放大后易出现模糊边缘,手动设置阈值彻底区分文字与背景,比如把像素值低于阈值的设为黑色,其余为白色
- 用更清晰的插值方式: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
相关产品推荐
相关产品推荐

