摘要

游戏的魔法书每一页有若干法术格子。某个法术刚用过、还在冷却时,格子中央会出现一个沙漏圆章,上面写着一个数字。用户明确说明:这个数字是剩余冷却回合,1 表示下回合可用,2 表示两回合后。本实验(编号 B105)新增读取这个数字。

做法是:在已检测到的法术格子里,用一个“遮住数字部分”的沙漏圆章模板找到圆章,再把数字区交给现有 OCR 读两次、要求一致。在 24 张训练书页上 9 个数字全对,在 14 张冻结后才运行的开发书页上 5 个数字全对,所有无数字位置都没有误输出。但正例只有 14 个,结论只能说“这个小规模新增字段能用”,不是完整的冷却覆盖。

要回答的问题

能否在当前截图上可靠读出魔法书格子中央的冷却数字,并在没有数字时保持“未知”而不是写成 0?

本轮只读当前截图上可见的字面,不推算未来回合,也不判断法术能否施放。“数字=剩余冷却回合”这一含义来自用户说明,输出中会标明来源。

数据与来源

  • 复用上一轮整理的 38 张书页,逐格查看全部 532 个格子,不是只看算法提议。
  • 训练:24 页、336 格,其中 9 个中央数字、219 个有法术图案但无数字、108 个空格;来自 7 个来源组,其中有正例的 4 组。
  • 开发:14 页、196 格,其中 5 个中央数字、143 个无数字图案、48 个空格;来自 3 个已曝光来源组,其中有正例的只有 2 组、2 页。
  • 没有中央数字的格子不标“冷却 0”。封存验收来源未读取。这是小规模的新增字段验证,不是盲测。

方法

  1. 搜索范围:只在当前图自动检测到的法术格子内找。
  2. 定位圆章:用一个 68×68 的沙漏圆章模板(取自一张训练页),匹配时屏蔽中间可变的数字区,在 64/68/72 三个尺寸和有限中心偏移中搜索。模板上原有的数字 1 不参与读数。
  3. 读数字:把数字区单独送给现有文字读取器,原生尺寸与 3 倍放大各读一次,两次一致且分数 ≥ 0.90 才接受。
  4. 输出字面值和 remaining_rounds,并保存原始文字、两次分数、圆章框与分数、格子编号;空格、占用未知、没找到可靠圆章、读字失败都保留未知,不从图案、法术名或前后帧补数。

门槛(运行前写定):训练页数字至少 8/9 正确、0 错误接受、327 个无数字位置无误输出;冻结开发页至少 4 个正确、0 错误接受、0 无数字误输出。

设置

初始圆章相关度门槛 0.75 只找到模板来源那一页的 1/9,这次失败保留。查看训练页:其他真实圆章的相关度为 0.607–0.687,无圆章的图案最高 0.377,于是把门槛定为 0.55。训练页 9/9 正确后写下冻结决定,再运行开发页;开发阶段没有修改几何、模板、门槛或标注。

结果

范围 数字正确 / 可见数字 错误接受 无数字误输出 出现的数字
训练 24 页 9 / 9 0 0 / 327 1、2、4、5、6
冻结开发 14 页 5 / 5 0 0 / 191 2、3、4

所有正确数字都关联到对应的法术格子,没有游离数字输出。

接入单图读取入口后(默认关闭,需显式开启),用 14 张开发页加 4 张非书页控制图(英雄、生物、日志、普通战场)各开关一次,共 36 次完整调用:5/5 数字和 191 个无数字位置保持;18 张图的旧输出完全不变;4 张非书页的新字段为“未检测到”。真实命令行同时开启名称、角标、冷却读取时读出 4/4 个中央数字。相关 21 个测试文件 310 项通过。

失败与负结果

  • 初始 0.75 门槛只找到 1/9,失败输出保留(门槛之后按训练页数据改为 0.55)。
  • 不能把 518 个阴性位置加进分母来包装一个很高的“冷却读字准确率”。

局限

  • 正例只有 14 个,数字 0、7 以上和多位数都没有真实图片证据(只有模拟读数的单元测试)。
  • 过渡、遮挡、其他分辨率和更多来源没有验收;开发页来源早已曝光。
  • 没有测速度、全仓测试或 App 截图到展示的整条链路。
  • 外围法术图案的识别本轮因优先这项用户要求而顺延,并未修复。

结论与下一步

中央冷却数字可以作为一个独立的可见字段读出,且未知不会被写成 0。下一步回到外围法术图案与名称核对,同时从已授权录像增加冷却正例、“变暗但没有数字”的负例和更多数值,不反复用这 5 个开发数字调参。