摘要
右键查看对方的生物时,面板上的士气、幸运、先攻和速度是推断对方英雄技能和装备的直接证据:例如幸运比基础值高 1,往往意味着对方有某个加幸运的技能或宝物。这四个字段都是单个、可能带负号的小数字。
截图路由器(把一张截图分配给各个读取器的程序)上一版在测试局里,幸运只读对 15/25,另外 10 个全是“两遍 OCR 都读对了、但分数低于 0.90”被拒。本实验只在训练局上设计了两个补充手段:对这四格放宽到“两遍一致且分数 ≥0.75”,以及基于训练局的白色字形原型匹配。冻结后在测试局只运行一次:四个字段都是 25/25,没有错误。改动已接入生产路由器。
要回答的问题
不放宽其它字段、不接受“只读一遍”的前提下,能否让这四个小数字从“读对却被拒”变成“接受且正确”,同时不引入错误?
数据与来源
- 24 局截图包中的生物面板帧,使用助手精审的字面标注(不是独立人工真值)。
- 沿用既有划分:训练 15 局,测试 9 局(开发验证用途)。冻结的留出数据没有打开。
- 读数格位置来自上一版路由器保存的结果。
- 坦白一点:调查上一版失败原因时,曾看过测试局 5 个幸运格的原始读数;规则和门槛只按训练局选择。
方法
- 较低一致门槛。 只对这四格:两种尺寸的读数一致、可解析、分数 ≥0.75 才接受;如果整帧 OCR 读出了不同的值,就否决。训练局原来被拒的 4 个用这条规则后全部是对的。
- 字形原型。 取白色、低饱和的像素(排除金色图标)作为笔画,按连通区域切成单个字符,左侧的短横判为负号;每个数字归一化到 20×28,与训练局收集的数字原型做相关匹配。训练局留一局交叉验证 122/122 正确、0 错,最低分 0.664、最低领先 0.159。
- 组合规则(冻结)。 原型取全部训练字形;可信条件是最弱数字分数 ≥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,且没有引入错误,已作为路由器的构造选项进入生产。后续需要在更多独立录像上验证,尤其是少见数字和负号。
Comments