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

Python Pytesseract无法识别截图字符串的问题解决求助

游戏截图特定文字识别乱码的解决方案

核心优化方向

针对你的场景,主要问题是全屏识别干扰多、目标文字与背景对比度不足,可以通过以下三步解决:

  1. 裁剪目标区域
    只识别“Enemy”所在的局部区域,排除屏幕其他UI元素的干扰。根据截图,目标文字位于屏幕上方中间位置,可手动指定坐标范围。

  2. 图像预处理增强对比度
    目标文字为黄色,通过HSV颜色空间提取黄色区域,转换为二值化图像,让文字边缘更清晰,降低识别难度。

  3. 限定Tesseract识别范围
    指定只识别字母和标点Enemy, ,减少无关字符的误识别,同时设置合适的页面分割模式(PSM)。

修改后的完整代码

import pytesseract
import cv2
import pyautogui
import numpy as np

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

# 1. 截图并裁剪目标区域(根据实际坐标调整x,y,w,h)
screen = pyautogui.screenshot()
screen_np = np.array(screen)
# 转换为BGR格式适配OpenCV
frame = cv2.cvtColor(screen_np, cv2.COLOR_RGB2BGR)
# 裁剪目标区域:示例坐标,需根据你的屏幕调整
x, y, w, h = 400, 100, 600, 80
target_area = frame[y:y+h, x:x+w]

# 2. 图像预处理:提取黄色区域并二值化
hsv = cv2.cvtColor(target_area, cv2.COLOR_BGR2HSV)
# 黄色的HSV范围(可根据实际微调)
lower_yellow = np.array([20, 100, 100])
upper_yellow = np.array([30, 255, 255])
mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
# 二值化图像,文字为白色,背景黑色
binary_img = cv2.bitwise_not(mask)

# 3. Tesseract识别,限定字符集和PSM模式
custom_config = r'--psm 6 -c tessedit_char_whitelist=Enemy, '
result = pytesseract.image_to_string(binary_img, config=custom_config)
print("识别结果:", result.strip())

# 显示处理后的图像,方便调试
cv2.imshow('Processed Image', binary_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

关键说明

  • 坐标调整:x,y,w,h需要根据你的实际屏幕分辨率和文字位置修改,可以用pyautogui.position()获取鼠标hover在文字边缘时的坐标。
  • HSV范围:如果黄色识别不准确,可以微调lower_yellow和upper_yellow的数值适配实际画面颜色。
  • PSM模式:--psm 6表示假设图像是单一的均匀文本块,适合这种连续重复的文字场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:30:50