摘要

战斗中打开法术书,程序要先认出“这是法术书页面”,才会去读里面的法术和等级。认书页靠整帧 OCR 的文字锚点:书页区域里“同一水平线上至少 3 个能唯一对上法术名的标题”,再加上书左上角唯一的“当前/上限”蓝量分数。前一轮训练池里有 11 帧法术书没被认出来、被当成了战场画面,典型样例是只有 2 个法术的稀疏页。

把门槛改为“同排至少 2 个标题”后,训练集法术书识别从 156 升到 161(共 167),其他战斗画面没有新增误判;测试集只评一次,法术书 78→79(共 82),全部 626 帧中只有 1 帧输出变化。

要回答的问题

能否放宽法术书的文字锚点门槛,认出只有一两个法术的稀疏书页,同时不把生物面板、战场、日志等其他画面误判成法术书?

数据与来源

  • 训练:两个训练截图包里全部战斗类帧,共 76 局、898 帧。用路由器(把一张截图分给各个读取器的程序)的整帧 OCR 读取并缓存。测试包不打开。
  • 测试:前一轮的 39 个测试局、626 帧,只在规则确定后评估一次。

方法

在缓存的 OCR 上,按场景统计三种门槛下“判为法术书”的次数:原规则(同排 ≥3 个标题)、同排 ≥2 个、任意位置 ≥1 个。选择在训练集上不增加其他场景误判、又能多认出书页的门槛。再用完整路由器复读新认出的训练页,确认能读出法术。

设置

测试集用新规则整体重读,与修改前逐帧比较(忽略耗时和请求编号)。

结果

训练集(898 帧):

门槛 法术书判为法术书 其他战斗画面误判
同排 ≥3 个标题(原规则) 156/167 0
同排 ≥2 个标题 161/167 0
任意 ≥1 个标题 165/167 生物面板 47

其他战斗画面包括生物面板 212、战场 266、英雄面板 104、日志 107、攻击/法术预览 42 帧。“≥1 个标题”不可用:生物面板上的能力名本身也是法术名,面板上的分数也落在蓝量区域。因此采用“同排 ≥2 个”。

完整路由器复读 5 张新认出的训练页:4 张读出了法术,身份都与截图标题一致(例如绝望/幽影之握、祝福/内在光辉、暗影增幅/绝望、视觉幻象/时间领域);1 张定位后被读取器以“布局或可见性不确定”拒绝。

测试集(626 帧,只评一次): 只有 1 帧输出变化——一局中的第 7 张法术书,改前被当成战场,现在读成法术书;其余 625 帧完全相同。法术书场景 78→79/82;英雄栏、生物面板等其他场景数字不变。

定位相关单元测试 77 个通过(新增稀疏页断言),定位、法术书、路由器相关共 706 个测试通过。

失败与负结果

  • 训练集仍漏 6 页:只有 1 个法术、标题不在同一排,或 OCR 根本没读出标题。
  • 附带诊断训练池里 16 帧生物面板没读出的原因:9 帧被外观门槛拒绝(标题和布局都找到了,但面板左侧“深蓝比例”只有 0.05–0.85,低于 0.85,因为背后战场让底色偏绿或偏紫);7 帧数量/生命锚点缺失,样例是悬停提示挡住了数量行。这道外观门槛是防淡入淡出读错的,放宽需要用被拒的淡出帧做负样本,留给下一实验。

局限

  • 法术书判定的计数是场景路由层面的,不等于书页里每个法术和等级都读对。
  • 测试集改进只有 1 帧,样本很小。

结论与下一步

“同排 ≥2 个标题”在训练集上多认出 5 页且零新增误判,测试集上也只带来预期的单帧改进,因此采用。只有 1 个法术或标题不同排的页仍会漏;生物面板的外观门槛问题另立实验处理。