一个基于屏幕 OCR 的舒尔特方格自动点击工具,支持 3×3 到 9×9 多种尺寸,带图形界面、区域选择、并行识别与高速点击。
本项目仅供个人练习、技术研究及辅助训练注意力使用。
请勿在在线排行榜、竞技对战、考试或任何违反目标平台用户协议的场景中使用。 将自动化工具用于公共排行榜刷榜、破坏游戏公平性或获取不正当竞争优势,均属于作弊行为,可能导致账号封禁、法律纠纷及其他严重后果。作者不对任何滥用行为负责。
- 🖱️ 图形化界面:无需记住命令行,点击按钮即可操作
- 📐 3×3 到 9×9 支持:顶部下拉框切换尺寸,下方检测方块数量自动变化
- 📸 屏幕区域选择:两次鼠标点击框定方格区域
- 🔍 整图 OCR + 并行兜底:先对整张截图做一次 Tesseract OCR,再对缺失/冲突的格子并行识别
- ⚡ 高速点击:识别完成后立即按 1→N 顺序自动点击,点击间隔可配置
- 🛡️ 安全保险:鼠标移到屏幕左上角即可立即停止脚本
- 🖥️ 高 DPI 适配:支持 Windows 高分屏
- Windows 10/11(Linux/macOS 未测试,理论上可运行)
- Python 3.10+
- Tesseract-OCR 引擎
git clone https://github.com/aizzaua/Schulte-Grid-script.git
cd Schulte-Grid-scriptpip install -r requirements.txtwinget 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- 在顶部下拉框选择网格尺寸(3×3 ~ 9×9)。
- 点击 【选择区域】,窗口最小化。
- 在网页方格上依次点击左上角和右下角。
- 窗口恢复后,点击 【开始检测并点击】。
- 工具会自动识别数字并按 1→N 顺序点击。
python auto_clicker.py按终端提示操作即可(当前默认 5×5)。
如果你只是想离线练习,也可以运行内置游戏:
python schulte_5x5.py(当前仅支持 5×5。)
本工具的核心流程分为四个阶段:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 1. 区域标定 │ -> │ 2. 截图与预处理│ -> │ 3. OCR 识别 │ -> │ 4. 顺序点击 │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
通过 pyautogui 获取用户两次鼠标点击的屏幕坐标,计算出包含整个 N×N 方格的矩形区域 (left, top, right, bottom)。
使用 mss 对矩形区域进行快速截图,得到 PIL Image 对象。预处理包括:
- 灰度化:去除颜色干扰
- 自动对比度(
ImageOps.autocontrast):拉伸像素范围,让文字与背景更分明
识别阶段采用分层 + 并行策略,兼顾速度与准确率:
对预处理后的整图调用一次 Tesseract,配置为:
--psm 6 # 假设页面为统一的文本块
-tessedit_char_whitelist=0123456789 # 只识别数字
根据每个识别结果的中心坐标 (cx, cy),通过公式:
col = cx // (width / N)
row = cy // (height / N)
idx = row * N + col
将数字映射到对应的格子。若同一格子出现多个结果,保留置信度最高的。
对于整图 OCR 未识别到、置信度不足或产生重复数字的格子,单独裁剪出小图,使用 ThreadPoolExecutor 并行调用 Tesseract 再次识别。
单格 OCR 配置为:
--psm 10 # 把输入当作单个字符
-tessedit_char_whitelist=0123456789
并对单格放大 2 倍,提高小数字识别率。
若最终 N×N 个格子中出现重复数字,清除冲突格子并重新并行识别,直到每个数字 1~N 只出现一次。
将识别到的 Cell 按 number 升序排序,使用 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.02 或 0.05。
Q: 识别结果不对?
A: 确保框选区域准确覆盖 N×N 方格,且数字清晰、无明显反光或遮挡。
本工具按“原样”提供,作者不对因使用本工具造成的任何损失、账号处罚或法律纠纷负责。请遵守相关平台规则,合理合法使用。
