Tesseract全新安装后识别结果全为乱码,求故障排查方案
Tesseract识别乱码问题排查与解决方法
核心问题分析
你遇到的乱码问题,本质是Tesseract默认训练数据无法匹配图片中的特殊像素字体,再加上Windows环境下可能存在路径配置缺失、图片预处理不足等问题,导致识别完全失效。
针对性解决方法
1. 配置Tesseract路径(Windows必做)
Windows环境下pytesseract无法自动定位Tesseract执行文件,需在代码中显式指定:
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
路径请根据你的实际安装目录调整
2. 添加图片预处理步骤
目标图片是低分辨率像素字体,需通过预处理提升识别精度:
- 转为灰度图消除色彩干扰
- 反转颜色让文字变为深色、背景为浅色
- 二值化强化文字边缘
3. 调整OCR引擎与分割参数
使用--oem 3(混合引擎模式)和--psm 6(单文本块假设),适配你的图片类型。
修改后的完整代码
import pytesseract from PIL import Image, ImageOps def main(): # 指定Tesseract安装路径 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' image = Image.open("mac.jpg") # 图片预处理 image = image.convert('L') # 转灰度 image = ImageOps.invert(image) # 颜色反转 image = image.point(lambda x: 0 if x < 127 else 255, '1') # 二值化 # 带参数执行OCR str_response = pytesseract.image_to_string(image, config='--oem 3 --psm 6') print(str_response) if __name__ == "__main__": main()
进阶优化(如果上述方法仍无效)
如果特殊字体还是无法识别,需要训练自定义Tesseract语言包:
- 收集该字体的样本图片
- 使用Tesseract的
tesstrain工具生成自定义训练数据 - 将生成的
.traineddata文件放入Tesseract的tessdata目录 - 在代码中指定
lang参数调用自定义模型:str_response = pytesseract.image_to_string(image, lang='custom_font', config='--oem 3 --psm 6')
内容的提问来源于stack exchange,提问作者Chapo
相关产品推荐
相关产品推荐

