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

Pytesseract识别截图文本后半段频繁乱码出错问题求助

识别异常根因
  • 缺少图像预处理步骤:原始截图直接送入识别模型,文本区域对比度不足、存在轻微噪点/模糊的情况下,后半段低辨识度文本很容易被识别为乱码
  • 未配置Tesseract识别规则:默认识别模式会匹配所有语言字符、特殊符号,你场景仅需要识别英文和基础标点,无限制的识别范围会引入大量无效干扰结果
  • 固定截图范围兼容性差:写死的bbox参数在页面缩放、分辨率变化、滚动偏移的场景下,可能出现后半段文本被截断、不在清晰识别区域的问题
修复方案

你可以直接使用优化后的代码,核心新增了图像预处理、识别规则限制两个模块:

import time
import keyboard
import pytesseract
from pytesseract import image_to_string
from PIL import Image, ImageGrab
import cv2
import numpy as np

pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'

# 1. 截图并预处理
img = ImageGrab.grab(bbox=(412,563,1054, 701))
# 转灰度图
img_gray = img.convert('L')
# 二值化处理,调整阈值适配你的截图文本颜色,这里假设深色文本浅色背景
threshold = 150
img_binary = img_gray.point(lambda x: 0 if x < threshold else 255, '1')
# 可选:保存预处理后的图方便调试
img_binary.save('processed_text.png')

# 2. 配置识别规则:限定识别单块文本,仅识别英文字母、空格和常用标点
custom_config = r'--psm 6 -c tessedit_char_whitelist="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ .,!?\'"'
text = image_to_string(img_binary, config=custom_config)

# 3. 文本清洗
text = text.replace('\n',' ').strip()
# 去掉已知的开头异常B
if text.startswith('B '):
    text = text[2:]
print(text)

# 打字逻辑
time.sleep(1)
keyboard.write(text)

优化点说明

  • 灰度+二值化处理后,文本和背景对比度大幅提升,Tesseract识别准确率会明显提高,如果识别效果仍不佳可以调整threshold参数的数值(取值范围0-255)
  • 新增的识别配置里--psm 6指定Tesseract按单块统一文本处理,白名单配置过滤了所有不需要的特殊符号,避免乱码输出
  • 增加了开头异常B的自动清除逻辑,不需要手动处理

你提供的识别异常截图样例如下:
机器人截取的截图样例


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:54:04