屏幕截图 + OCR + 透明叠加层 · 零注入 · 零封号风险
🔒 安全声明(必读)
本工具仅读取屏幕像素,不注入游戏进程,不使用 DLL 注入,不修改任何游戏文件或内存。所有功能通过 Windows 标准 API(屏幕截图 + 透明叠加层)实现,完全遵守暴雪最终用户许可协议 (EULA)。
功能边界:本工具仅提供游戏内聊天消息的 OCR 识别、翻译和显示,不涉及任何自动化操作、作弊或 unfair advantage。
一个为《守望先锋》设计的聊天翻译工具,通过屏幕截图+OCR识别游戏内聊天消息,实时翻译为中文并显示在透明叠加层上,帮助玩家跨越语言障碍与全球队友沟通。
💡 TODO:请替换为实际截图或 GIF,展示以下场景:
- 游戏内英文/韩文聊天被识别并翻译为中文
- 透明叠加层显示翻译结果
- 英雄推荐面板
- 模板快速发送界面
- 自动识别聊天框中的 英文 和 韩文 消息
- 实时翻译为 中文 显示在叠加层上
- Timeline 对齐去重 - 基于消息顺序位置去重,避免 OCR 抖动导致的重复翻译
- 多帧共识 - 新消息需连续两帧一致才确认,提高准确率
- 韩语 Jamo 级相似度 - 专门处理韩语 OCR 抖动和空格缺失问题
- 像素差分巡逻 - 画面稳定时不跑 OCR,节省 70% CPU
- 文字存在检测门 - 快速边缘检测判断是否有文字
- 突发 OCR 模式 - 检测到聊天变化后进入高频捕获,结束后自动降频
- 根据队友已选英雄推荐最适合的阵容搭配
- 分析阵容完整性(重装/输出/支援数量)
- 基于英雄协同关系给出推荐(如 法老之鹰+天使)
- 支持克制关系分析
- 预设模板快速发送 - GG、感谢、需要治疗、集合等一键发送
- 颜色代码支持 -
<FGRRGGBBAA>格式的 OW 聊天颜色代码 - 渐变效果 - 可生成渐变色聊天文本
- 模板代码自动复制到剪贴板,游戏中直接粘贴
- 中文 → 英/韩/日 翻译
- 自动复制到剪贴板
- 支持 OW 颜色代码增强
- 历史消息滚动 - 鼠标滚轮查看历史翻译
- 鼠标穿透 - 点击穿透到游戏,不遮挡操作
- 拖动缩放 - 标题栏拖拽移动窗口
- 回话输入栏 - 底部快速输入并翻译
- 模板按钮 - 一键发送常用 OW 聊天模板
| 方面 | 本工具 | 作弊工具 |
|---|---|---|
| 游戏内存 | ❌ 不读取 | ✅ 读取/修改 |
| DLL 注入 | ❌ 不使用 | ✅ 使用 |
| 游戏文件 | ❌ 不修改 | ✅ 修改 |
| 自动化操作 | ❌ 不做 | ✅ 做 |
| 屏幕截图 | ✅ 仅截取画面 | — |
| 透明窗口 | ✅ 标准系统 API | — |
- 零注入:不读取游戏内存,不使用 DLL 注入
- 纯截图:仅使用 Windows API 截取屏幕画面
- 透明窗口:使用操作系统标准窗口 API 显示叠加层
- 不修改游戏:不修改任何游戏文件或数据
┌─────────────────────────────────────────────────────────┐
│ 守望先锋游戏画面 │
│ ┌─────────────────┐ │
│ │ 聊天框区域 │ ←── 智能捕获 ──→ OCR ──→ Timeline │
│ └─────────────────┘ │ 对齐 ──→ 翻译 │
│ ┌──────────────────────────────┐ │
│ │ 英雄选择界面 │ ←── 模板匹配/手动输入 │
│ └──────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│
┌──────▼──────┐
│ 透明叠加层 │ ←── 显示翻译 + 回话 + 模板
└─────────────┘
- Python 3.11+(推荐 3.11.9,已测试)
- Windows 10/11
- Tesseract-OCR(OCR 识别引擎)
# 克隆或下载项目
cd overwatch-assistant
# 创建虚拟环境(推荐)
python -m venv venv
venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 安装 Tesseract-OCR(必须)
# 下载地址: https://github.com/UB-Mannheim/tesseract/releases
# 下载 tesseract-ocr-w64-setup-5.5.0.20241217.exe
# 双击安装,默认路径即可| 包 | 用途 |
|---|---|
| Pillow | 图像处理 |
| numpy | 数值计算 |
| opencv-python | 图像识别 |
| pytesseract | OCR 接口 |
| easyocr | 备选 OCR 引擎(韩文更好) |
| translators | 翻译引擎 |
| keyboard | 全局热键 |
| pyperclip | 剪贴板操作 |
python main.py- 启动守望先锋,进入训练靶场或等待大厅
- 按 F11,拖拽选择聊天框区域
- 按 F10,开始聊天翻译
- 按 F9,显示/隐藏叠加层
- 进入英雄选择界面
- 按 F12 选择英雄选择区域(或手动输入阵容)
- 程序会自动分析队友阵容并显示推荐
- 在叠加层底部输入中文
- 选择目标语言(英/韩/日)
- 按回车发送,译文自动复制到剪贴板
- 游戏中按 Ctrl+V 粘贴
点击叠加层标题栏的 📝 按钮,选择预设模板:
- GG - 绿色 "GG WP!"
- 感谢 - 绿色 "Thanks! You're awesome!"
- 需要治疗 - 红色 "Need healing!"
- 集合 - 黄色 "Group up!"
- 大招好了 - 绿色 "My ULT is ready!"
- 推进 - 蓝色 "Push!"
- 集火 - 红色+黄色 "Focus fire!"
- 漂亮 - 绿色 "Nice! Great play!"
- 后退 - 红色 "Fall back!"
- 祝好运 - 绿色 "GL HF!"
模板自动转换为 OW 颜色代码并复制到剪贴板,游戏中直接粘贴即可。
| 热键 | 功能 |
|---|---|
F9 |
显示/隐藏叠加层 |
F10 |
开始/停止聊天翻译 |
F11 |
选择聊天框区域 |
F12 |
选择英雄选择区域 |
Ctrl+Shift+Q |
退出程序 |
编辑 config.py 调整以下设置:
# 翻译设置
target_language = "zh" # 目标语言
translation_engine = "bing" # 翻译引擎(国内可用)
# 叠加层设置
overlay_opacity = 0.85 # 透明度
overlay_position = (50, 50) # 窗口位置
message_ttl = 15.0 # 消息停留时间(秒)
# OCR设置
ocr_engine = "tesseract" # OCR引擎(tesseract/easyocr)
ocr_languages = ['en', 'ko'] # 识别语言
# 智能捕获
idle_interval = 2.0 # 空闲期检查间隔(秒)
burst_interval = 0.2 # 突发期 OCR 间隔(秒)overwatch-assistant/
├── main.py # 主程序入口
├── config.py # 配置文件 + 英雄数据
├── requirements.txt # 依赖列表
├── README.md # 本文件
├── core/ # 核心模块
│ ├── capture.py # 屏幕截图
│ ├── smart_capture.py # 智能捕获(像素差分+文字检测)
│ ├── ocr_engine.py # OCR文字识别
│ ├── translator.py # 翻译引擎
│ ├── timeline.py # Timeline对齐 + OW解析器 + 多帧共识
│ ├── korean_jamo.py # 韩语 Jamo 级相似度匹配
│ ├── overlay.py # 透明叠加层(滚动+穿透+回话+模板)
│ ├── hero_recommender.py # 英雄推荐系统
│ ├── hero_detector.py # 英雄检测
│ ├── glossary_service.py # 游戏术语表服务
│ ├── reply_assistant.py # 回话翻译 + OW颜色代码
│ └── chat_codes.py # OW 聊天代码生成器(参考 MapleOAO)
├── utils/ # 工具模块
│ └── region_selector.py # 区域选择器
├── assets/ # 资源文件
│ ├── heroes/ # 英雄头像模板
│ └── glossary.json # 游戏术语表(300+条)
└── .github/ # GitHub 配置
├── workflows/ # CI 工作流
├── ISSUE_TEMPLATE/ # Issue 模板
└── pull_request_template.md
| 阶段 | 功能 | 状态 |
|---|---|---|
| ✅ v1.0 | 实时聊天翻译 + 英雄推荐 | 已完成 |
| ✅ v2.0 | 智能捕获(像素差分 + Timeline对齐 + 多帧共识) | 已完成 |
| ✅ v2.1 | OW 聊天代码 + 预设模板 + 回话功能 | 已完成 |
| 🔄 v2.2 | 更多语言支持(日/俄/西) | 计划中 |
| ⏳ v3.0 | 语音播报翻译结果(TTS) | 计划中 |
| ⏳ v3.5 | 跨游戏支持(Valorant、Apex 等) | 计划中 |
本项目参考了以下开源项目的核心设计:
| 项目 | 技术栈 | 贡献 |
|---|---|---|
| reverieach/ow-translate-lite | C# .NET 9 + WPF | Timeline 对齐去重、像素差分巡逻、韩语 Jamo 匹配、多帧共识 |
| MapleOAO/overwatch-chat-editor | Next.js + React + TS | OW 聊天颜色代码格式 <FGRRGGBBAA>、纹理代码 <TXC...>、模板系统 |
A: 请确保:
- 正确选择了聊天框区域(F11)
- 聊天框文字清晰可见
- Tesseract-OCR 已正确安装
A:
- 降低截图频率:修改
idle_interval = 2.0 - 使用更快的翻译引擎
- 确保网络连接正常
A:
- 尝试以管理员身份运行程序
- 在游戏设置中使用"窗口化全屏"模式
- 右键点击叠加层选择"置顶"
A: 修改 config.py 中的 ocr_languages:
# 日文
ocr_languages = ['en', 'ko', 'ja']A: OW 颜色代码需要游戏支持。如果游戏中不支持,叠加层会显示纯文本版本。
- 本工具仅读取屏幕像素,不注入游戏进程
- 建议在非排位模式中先测试功能
- 叠加层窗口可能被某些全屏游戏覆盖,建议使用窗口化全屏模式
- OCR 识别率受分辨率、字体、背景影响,可能需要调整截图区域
- 集成 MapleOAO/overwatch-chat-editor 的 OW 聊天代码格式
- 添加预设模板快速发送功能(10 个常用模板)
- 回话功能支持 OW 颜色代码
- 修复 timeline 导入循环问题
- 集成 reverieach/ow-translate-lite 核心算法
- 添加 Timeline 对齐去重系统
- 添加像素差分巡逻 + 文字存在检测(节省 70% CPU)
- 添加韩语 Jamo 级相似度匹配
- 添加多帧共识机制
- 添加 OW 术语表(300+ 条)
- 添加回话功能(中文→英/韩/日)
- 叠加层支持历史滚动、鼠标穿透、回话栏
- 初始版本:实时聊天翻译 + 英雄推荐
MIT License
本工具仅供学习交流使用。请严格遵守暴雪最终用户许可协议 (EULA) 及《守望先锋》游戏规则。
本工具:
- ❌ 不读取游戏内存
- ❌ 不使用任何注入技术
- ❌ 不执行任何自动化游戏操作
- ❌ 不提供任何 unfair advantage
- ✅ 仅截取屏幕画面并通过 OCR 识别文字
- ✅ 仅提供翻译和显示功能
开发者不对因使用本工具导致的任何账号问题负责。 使用本工具即表示您已阅读并理解上述声明。如有疑虑,请勿使用。