提升 GameSentenceMiner OCR 识别准确率:自定义捕获区域与两遍识别系统配置实战

原创2026-10-24 16:08:571,002 阅读

提升 GameSentenceMiner OCR 识别准确率:自定义捕获区域与两遍识别系统配置实战

想让 GameSentenceMiner 在游戏里更准地挖出句子?核心就两件事:为游戏对话框划定自定义 OCR 捕获区域,并把**两遍识别系统(Two-pass OCR)**调对。这篇文章面向新手,用尽量少的时间帮你把识别准确率、速度和去重噪声一次性调到位。

为什么识别率总差一口气?

游戏字幕的 OCR 失败大多来自三个原因:

  1. 扫描范围太宽——整窗口扫描会把 UI 图标、背景噪点当成文字;
  2. 文字还在“打字机”式出现——第一遍识别抢跑了半成品文本;
  3. 引擎选择不当——稳定监视和最终识别用了同一个慢引擎,或者干脆没开两遍流程。

GameSentenceMiner 的 OCR 管线正是为这三个问题设计的:按区域裁剪 → 稳定性引擎先盯住文本 → 主引擎二次精扫。

GameSentenceMiner 游戏画面捕获示例:底部日文对话框是典型的双行 OCR 识别区域

第一步:确认捕获源正确

画区域之前,先确认 GSM 抓到的画面本身是对的。Text Capture Wizard 会检查你的游戏源(Scene / Executable / Capture Type):

Text Capture Wizard 捕获向导:确认 GameSentenceMiner 的 OBS 游戏源与捕获类型设置

  • 预览发黑?尝试 “Switch to Game Capture” 切换捕获类型;
  • 每个 OBS Scene 拥有独立的区域文件与振假名灵敏度,不同游戏互不干扰;
  • 界面里 “Areas Recommended” 提示表示尚未画区域,整窗扫描——这正是识别率损失的常见起点。

第二步:绘制自定义 OCR 捕获区域

在 OCR 标签页点击 Select OCR Areas,会弹出区域选择器(Area Selector):

GameSentenceMiner OCR Area Selector 捕获区域选择器:在画面上框选对话区域并实时保存

工具栏按钮对应快捷键,鼠标/键盘都能完整操作:

区域类型 用途 说明
Normal(绿色区域) 自动 OCR 持续扫描的游戏对话区
Exclusion 排除区 覆盖不想识别的区域
Secondary(紫色区域) 菜单 OCR 供菜单快捷键触发的区域
Black Hole 黑洞区 屏蔽特定干扰

几个提升准确率的实用技巧:

  • 只框对话框内部,避开角色立绘与按钮,识别噪声会明显下降;
  • 选择器支持 Live 模式热重载:拖动区域后 300ms 防抖即生效(见 owocr_area_selector_qt.py 中的 LIVE_SAVE_DEBOUNCE_MS),不用关闭选择器就能观察 OCR 反应;
  • 支持导入/导出区域 JSON,换游戏分辨率后可快速复用布局;
  • 多区域场景可开启实验性 Compact OCR Areas,把多个区域打包去掉透明空隙,再自动映射回原坐标。

常用快捷键(均可在 Hotkeys 面板修改):

动作 默认快捷键 作用
Manual(绿区) Ctrl+Shift+M 手动跑一次主引擎精扫
Menu(紫区) Ctrl+Shift+G 扫描菜单区域
Area Select Ctrl+Shift+O 临时框选一次识别
Add Area Alt+Shift+N 新增一个区域并立即应用
Whole Window Ctrl+Shift+W 全窗口一次性扫描
Pause Ctrl+Shift+P 全局暂停扫描(过剧情动画时用)

第三步:理解两遍识别系统(Two-pass OCR)

两遍识别是默认开启的,这是识别率的关键开关(twoPassOCR 默认 True,见 electron_config.py 中的 get_ocr_two_pass_ocr)。工作流如下:

  1. **OCR1(稳定性引擎)**按扫描频率持续运行——用快引擎(如 OneOCR)盯住文本是否在变化;
  2. 当下一帧扫描发现文本稳定不再变化(或文字消失、出现新句子)时,触发第二遍;
  3. **OCR2(主引擎)**对裁剪后的图像做一次高精度识别,结果才是最终输出(终端里绿色高亮的 “OCR Run 2” 日志)。

触发与去重由一组比较阈值控制,全部位于 gsm_ocr.py:

  • Duplicate Match Threshold(%):越高越严格;不同句子被误判为重复时调高;
  • Text Change Threshold(%):越低越容易提前触发 OCR2;逐字动画文本可降低;
  • Text Comparison Tuning(专家项):Evolving Prefix、Truncation、Subset Coverage 等旋钮专门处理“短句是长句开头”“文字被截断”这类边界情况。

两个关键辅助开关

  • Optimize Second Scan:第二遍扫描前把图像裁剪到文本包围盒,显著提速。若某些游戏的特殊文本被裁掉,可关闭它;
  • Text Appears Instantly:⚠️ 仅当游戏文本一次性整句出现时才开启。打字机式/逐字动画文本开启它会导致输出非常混乱——这是新手最常见的“越调越差”来源。

进阶调优清单

GameSentenceMiner Overlay Settings 的 OCR / Capture 捕获设置面板:引擎选择、显示器与捕获区域配置

按“先大后小”的顺序尝试:

  1. Scan Image Quality(缩放比例):漏掉小字号假名/汉字时调高(50% 快 → 100% 最准但最耗 CPU);
  2. Furigana Filter:过滤比正文小的字符;真实对话被吃掉时调低或归零,可用 Preview 窗口对着当前游戏选灵敏度;
  3. Scan Rate:快文本选 Fast/Normal,慢速渐显文本选 Slow;
  4. OBS Capture Preprocess:灰度 + 自动对比 + 锐化,能改善噪点场景里的字幕识别;
  5. Ignore “OCR Run 1” Logs:两遍识别下控制台第一遍日志是噪声,勾选后界面只留绿色的 Run 2 结果;
  6. 仍有个别词总识别错?用 OCR Replacement 规则页做识别后替换修正。

相关源码与文档

小结

🎯 记住这套组合拳:框对话框 → 绿区 Normal + 紫区 Secondary → 保持两遍识别开启 → 逐字动画文本绝不开 Instantly。按这个顺序调整,绝大多数视觉小说和 RPG 的识别准确率都能稳定提升到可用水平。

登录后查看全文
GameSentenceMiner