摘要

游戏的魔法书每页排列着法术图标,每个图标周围有几个小圆圈角标:上方一个数字、左下一个罗马数字(I、II、III…)、右下一个数字。之前的读取器已经能识别“这一格是哪个法术”,但不读这些角标。本实验(内部编号 B076)在“完整截图读取”中加入角标读取,作为默认关闭、需要显式开启的私有功能。

先在训练来源 8 页上实现和改进,冻结后在另外 3 个来源组的 6 页上评估:可见角标读对 129/189(68.25%),其中稳定页 106/141(75.18%),没有接受错值。上方和右下数字表现不错,左下罗马数字是主要缺口(评估只对 18/63),即使在稳定页上也有 31/47 是“未知”。没有达到 95%,默认保持关闭。

要回答的问题

在不根据法术种类、规则或历史推断答案的前提下,能否直接从当前画面读出三个角标?哪些角标、哪些情况读不出来?

本实验只报告“屏幕某位置印着什么字”,不解释角标的游戏含义(按屏幕位置命名为上方数字、左下罗马字面、右下数字)。

数据与来源

  • 训练:4 个来源组 8 页(6 页清楚、2 页翻页过渡),精审 234 个可读角标。
  • 评估:冻结后另 3 个历史上曝光过的来源组 6 页(4 页稳定、2 页过渡),精审 189 个可读角标。
  • 来源按组隔离;冻结的“来源 17–22”没有打开。这不是盲测,也不是十场完整验收。
  • 过渡页上角标仍能看清,所以不把整页标成负例,而是逐字段标注;空位置作为“无字面”负例。

方法

  1. 当前图上检测到的法术图标给出角标的大致搜索位置。
  2. 在当前像素里必须找到小圆圈,再读圈内文字。
  3. 用常驻的 OCR 读取器读两次:原尺寸和 3 倍放大。两次同一模型,不是独立投票。
  4. 严格解析阿拉伯数字和罗马字面,分数门槛 0.90。槽位未证实占用、几何不支持、找不到圈、低分、读数冲突,各自保留为“未知”。
  5. 不把 OCR 读出的 1/l 改成 I,不从图标类别推断角标。

读取器只拿到原图和模型配置;参考标签和评分位置从不进入运行。

设置

“正确/可见”的分母包含漏读和拒判。稳定/过渡标记只用于分层评分,不是读取器输入。另对 13 张旧整图做默认回归,确认关闭新功能时输出不变。

结果

范围 页 正确/可见 未知 未匹配槽位 接受错值
训练全部 8 193/234(82.48%) 41 0 0
训练稳定 6 156/183(85.25%) 27 0 0
评估全部 6 129/189(68.25%) 54 6 0
评估稳定 4 106/141(75.18%) 35 0 0
评估过渡 2 23/48(47.92%) 19 6 0
角标 训练 评估 评估稳定页
上方数字 77/78 55/63 46/47
左下罗马字面 44/78 18/63 16/47
右下数字 72/78 56/63 44/47

未知的原因:训练 41 个里 25 个是 OCR 低分或不是合法罗马字面、16 个找不到圈;评估 54 个里 24 个是 OCR 问题、30 个找不到圈。I 常被读成 1,II/III 常低分或被读成中文“三”“川”,都保留未知。

训练 102 个、评估 51 个“该位置没有角标”的控制位置都没有接受任何数值(这不表示没学这个法术)。

时间:热身后从读入整个文件到定位、识别、角标 OCR、JSON 序列化,p95 训练 1.139 秒、评估 1.387 秒(各只有 8/6 个样本),不含 App。

关闭新功能时,13 张旧图重新识别后除耗时字段外输出完全相同;336 项相关软件测试通过(软件测试不是准确率)。

失败与负结果

  • 罗马数字读不出来,而且稳定页也一样——这说明问题不是动画,“等画面稳定”不能代替字段识别本身。
  • 评估翻页页上,4 个折叠/其他页位置的 12 个控制字段无法可靠判定属于哪页,标为“参考未判定”;6 个未匹配观测槽位都没有接受值,单独保存,不计为正确负例。
  • 3 个可读的中央数字尚未接入,不计入分母,明确未实现。
  • 稳定页参考只是中心点匹配,不是检测框精度。

局限

  • 样本很小(训练 8 页、评估 6 页),0 个接受错值不代表全局零误报。
  • 评估来源曾经曝光,不是盲测。
  • 印刷的法术名、资源数字、整页其他内容不在本轮统计内。
  • 加入角标后,之前时序实验的延迟没有重测,不能说延迟自动保持。

结论与下一步

数字角标基本可读,罗马字面角标不行。下一步在训练来源上专门做小罗马字形与角标几何:复用已有的字形分类基础,补真实像素的正例,以及背景、空圈、遮挡负例,按来源验证;冻结后再做外部来源验收,不在这 6 页上调门槛。功能继续默认关闭。