Skip to content

Repository files navigation

Word PK Machine · 单词答疑助手

Python Platform License

基于屏幕 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. 英文单词区 — 屏幕上显示英文单词的矩形区域
  2. 选项 1 ~ 4 — 四个中文选项的矩形区域

Esc 或点击「保存并退出」完成配置。配置保存在 config.json 中。

日常使用

  • F1(全局热键,无论焦点在哪个窗口)执行一次识别
  • 双击系统托盘图标 同样触发识别
  • 识别结果会以绿色高亮框显示在正确答案上
  • 默认自动点击正确答案(可在托盘菜单中关闭)

托盘菜单

菜单项 功能
▶ 立即执行一次 手动触发一次识别
🎯 重新选择 ROI 重新框选识别区域
🔁 切换自动点击 开启/关闭自动点击(勾选 = 已开启)
🟩 显示识别线框 开启/关闭每次识别后的调试线框
❌ 退出 退出程序

命令行参数

python main.py --select-roi    # 仅启动 ROI 选择器
python main.py --dry-run       # 仅预览模式,识别但不自动点击

打包为 EXE

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

About

A vocabulary quiz assistant powered by screen OCR, local dictionary, and intelligent matching.

Resources

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages