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

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语言包:

  1. 收集该字体的样本图片
  2. 使用Tesseract的tesstrain工具生成自定义训练数据
  3. 将生成的.traineddata文件放入Tesseract的tessdata目录
  4. 在代码中指定lang参数调用自定义模型:
    str_response = pytesseract.image_to_string(image, lang='custom_font', config='--oem 3 --psm 6')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:32:36