Skip to content

Repository files navigation

舒尔特方格自动点击工具(3×3 ~ 9×9)

Banner

一个基于屏幕 OCR 的舒尔特方格自动点击工具,支持 3×3 到 9×9 多种尺寸,带图形界面、区域选择、并行识别与高速点击。

English Version

⚠️ 重要声明

本项目仅供个人练习、技术研究及辅助训练注意力使用。

请勿在在线排行榜、竞技对战、考试或任何违反目标平台用户协议的场景中使用。 将自动化工具用于公共排行榜刷榜、破坏游戏公平性或获取不正当竞争优势,均属于作弊行为,可能导致账号封禁、法律纠纷及其他严重后果。作者不对任何滥用行为负责。

功能特性

  • 🖱️ 图形化界面:无需记住命令行,点击按钮即可操作
  • 📐 3×3 到 9×9 支持:顶部下拉框切换尺寸,下方检测方块数量自动变化
  • 📸 屏幕区域选择:两次鼠标点击框定方格区域
  • 🔍 整图 OCR + 并行兜底:先对整张截图做一次 Tesseract OCR,再对缺失/冲突的格子并行识别
  • 高速点击:识别完成后立即按 1→N 顺序自动点击,点击间隔可配置
  • 🛡️ 安全保险:鼠标移到屏幕左上角即可立即停止脚本
  • 🖥️ 高 DPI 适配:支持 Windows 高分屏

环境要求

  • Windows 10/11(Linux/macOS 未测试,理论上可运行)
  • Python 3.10+
  • Tesseract-OCR 引擎

安装

1. 克隆仓库

git clone https://github.com/aizzaua/Schulte-Grid-script.git
cd Schulte-Grid-script

2. 安装 Python 依赖

pip install -r requirements.txt

3. 安装 Tesseract-OCR

Windows(推荐,使用 winget)

winget install --id UB-Mannheim.TesseractOCR -e

如果安装路径不是默认的 C:\Program Files\Tesseract-OCR\tesseract.exe,请修改 auto_clicker_ui.py 中的:

TESSERACT_PATH = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

手动安装

UB Mannheim 发布页 下载安装包,安装后把路径加入系统环境变量 PATH

使用方式

图形界面版(推荐)

python auto_clicker_ui.py
  1. 在顶部下拉框选择网格尺寸(3×3 ~ 9×9)。
  2. 点击 【选择区域】,窗口最小化。
  3. 在网页方格上依次点击左上角右下角
  4. 窗口恢复后,点击 【开始检测并点击】
  5. 工具会自动识别数字并按 1→N 顺序点击。

命令行版

python auto_clicker.py

按终端提示操作即可(当前默认 5×5)。

本地训练版

如果你只是想离线练习,也可以运行内置游戏:

python schulte_5x5.py

(当前仅支持 5×5。)

算法介绍

本工具的核心流程分为四个阶段:

┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│ 1. 区域标定  │ -> │  2. 截图与预处理│ -> │  3. OCR 识别  │ -> │  4. 顺序点击  │
└──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘

1. 区域标定

通过 pyautogui 获取用户两次鼠标点击的屏幕坐标,计算出包含整个 N×N 方格的矩形区域 (left, top, right, bottom)

2. 截图与预处理

使用 mss 对矩形区域进行快速截图,得到 PIL Image 对象。预处理包括:

  • 灰度化:去除颜色干扰
  • 自动对比度ImageOps.autocontrast):拉伸像素范围,让文字与背景更分明

3. OCR 识别

识别阶段采用分层 + 并行策略,兼顾速度与准确率:

3.1 整图 OCR(第一层)

对预处理后的整图调用一次 Tesseract,配置为:

--psm 6                    # 假设页面为统一的文本块
-tessedit_char_whitelist=0123456789   # 只识别数字

根据每个识别结果的中心坐标 (cx, cy),通过公式:

col = cx // (width / N)
row = cy // (height / N)
idx = row * N + col

将数字映射到对应的格子。若同一格子出现多个结果,保留置信度最高的。

3.2 并行兜底 OCR(第二层)

对于整图 OCR 未识别到、置信度不足或产生重复数字的格子,单独裁剪出小图,使用 ThreadPoolExecutor 并行调用 Tesseract 再次识别。

单格 OCR 配置为:

--psm 10                   # 把输入当作单个字符
-tessedit_char_whitelist=0123456789

并对单格放大 2 倍,提高小数字识别率。

3.3 去重与冲突解决

若最终 N×N 个格子中出现重复数字,清除冲突格子并重新并行识别,直到每个数字 1~N 只出现一次。

4. 顺序点击

将识别到的 Cellnumber 升序排序,使用 pyautogui.click() 依次点击每个格子的中心坐标。点击间隔由 CLICK_DELAY 控制,默认 0.01 秒。

项目结构

.
├── auto_clicker_ui.py      # 图形界面主程序
├── auto_clicker.py         # 命令行版程序
├── schulte_5x5.py          # 本地 5×5 舒尔特方格游戏
├── requirements.txt        # Python 依赖
├── README.md               # 中文 README
├── README_EN.md            # 英文 README
├── DESCRIPTION.md          # 中英双语仓库描述片段
├── LICENSE                 # MIT 协议
├── .gitignore              # Git 忽略配置
└── assets/
    └── banner.png          # GitHub 封面图

配置项

auto_clicker_ui.py 中可以调整:

配置项 默认值 说明
CLICK_DELAY 0.01 两次点击间隔(秒)
CONFIDENCE_THRESHOLD 55 OCR 置信度阈值,低于此值进入兜底识别
TESSERACT_PATH C:\Program Files\Tesseract-OCR\tesseract.exe Tesseract 可执行文件路径

常见问题

Q: 识别速度慢怎么办?

A: 大部分时间消耗在第一次整图 Tesseract OCR。可以尝试:

  • 缩小选区范围,只框住数字格
  • 提高截图分辨率下文字的清晰度
  • 降低 CONFIDENCE_THRESHOLD 减少兜底识别次数

Q: 点击太快导致网页没响应?

A: 把 CLICK_DELAY 适当调大,例如 0.020.05

Q: 识别结果不对?

A: 确保框选区域准确覆盖 N×N 方格,且数字清晰、无明显反光或遮挡。

免责声明

本工具按“原样”提供,作者不对因使用本工具造成的任何损失、账号处罚或法律纠纷负责。请遵守相关平台规则,合理合法使用。

License

MIT

About

基于 OCR 的舒尔特方格 屏幕自动点击工具,仅供个人练习与技术研究,严禁用于任何排行榜、竞技或考试作弊。 / An OCR-based Schulte Grid auto-clicker for personal practice and technical research only. Strictly prohibited for leaderboards, competitions, or any form of cheating.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages