摘要

截图路由器(router,把一张截图分给各个读取器的程序)在训练池 212 张生物面板画面中,有 7 张的面板任务结果是“未检测到”。本实验(编号 B174)逐张诊断:7 张都是因为定位规则要求的两个“锚点”没读全——“数量”格里要恰好有一个 N/M 形式的分数,下一行“生命”格里也要恰好有一个分数,任何一个缺了就放弃定位。

改动:在有确切兵种名、阶级和伤害范围的前提下,数量与生命两个位置里恰好一个有分数也允许定位。训练池找回 5 张(另 2 张被悬停说明盖住,仍不定位,这是对的),面板字段从 1,857 对增加到 1,902 对,错误仍是原来的 1 个。测试池上新规则一次也没触发,测试成绩不变。

要回答的问题

这 7 张面板为什么定位不到?能否在不增加错误、不误把其他画面当面板的前提下找回它们?

数据与来源

  • 训练池:名字带“训练”的截图包,共 78 包;7 张未定位的生物面板来自其中。
  • 测试池:626 帧,只在训练上确认没有新增错误后跑一次最终评估,不据此调整。
  • 另有 8 帧是“外观不确定被拒”,属于另一个实验,不在本次范围。

方法

诊断:对 7 帧跑路由器的整帧 OCR 和面板定位函数,查看表头决策与标题带的 OCR 行。

生物 数量格读到 生命格读到 原因
妖精巨龙 “生4品值” 61/75 悬停标签“生命值”压在数量上
寄生虫 185/185 未读出 整帧 OCR 漏了 7/7
大天使 4/7(分数 0.874,低于 0.9) 172/225 分数略低
神化者 “47” 258/300 斜杠没读出
骷髅战士 “203” 2/6 斜杠没读出,旁有“攻击力”悬停标签
虫巢之母 “7” “275” 能力悬停说明盖住属性行
米诺陶洛斯先锋 36/36 “40” 能力悬停说明盖住属性行,伤害也看不到

改动:原来的后备定位只接受“确切兵种名 + 阶级 + 合并的生命/攻击行 + 伤害范围”。现在没有合并行时,也接受“确切兵种名 + 阶级 + 数量与生命两处恰好一处有分数(任一处出现两个就放弃)+ 伤害格里有伤害范围”。锚点只提供位置,不提供数值:每个字段仍由格子里两种尺寸的读数决定,整帧 OCR 里不一致的读数仍然否决,读不出的保持未知。面板外观门槛不变。路由器、实时读取和单图读取共用这个函数。

设置

改动后重读全部 78 个训练包,与改动前的路由结果逐帧比较:生物面板场景的各字段对/错/漏,以及其他场景的主任务有没有被误定位成面板。

结果

训练池

指标 改动前 改动后
生物面板字段 对 / 错 / 漏 1,857 / 1 / 134 1,902 / 1 / 89
生物面板场景主任务读出 197/212 202/212
  • 面板任务只有 5 帧变化(诊断表前 5 帧从“未检测到”变为“读出”);其他画面没有一帧新定位出面板。
  • 新定位的 5 个面板中有 4 个带精审真值:名字、身份、阶级、生命、攻击、防御、士气、幸运、先攻、速度、伤害各 +4 对、0 错;数量只多对 1 个,其余仍未知(斜杠没读出时,格子里本来就读不出)。
  • 唯一的错误是原来就有的:数量 340/385 被读成 340/38。

测试池(626 帧,只跑一次):面板任务没有任何变化——新规则一次也没触发,没有新读出,也没有新错误。

失败与负结果

  • 2 张被能力悬停说明盖住属性行的面板仍然定位不到(这是期望的行为,不是失败)。
  • 这次改进在测试池上看不到任何收益。

局限

  • 收益只来自训练池的 5 帧,样本很小;真值来自助手精审。
  • 对照中其他场景的主任务变化来自更早的其他改动,与本实验无关。

结论与下一步

问题的根源是定位锚点过于严格,而非数值读取。放宽为“两个资源分数恰有其一”能在训练池上找回面板且不引入错误;但测试池上没有触发,说明这种情况比较少见,测试面板成绩维持不变。