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

使用PyAutoGUI实现截图识别文字并自动输入的问题求助

截屏取字并自动输入程序修复与优化

核心问题排查

你的代码存在几个致命错误,导致Tesseract无法正常识别图片:

  • Tesseract路径配置错误:你把path_to_tesseract赋值为截图的数组对象,实际需指定Tesseract可执行文件的本地路径。
  • 图片路径为空:path_to_image是空字符串,程序找不到要识别的截图文件,需指向你保存的image1.png。
  • 冗余的图片转换:截屏后无需转成OpenCV格式再保存,直接用PIL处理更简洁,还能避免格式兼容问题。

修正后的完整代码

from pynput.keyboard import Controller
import time
import pyautogui
from PIL import Image, ImageOps
from pytesseract import pytesseract

# 初始化键盘控制器
keyboard = Controller()

# 预留2秒切换到目标窗口
time.sleep(2)

# 1. 截取指定区域屏幕
screenshot = pyautogui.screenshot(region=(0, 400, 800, 100))

# 2. 图片预处理(提升Tesseract识别率)
# 转灰度图
gray_img = ImageOps.grayscale(screenshot)
# 二值化(强化文字与背景对比度)
threshold_img = gray_img.point(lambda x: 0 if x < 127 else 255, '1')

# 3. 配置Tesseract路径
# Windows示例路径,根据实际安装位置修改
pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# Linux/macOS若已加入系统PATH,直接写 'tesseract' 即可
# pytesseract.tesseract_cmd = 'tesseract'

# 4. 提取图片文字
extracted_text = pytesseract.image_to_string(threshold_img).strip()
print("提取到的文字:", extracted_text)

# 5. 自动输入提取的文字
if extracted_text:
    for char in extracted_text:
        keyboard.press(char)
        keyboard.release(char)
        time.sleep(0.01)

关键优化说明

  • 图片预处理:转灰度+二值化能大幅提升文字识别准确率,尤其适合背景复杂的截图。
  • 直接处理截屏对象:无需保存图片到磁盘,直接将PIL格式的截屏传给Tesseract,减少IO操作,提高效率。
  • 路径配置:务必根据操作系统和Tesseract安装位置修改路径,Windows默认路径为C:\Program Files\Tesseract-OCR\tesseract.exe;Linux/macOS需先通过包管理器安装(如sudo apt install tesseract-ocr)。
  • 输入逻辑优化:加入空值判断,避免提取不到文字时执行无效输入操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:05:32