基于屏幕 OCR + 本地词典 + 智能匹配的镜像词汇 PK 答题助手。
一键截图识别、毫秒级查词匹配、自动点击正确答案。
- 屏幕区域选择 — 拖拽式 GUI 框选英文单词区和 4 个选项区,一次配置永久生效
- 一键 OCR 识别 — 按下全局热键(默认 F1),自动截图并识别单词与选项
- 本地词典查询 — 内置 ECDICT 星火词库(
stardict.db),离线毫秒级查词 - 智能模糊匹配 — rapidfuzz 算法将词典释义与选项文本进行相似度匹配,选出最佳答案
- 自动点击 / 高亮 — 自动点击正确答案,或仅显示绿色高亮框(可切换)
- 系统托盘驻留 — 最小化到系统托盘,右键菜单支持重新选择 ROI、切换自动点击、显示调试线框
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10 / 11(WinOCR 引擎依赖) |
| Python | 3.10 或更高 |
| 屏幕分辨率 | 任意,已适配 125%/150% 高 DPI 缩放 |
| 词典文件 | stardict.db(ECDICT 格式,需自行下载放置于项目根目录) |
注意:本项目仅支持 Windows。macOS / Linux 用户可尝试启动,但 OCR 引擎会回退到 PaddleOCR(需额外安装模型)。
# 1. 克隆仓库
git clone https://github.com/SRInternet/word-pk-machine.git
cd word-pk-machine
# 2. 创建虚拟环境
python -m venv venv
venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 放置词典数据库
# 将 stardict.db(ECDICT 格式)复制到项目根目录python main.py程序启动后会自动弹出 ROI 区域选择器,请依次拖拽框选:
- 英文单词区 — 屏幕上显示英文单词的矩形区域
- 选项 1 ~ 4 — 四个中文选项的矩形区域
按 Esc 或点击「保存并退出」完成配置。配置保存在 config.json 中。
- 按 F1(全局热键,无论焦点在哪个窗口)执行一次识别
- 双击系统托盘图标 同样触发识别
- 识别结果会以绿色高亮框显示在正确答案上
- 默认自动点击正确答案(可在托盘菜单中关闭)
| 菜单项 | 功能 |
|---|---|
| ▶ 立即执行一次 | 手动触发一次识别 |
| 🎯 重新选择 ROI | 重新框选识别区域 |
| 🔁 切换自动点击 | 开启/关闭自动点击(勾选 = 已开启) |
| 🟩 显示识别线框 | 开启/关闭每次识别后的调试线框 |
| ❌ 退出 | 退出程序 |
python main.py --select-roi # 仅启动 ROI 选择器
python main.py --dry-run # 仅预览模式,识别但不自动点击python build.py构建产物位于 dist/WordPKMachine/,包含:
WordPKMachine.exe— 主程序stardict.db— 词典数据库(外置,可替换)config.json— 配置文件(首次运行后自动生成)
Word-PK-Machine/
├── main.py # 主入口,热键 + 托盘 + 流水线调度
├── build.py # PyInstaller 打包脚本
├── requirements.txt # Python 依赖
├── config.json # 用户配置(ROI 坐标、热键等,不入库)
├── stardict.db # ECDICT 词典数据库(外置)
├── favicon.ico # 应用图标
│
├── core/
│ ├── capture.py # mss 屏幕截图
│ ├── ocr_engine.py # WinOCR + PaddleOCR 双引擎 + 图像预处理
│ ├── dictionary.py # SQLite 词典查询 + 模糊纠错
│ └── matcher.py # rapidfuzz 选项匹配
│
├── ui/
│ ├── selector_gui.py # ROI 区域选择器(全屏拖拽)
│ └── overlay_gui.py # 答案高亮覆盖层 + 调试线框
│
└── img/
├── img1.png # 使用场景截图
└── img2.png # 识别结果高亮截图
| 组件 | 技术 |
|---|---|
| 屏幕截图 | mss |
| OCR 引擎 | Windows Native OCR (WinOCR) / PaddleOCR |
| 词典查询 | SQLite (ECDICT) |
| 模糊匹配 | rapidfuzz |
| GUI 框架 | PyQt6 |
| 自动点击 | pyautogui |
| 全局热键 | Windows RegisterHotKey API (原生) |
本项目仅供 Python 图像识别(OCR)、算法匹配及自动化技术的学术交流与个人学习使用。
请勿将本项目用于任何正式比赛、商业用途或破坏平台公平性的行为。
使用者因违规操作导致的账号封禁等后果由使用者自行承担,与本项目开发者无关。
详细免责条款见 DISCLAIMER.md。
本项目所有操作 100% 在本地完成,不联网、不上传、不记录任何数据。
详见 SECURITY.md。
MIT License
SRInternet
📧 srinternet@qq.com
🔗 https://github.com/SRInternet/word-pk-machine

