摘要
在游戏战斗中,鼠标悬停在可攻击的敌人上时会出现“攻击预览”:两行数字,一行是预计击杀数,一行是伤害(可能是一个数,也可能是 414-553 这样的范围)。OCR 有时会把范围中间那条细横线漏掉,把 414-553 读成 414553。为此项目早先加了一个“横线补救”:在原生像素上找数字之间的细横桥,找到就把文字拆成范围。
上一轮扩充数据时发现一个反例:伤害 449,整图 OCR 和行 OCR 都读对了,补救却把两个 4 之间的字形/背景连接当成横线,输出了 4-49。本实验(内部编号 B114)给补救加了一条保守的形态条件,并在全部已有数据上回归。
要回答的问题
能否只拒绝这种“假横线”,同时保留以前恢复的两个真实横线,且不改变任何其他输出?
数据与来源
- 新批:3 个来源的 28 张图(24 个预览);旧批:2 个来源的 30 张图(31 个预览)。共 58 张,来自 5 个已曝光的训练来源组,有重复出现,不是 58 场独立战斗。
- 历史回放:早先实验(B083)两批 211 张图里的 382 个原生数字行,保留其 193 个参考的历史分母。
- 留出来源没有打开。
方法
观察原生二值像素:
449的“桥”是凹形(U 形),三行里只有一行贯穿整个宽度。- 两个真实横线(
414-553和366-475)都有一个平直的核心,三行里有两行完整贯穿。
新条件:候选细桥中至少一半的行完整贯穿其宽度。单像素宽的平直横线仍然允许。不满足时不拆数字,保留原 OCR 结果——这不代表原 OCR 一定正确。原有的几何检查和端点数字拼回检查全部保留。
这个条件是根据已曝光训练样本里的失败选出来的,是有边界的补救拒绝策略,不是通用的横线分类器;不使用 449 这个数值、数字长度、伤害规则、目标身份或邻帧答案。
设置
58 张图重新走完整的文件读取入口(实际模型、常驻 OCR、保存);B083 的 382 行复用原定位和原 OCR,只重跑横线复核和端点 OCR(这是后处理回放,不是 211 次完整读取)。用已有的整图参考评分,任何数值退步都否决采用。
结果
| 已曝光整图回归 | 基线 | 本轮完整文件读取 |
|---|---|---|
| 新批 24 预览,两行文字完整 | 23/24 | 24/24 |
| 新批固定值 / 范围值 | 11/12、12/12 | 12/12、12/12 |
| 新批目标候选正确 / 未关联 | 20 / 4 | 20 / 4 |
| 新批 位置+两行+目标候选都对 | 19/24 | 20/24 |
| 旧批 31 预览,两行文字完整 | 27/31 | 27/31 |
| 旧批 漏检 / 错值 | 2 / 2 | 2 / 2 |
58 张图中唯一的文字变化就是 3 / 4-49 恢复为 3 / 449;所有预览位置、目标候选和非预览字段保持,没有额外预览、重复输出或读取失败。
历史回放:382 行与冻结结果字面完全一致,73 区域 70 正确、120 区域 119 正确,合计仍 189/193;固定值 140/140、范围 49/53,两个旧的横线恢复都保留。
105 项聚焦测试通过,其中真实 449 用例从“预期失败”改为正常回归,并新增 1/2/3 像素平直笔画和位移后弯曲连接的检查。
失败与负结果
- 新批仍有 4 个攻击目标未关联:2 个身体分数低于当前门槛、1 个大型身体几何不适配、1 个重复身体竞争。
- 旧批 2 个范围错值、2 个淡入漏检保持不变。
- 翻书动画的自动跳过仍未验收。
局限
全部来自 5 个已曝光训练组,没有新独立对局或盲测成绩;没有测 p95 时延、App 链路或全套测试。新条件只影响已显式启用的预览补救路径,默认 App 未接线。
结论与下一步
一条简单的形态条件就修好了假横线,且所有已知真横线和历史成绩不变。下一步先验证能否借助数量牌有界地恢复两个低分身体而不增加错误绑定,而不是降低全局门槛;之后转向说明文字、行动者、时钟、集能、技能冷却等覆盖,不再围绕已修好的 449 调参。
Comments