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

Python Tesseract OCR无法识别指定图像文本的问题求助

testimg.png:
1

我尝试识别该图像中的文本,但毫无结果;对其他文本的识别效果也极差,部分单词会被随机字符替换,必须对照词表才能得到正确内容。
这是我要识别文本的图像,我已尝试使用Tesseract进行灰度化、反转等多种预处理操作,但均无效果,始终无法识别出文本。请问该如何解决或训练模型?

当前代码:

pyautogui.screenshot("testimg.png", region=(1050, 30, 455, 50)) #name

originalImage = cv2.imread('testimg.png')

# Convert the image to grayscale
grayImage = cv2.cvtColor(originalImage, cv2.COLOR_BGR2GRAY)

# Apply a threshold to get a binary image
(_, blackAndWhiteImage) = cv2.threshold(grayImage, 127, 255, cv2.THRESH_BINARY_INV)


custom_config = r'--psm 7'
text = pytesseract.image_to_string(blackAndWhiteImage, config=custom_config)
print('Extracted Text: ', text)
解决文本识别问题的方案

一、优化图像预处理

  • 替换固定阈值为自适应阈值:固定阈值127无法适配局部明暗差异,改用自适应阈值能精准调整:
    blackAndWhiteImage = cv2.adaptiveThreshold(grayImage, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
    
  • 添加降噪步骤:若图像存在噪点,先做高斯模糊处理:
    blurred = cv2.GaussianBlur(grayImage, (3,3), 0)
    
  • 形态学增强文本边缘:用闭运算填补文本缝隙,强化字符轮廓:
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
    processedImage = cv2.morphologyEx(blackAndWhiteImage, cv2.MORPH_CLOSE, kernel)
    

二、调整Tesseract识别配置

  • 切换PSM模式:--psm 7仅适用于单行文本,若布局复杂,可尝试--psm 6(单块文本假设)或--psm 3(自动布局检测)。
  • 限定字符集与语言:针对英文文本,指定语言并限定识别字符范围,减少随机错误:
    custom_config = r'--psm 6 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    text = pytesseract.image_to_string(processedImage, lang='eng', config=custom_config)
    

三、模型微调(上述方法无效时)

  • 准备训练样本:收集至少几百张和目标图像风格、字体一致的文本图像,手动标注对应字符,生成Tesseract要求的.box和.tif格式文件。
  • 基于现有模型微调:使用Tesseract的训练套件(如tesstrain),以官方英文模型为基础,针对你的特定文本样式进行微调训练。
  • 注意样本覆盖:确保样本包含所有可能出现的字符、字号和排版场景,提升模型适配性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:11:12