摘要

在游戏的战斗画面里,玩家点开一个生物(兵种)时会弹出生物面板,最上方是生物名称和数量(形如“当前/最大”,如 7/15)。之前的读取器在固定位置裁一个框再做文字识别(OCR),框稍微偏了就会截断文字、漏字,甚至把背景里的数字拼进来。

本实验(内部编号 B056)换一种做法:先用已有的 OCR 模型的“文字检测”部分找到实际文字行的位置,再按训练图上确定的位置关系挑出唯一的标题和数量行,在这个新框上重读。结果:标题漏字被补回,两处错误的数量被改成“未知”;但一个原本读对的 7/15 被新门槛拒掉了。因此只保留为显式开关 --detected-creature-fields,不改默认。

要回答的问题

用“检测到的文字行”代替“固定裁框”来读生物标题和数量,能否在不引入新错误的前提下,补回固定框漏掉的字?

数据与来源

  • 全部是已有的原生分辨率截图(2560×1440),来自项目已标注过的几组:训练 165 张、校准 45 张、最新组 71 张,再加上前一实验(B055)补充的 45 张训练邻近图,共 326 张。
  • 参考答案沿用之前的标注范围:训练组 77 页 934 个字段、校准组 24 页 280 个字段、最新组 27 页 363 个字段。另有更完整的局部参考(包括低质量面板和不存在面板的位置)单独计分。
  • 最新组和训练组都来自已经曝光过的录像,不是独立盲测。

方法

  1. 仍要求原有的整图检测器先认出“这里有生物面板”;本实验不修复漏检面板。
  2. 在生物面板上半区(一个宽搜索区域,不是测量出来的文字框)运行已缓存的 PP-OCRv6 检测+识别,保留每一行的文字、分数和框。
  3. 按训练图上确定的几何关系,在登记的标题区或数量区里选唯一的一行。
  4. 接受条件:检测分数 ≥ 0.90;在检测框外扩 2 像素后再读两遍,两遍分数都 ≥ 0.90;三次读取完整解析后完全一致。数量必须是完整的“当前/最大”一对,只读到当前值不够。
  5. 不拆开合并在一起的属性行,不按目录补字,不用前后帧补全。所有旧原文和旧值都保留,新框另外附上。

注意:三次读取来自同一个模型,只算一个证据来源;分数是模型分数,不是概率。规则在训练图上冻结后才跑校准组和最新组,最新组只跑一次。

设置

完整重跑 326 张原图,与上一版本(B054)逐字段比较,并深度比较所有非目标字段是否保持不变。时延包含文件解码、界面判断、进程通信、所有 OCR 和 JSON,不含 App 截图和显示。

结果

原有参考范围(分母不变):

来源 旧版正确/分母 新版正确/分母 误读 拒判 声明字段整页全对
训练 77 页 926/934 927/934 0 5 70/77(原 69/77)
校准 24 页 276/280 280/280 0 0 24/24(原 20/24)
最新 27 页 357/363 356/363 0(原 1) 7(原 5) 22/27(原 23/27)

最新组生物标题 16/16;数量 14/16(原 15/16)。英雄的士气、幸运小数字没有改善(9/11、8/11)。

补充参考:一组过渡面板的 32 个可判字段从 30 对 1 错 1 拒,变为 31 对 0 错 1 拒(“太阳圣盾”原来漏的“圣”字补回)。

整图回归:326 张图里,界面判断、身份、原始日志完全保持;3,715 个非目标字段逐项不变。共 12 处值变化:9 处恢复或纠正、2 处误读改为拒判、1 处正确改为拒判。12 处都看过原图。

时延(热状态 p95,即 95% 的图在此时间内完成):训练 1.218 秒、校准 1.147 秒、最新 1.178 秒。最新组冷启动界面加载 2.965 秒、OCR 5.322 秒。

失败与负结果

  • 清晰正确值被误拒:一个清楚的 7/15,新框重读分数 0.865,低于冻结门槛,原来正确的值变成未知。这是真实回归。发现后没有在最新组上调阈值或裁框追分。
  • 最新组里 5 处把 95/95 读错的情况改为未知——这是拒绝了错误,不是恢复了正确值。
  • 训练图里背景数字被拼进来的错误仍在:32→432、17→9517、1→71。
  • 全模块测试 7,214 通过、2 个既有导入顺序测试失败(与上一版相同)、6 跳过,测试并非全绿,失败记录保留。

局限

  • 只支持原生 2560×1440,其他缩放未验证。
  • 最新组 98.07% 只是 363 个已标字段上的结果,不等于项目“每字段 ≥95%”的目标已达成,也不代表全图覆盖。
  • 同一来源组的不同图有重复像素,不能当作更多独立来源。
  • 未接入 Battle Notes App,不向状态估计或模拟器发送数据。

结论与下一步

先检测文字行能修好标题定位,但更严格的数量复读会损失清晰读数。下一步在训练来源上处理小字可读性和背景数字混入,先证明能“保留清晰正确值、同时拒绝截断值”,再考虑组合进默认流程;不针对最新组的 7/15 降低门槛,也不按数字大小粗暴删除 432 这类不合理值。