摘要

游戏的法术书页面里,每个法术图标旁有三类小角标,各画在一个小圆圈里:图标上方的数字、一个罗马数字、右下角的数字。读取器(项目里把截图中某一类信息读成结构化字段的程序)要先找到小圆圈,再对圈里的内容做 OCR(光学字符识别)或字形比对。上一轮(B077)在 4 张“稳定”评估书页上读对 125/141 个角标,剩下 16 个全部是“没找到圆圈”(NO_CIRCLE)。

检查发现,多数失败并不是圆圈不存在,而是程序预先估计的“圆圈大概在哪”(搜索提示)偏了超过 12 像素,导致找到的圆圈被拒。本实验用同一页上已经找到的多个圆圈估计整页的共同偏移,只对原先 NO_CIRCLE 的字段修正搜索位置,然后仍要求从当前像素真正找到圆圈。结果:稳定评估书页 125/141 → 139/141(98.58%),本批无接受错值。新功能默认关闭,只在显式的 Perception 工具中启用;新增分支的耗时没有测。

要回答的问题

  • 当前书页的角标失败,是因为圆圈不存在,还是因为搜索位置偏了?
  • 只用当前页自身的几何信息(不用标签、不用文字身份、不用历史截图)修正位置,能找回多少字段,会不会引入错值?

数据与来源

  • 沿用 B076 已有的精细标注和分母,评分方式不改。
  • 先用 4 个训练来源组的 8 张原图开发;参数冻结后,再测另外 3 个“历史已曝光”组的 6 张原图。所谓“已曝光”,是指这些图以前被开发者看过,所以这不是盲测。
  • 书页分“稳定页”(翻页动画已结束)和“过渡页”(正在翻页、画面变形)。编号 17–22 的数据未打开。
  • 标签、稳定标记和参考位置都不进入推理,只用于评分。

方法

  1. 收集支持点:在当前页上,已经检测到的小圆圈与对应图标给出的搜索提示之间有一个差值。取这些差值的中位数作为共同偏移,与中位数相差 5 像素以内的算“内点”。
  2. 支持门槛:至少 6 个内点且占比 ≥60%,来自至少 3 个图标、2 种位置类型;内点在画面上的跨度 x ≥200 像素、y ≥150 像素;偏移量本身 ≤12 像素。支持不足或者差值分裂成几团时,保留原失败,不拿一个固定平移去硬填。
  3. 只重试原 NO_CIRCLE 字段:用修正后的提示重新搜索。新圆圈必须真的从当前图检测到,且残差 ≤8 像素、半径与本页中位半径相差 ≤6 像素,不能占用已经分配给别的字段的圆圈。
  4. 读取不变:新圆圈进入原有的 OCR / 字形读取门槛;字形模型和所有读取阈值保持 B077。原搜索证据、支持圆圈、修正提示和新圆圈都随字段保存,便于回看。
  5. 不从规则、相邻截图或身份候选填数字。

设置

  • 新路径默认关闭(False),只在显式的完整截图工具中通过参数启用;不改 App、公共接口或其他模块。
  • 运行时机器上另有一个授权任务在跑核心模块的完整测试,因此两次运行都用“只测质量”模式,没有测整图时延。

结果

范围 旧版正确/可见 新版正确/可见 未知 缺槽字段 接受错值
训练 8 页 217/234 229/234(97.86%) 5 0 0
训练稳定 6 页 174/183 182/183(99.45%) 1 0 0
评估 6 页 151/189 165/189(87.30%) 18 6 0
评估稳定 4 页 125/141 139/141(98.58%) 2 0 0
评估过渡 2 页 26/48 26/48(54.17%) 16 6 0

稳定评估按位置:上方数字 47/47,罗马数字 46/47,右下数字 46/47。

  • 共 27 个新增圆圈进入读取:26 个读对、1 个未知。评估中的 15 个新圆圈逐个看过裁剪图,其中 14 个接受值与精标一致。
  • 原 46 个 NO_CIRCLE 的去向:27 个找到新圆圈,5 个重试后仍无圆圈,2 个超出本页支持范围,12 个当前圆圈之间不一致。最后这 12 个都在明显的翻页图上,程序没有强行套用共同偏移;该图原来 10 个可读字段保持不变。
  • 负例:训练 102 个、评估 51 个“无字面”控制位置没有误接受;翻页图的 12 个控制仍未判;6 个未匹配到槽位的观察没有被接受。

失败与负结果

  • 稳定评估还剩两个:一处罗马数字 I 的圆圈裁剪仍读不出;另一处右下数字 4 没有通过定位支持检查。保留失败,没有用评估答案调参。
  • 过渡页没有任何改善(26/48)。
  • 新增的 OCR 请求改变了批量大小,导致 28 个旧字段的 44 个原始 OCR 分数发生小幅变化,最大绝对差 0.001043。文字、取值和决定都没变;实际分数如实保存,没有用历史分数替换或舍入来伪造“完全相等”。

局限

  • 这是有限、已曝光书页上的回归,不是全界面、完整魔法书或十场独立对局的验收。
  • 印刷名称、资源及其他整页字段不在这三类角标的分母里;页面中央另有 3 个数字尚未实现。
  • 新增分支的时延没有测;上一轮 1.340 秒的整图 p95 不能代替。
  • 13 个新增 / 369 个相关软件测试通过,13 张旧完整截图的默认输出除计时外不变。软件测试只说明程序行为符合设计,不等于识别准确率。

结论与下一步

“同页多圆圈共同偏移”有效找回了稳定书页上大部分漏掉的角标,且没有引入错值,作为默认关闭的有限功能保留。不再把“恢复每一张翻页图”作为近期目标。下一步回到稳定完整截图中的英雄、技能、装备、兵种身份和整页缺项:已从旧输出清点出 748 项尚未人工审核的接受结果(英雄头像 189、主技能 219、兵种 233、装备 107),这只是待审库存,不是新增标签或精度;准备了每类 4 个、共 16 个平衡的训练候选作为审核入口。