摘要

右键查看对方的生物时,面板上的士气、幸运、先攻和速度是推断对方英雄技能和装备的直接证据:例如幸运比基础值高 1,往往意味着对方有某个加幸运的技能或宝物。这四个字段都是单个、可能带负号的小数字。

截图路由器(把一张截图分配给各个读取器的程序)上一版在测试局里,幸运只读对 15/25,另外 10 个全是“两遍 OCR 都读对了、但分数低于 0.90”被拒。本实验只在训练局上设计了两个补充手段:对这四格放宽到“两遍一致且分数 ≥0.75”,以及基于训练局的白色字形原型匹配。冻结后在测试局只运行一次:四个字段都是 25/25,没有错误。改动已接入生产路由器。

要回答的问题

不放宽其它字段、不接受“只读一遍”的前提下,能否让这四个小数字从“读对却被拒”变成“接受且正确”,同时不引入错误?

数据与来源

  • 24 局截图包中的生物面板帧,使用助手精审的字面标注(不是独立人工真值)。
  • 沿用既有划分:训练 15 局,测试 9 局(开发验证用途)。冻结的留出数据没有打开。
  • 读数格位置来自上一版路由器保存的结果。
  • 坦白一点:调查上一版失败原因时,曾看过测试局 5 个幸运格的原始读数;规则和门槛只按训练局选择。

方法

  1. 较低一致门槛。 只对这四格:两种尺寸的读数一致、可解析、分数 ≥0.75 才接受;如果整帧 OCR 读出了不同的值,就否决。训练局原来被拒的 4 个用这条规则后全部是对的。
  2. 字形原型。 取白色、低饱和的像素(排除金色图标)作为笔画,按连通区域切成单个字符,左侧的短横判为负号;每个数字归一化到 20×28,与训练局收集的数字原型做相关匹配。训练局留一局交叉验证 122/122 正确、0 错,最低分 0.664、最低领先 0.159。
  3. 组合规则(冻结)。 原型取全部训练字形;可信条件是最弱数字分数 ≥0.60 且领先 ≥0.10。OCR 已给值时保留它,但如果可信的字形结果与之不同,改为未知;OCR 没给值时,采用可信的字形结果。

设置

规则和门槛写入冻结配置后,测试局只运行一次:同一份 OCR 结果加上测试裁图的字形结果,按冻结规则组合,逐字段报告正确/错误/未知。

结果

测试 9 局、25 个生物面板:

字段 上一版路由器 冻结评估(同一 OCR + 字形) 接入后的生产路由器
士气 24/25 25/25 25/25
幸运 15/25 25/25 25/25
先攻 23/25 25/25 25/25
速度 24/25 25/25 25/25

0 个错误。训练局(用来选参数,不算成绩):幸运 29→30/31,先攻 29→30/31,速度 30→32/35。测试局生物面板其它字段:身份、攻击、防御、伤害、生命、阶级都是 25/25,数量 24/25。新生成的 74 份结果全部通过战斗记录 App 的严格格式校验。

接入方式:面板读取函数默认行为不变,只在路由器构造时启用较低门槛和字形读取器;新增三个原因代码(两遍一致的较低门槛、字形原型、OCR 与字形冲突),下游把它们当自由文本显示。相关测试文件共 317 项通过。

失败与负结果

本轮没有出现错误读数或回退的改动。需要说明的弱点见“局限”。

局限

  • 测试局只有 25 个面板,同一局的多帧彼此相关;标注是助手精审,不是用户审核。
  • 测试局有 5 个幸运格的原始读数在调查阶段被看过。
  • 负号靠形状规则判断;训练里数字 8、9 的样本很少(3 个、2 个)。
  • 只覆盖这四个字段。

结论与下一步

对于这四个关键小数字,“两遍一致的较低门槛”加“字形原型复核”在测试局上把幸运从 15/25 提到 25/25,且没有引入错误,已作为路由器的构造选项进入生产。后续需要在更多独立录像上验证,尤其是少见数字和负号。