Pytesseract识别结果异常求助(含图像增强实现代码)
解决Pytesseract识别文本异常的问题
问题分析
- 图像增强逻辑错误:你先对原图做了颜色增强,但后续锐化操作直接使用原图覆盖了之前的颜色增强结果,导致颜色增强未生效。
- 未指定目标语言:Pytesseract默认识别英文,无法正确处理含重音的越南语文本,导致"cần"被识别为"can","Gala"大小写识别错误。
- 预处理不足:仅转灰度的对比度不够,没有做二值化处理提升文字与背景的区分度。
修正后的代码
import pytesseract from PIL import Image from PIL import ImageEnhance filename = 'image3.png' color_image = Image.open(filename) # 先增强颜色,再基于颜色增强后的图像做锐化 curr_col = ImageEnhance.Color(color_image) new_col = 5 img_colored = curr_col.enhance(new_col) # 对颜色增强后的图像执行锐化,而非原图 curr_sharp = ImageEnhance.Sharpness(img_colored) new_enh = 2 img_enhanced = curr_sharp.enhance(new_enh) # 转灰度后做二值化,强化文字与背景对比度 bw = img_enhanced.convert('L') threshold = 127 bw = bw.point(lambda x: 0 if x < threshold else 255, '1') bw.save('BW_image.png') img_enhanced.save('enhanced.png') # 指定越南语语言参数(需提前安装对应训练数据) text = pytesseract.image_to_string(bw, lang='vie') print(text)
关键调整说明
- 修复增强逻辑:锐化操作基于颜色增强后的图像,确保两次增强效果叠加生效。
- 添加越南语支持:调用
image_to_string时指定lang='vie',需提前下载Tesseract越南语训练数据并放入tessdata目录。 - 优化预处理:转灰度后增加二值化步骤,提升文字与背景的对比度,降低识别干扰。
调整后可正确识别出图片中的Nam 65 cần Gala。
内容的提问来源于stack exchange,提问作者jens
相关产品推荐
相关产品推荐

