摘要
游戏的战斗画面可以打开一个 Logs 战斗日志面板,里面每行是一条带 [时:分:秒] 前缀的记录,例如“某生物造成了多少伤害”“某英雄施放了某法术”“某单位获得了某效果,持续时间 7”。这些文字是推断对手构筑最直接的证据之一。本实验只做单帧范围:判断日志面板是否打开、框出每一行、读出原文、用严格句式解析成结构化候选。不做跨帧合并成“事件”,也不把日志当成已确认的行动。
结果:44 张候选帧(7 段录像)整理出 393 个行框,其中 328 条两路 OCR 完全一致;简单的面板开/关分类器在按录像隔离的 15 张留出图上准确率 86.67%。后续“效果日志”试验中,35 条效果记录有 33 条完整解析正确、2 条拒识、0 条错误接受。
要回答的问题
- 能否从已有截图中快速找到适合 OCR 的日志帧和日志行?
- 一个很简单的外观分类器,能否大致分辨日志面板开/关,用来筛候选?
- 新增的“获得效果 + 持续时间”句式,能否被固定 OCR 和严格解析器正确读出,同时不把能力说明文字误当成日志事件?
数据与来源
- 已有全图 OCR 缓存中整理出 44 张候选帧,来自 7 段用户录像:20 张“日志打开”(单帧至少找到三条带合法时间戳的行)、24 张“日志关闭”(场景是战场且找不到日志行)。
- 20 张打开帧共 393 个逐行框。一行只有在两路 OCR 规范化后完全一致且置信度都 ≥0.85 时,才进入“干净候选”(328 条);其余 65 条留作难例。
- 效果日志试验:从 513 张图的 OCR 索引中检索“持续时间”,命中 35 张,查看 10 张后选定 9 张图、36 个文字框,来自 6 个录像;其中 8 张图共 35 条效果日志,1 张是生物能力说明(作为反例)。逐行由助手目视转录,待用户验收。
这些“干净”行仍是待验收的 OCR 候选,不等于人工真值。
方法
日志行。 逐行保留原图坐标框、两路 OCR 原始尝试、候选原文、录像实际时间。解析器只认明确支持的字面句式,不修字、不按游戏规则补字。相同文字在不同帧里始终是不同观察,不合并成同一事件。
面板开/关分类器。 取固定中央区域(归一化 [0.22, 0.10, 0.78, 0.65]),缩到 96×64,计算灰度 HOG(方向梯度直方图,描述边缘形状)和 HSV 颜色直方图,用 Extra Trees(一种随机森林)分类。按完整录像切分,最新三个录像全部留出。
效果句式。 新增私有解析类型 effect_gained:主体显示名、效果显示名、日志记载的时长。原文没写“回合”就不补单位;日志可能一直停在屏幕上,所以“当前还剩几回合”保持未知。
设置
| 集合 | 日志打开 | 日志关闭 | 合计 |
|---|---|---|---|
| 训练 | 14 | 15 | 29 |
| 按录像隔离的留出 | 6 | 9 | 15 |
效果日志评估用固定的已选 OCR 读数回放,不重新运行 OCR,也没有经过生产解析器的“多路一致”门禁。
结果
严格解析出的干净行类型(逐帧可见文字,不是独立行动数):
| 类型 | 行数 |
|---|---|
| 伤害 damage | 83 |
| 等待 wait | 61 |
| 失去魔力 mana_loss | 46 |
| 施法 spell_cast | 32 |
| 恢复魔力 mana_restored | 31 |
| 使用能力 ability_used | 11 |
| 攻击 attack | 4 |
| 召唤 summoned | 4 |
| 被摧毁 destroyed | 1 |
助手检查了全部 44 张面板联系表,开/关标签未见错标;抽查 40 条干净行全部落在单条可读日志行上。这验证的是框和分组,不是 328 条中文原文的逐字人工校对。
面板分类器(留出 15 张): 混淆矩阵(行为真值开/关)[[5, 1], [1, 8]],准确率 86.67%,macro-F1 86.11%。两个误例都核对过标签正确:一张是透明日志覆盖的打开帧,一张是深色生物详情弹窗的关闭帧。
效果日志(开发回放):
| 项目 | 结果 |
|---|---|
| 效果日志完整结构化正确 | 33/35 |
| 拒识(时间戳括号缺失) | 2/35 |
| 错误接受 | 0/35 |
| 能力说明反例未被当成效果事件 | 1/1 |
| 含反例的整行文字精确读回 | 34/36 |
覆盖的效果包括阿丽娜之触、注能盔甲、寒冬循环、寒霜刺骨、英勇长啸、多里斯之潮。同一次施法影响多个单位时各行保留,所以 35 行不是 35 次独立事件。
兼容性检查:对旧字段实验的输入重跑,原有 31 条九类解析结果逐字段不变;新增支持 13 条上游一致的效果句式,61 条冲突日志和 1 条非日志仍不进入声明。
失败与负结果
- 两条拒识:原图里有括号,选中的 OCR 读数丢了括号,解析器按设计不自动修补。
- 简单分类器会把透明日志和深色弹窗弄混,只能筛候选,不能替代逐行证据。
- 能力说明里明确写着“持续时间:2回合。”,但没有时间戳和“获得效果”句式,只能当说明文本,不能据此认定单位获得了效果。
局限
- 15 张留出图很小,86.67% 只用于确认方向,不是生产性能。
- 效果日志是“先用 OCR 检索再选图”的开发回放,不是独立测试;不是 ≥95% 准确率目标的证据。
- “日志关闭”只表示没找到合格日志行,不证明面板不存在。
- 没有滚动对应、跨帧去重、事件 ID 或行动完整率;稀疏采样的行数不能当整场分母。
- 括号里数字的含义、单位归属仍未知。
结论与下一步
单帧日志的找行、读原文、严格解析已经可用于后续工作,并且在开发数据上没有错误接受。用户验收前不继续调参。下一步应补滚动、部分遮挡、重复文字、效果解除和缺括号难例,并按来源分隔保留少量未见录像验收;跨帧的事件合并留给后续时序实验。
Comments