摘要

自动采样时,程序会监视画面上的提示框、法术书、日志等区域,内容“变了”就再发一次 OCR 读取。上一轮的做法是比较整块区域的平均像素差,超过阈值 4 就算变化。问题是:书页文字轻微上下晃动会被当成新内容(同一段法术说明被读了 7 次),而日志从 1 行变成 4 行时,平均差只有 2.31,反而可能被当成“没变”。

本实验改为:先做小幅平移对齐,再看 16×16 小块里最大的平均差。训练回放中,同一展示的额外读取 11→0,覆盖不降;两组已看过的评估来源也保住了全部 5 次目标展示,但多读了 1 次。总读取 24→14。这只是私有的显式候选,没有接入默认读取器、App 或下游。

要回答的问题

能否在不漏掉真实局部变化(例如一个数字从 288 变成 278、日志新增几行)的前提下,减少同一内容因轻微抖动而被重复读取?

数据与来源

  • 训练对照共 21 对,全部来自训练来源的真实原图,逐图复核:19 对已审核的“同内容”提示、1 对法术书魔力 288/288→278/288、1 对日志 1 行→4 行。没有用合成文字冒充真实变化。
  • 回放评估用上一轮的同一批真实来源和原生帧;训练对照来源与两组评估来源零交集。冻结的测试来源没有打开。

注意:那两张日志图相隔约 15 秒、中间有其他页面,不能据此声称原来的连续流程真的漏掉了这 3 行。两张魔力标签在原图中垂直位置差 13 像素,是按各自位置裁剪的组件诊断,不是自动定位或连续时序成绩。

方法

  1. 用灰度图在小范围内平移对齐两个区域;颜色差异保留在 RGB 中。不对用于 OCR 的图片做平滑。
  2. 对齐后把残差分成 16×16 小块,取平均差最大的那一块;超过 20 就算“变化”。
  3. 对齐失败、相关系数不足 0.8、或位移超过 4 个描述符像素,一律按“可能变化”处理,不当作重复。
  4. 其余沿用上一轮:画面稳定性判断、采样频率、短时加密、读取确认;只有确认读取成功才更新比较锚点。

阈值 20 是在训练对照上选的,冻结后没有再按评估结果修改。原默认路径仍是平均差/阈值 4,旧决策逐条保持不变。

设置

回放复用上一轮当前帧的检测框,检测器本轮没有重跑。只比较实际检测到的提示区域,不把整个战场动画区域送去 OCR。

结果

训练对照:19 对同内容都判为重复,2 对变化都保留。因为阈值就是在这些材料上选的,21/21 不能当作泛化精度。

冻结后回放:

指标 旧方法训练 新方法训练 旧方法评估 新方法评估
已审展示覆盖 8/9 8/9 5/5 5/5
请求读取次数 19 8 5 6
同一展示的额外读取 11 0 0 1
选中过渡帧 0 0 0 0

14 张选中帧与旧保存原图逐像素一致,读取框也一致;其中 13 张复用上一轮真实 OCR,只有新增的 1 张另做了一次原生 OCR。原 5 个事件声明中的 12 个评估文字字段仍然 12 个正确。

在 3440 张原生到达帧上,新策略的 1178 次决策重放一致,39 个有限前缀一致;旧方法的 1178 条决策和更早一轮的 4640 条区域决策逐条保持。评估中仅筛选计算的 p95 约 4.75 毫秒,不含检测、解码、OCR、队列和 App。

失败与负结果

  • 评估多读的一次:两页都是“米诺陶洛斯姿态”、效果相同,但局部差 20.36 刚好超过冻结阈值 20。没有为了让它通过去调阈值,这次多读保留为回归,不算信息收益。
  • 训练中一个极短的“天罚”展示仍然漏掉,7 个声明字段没读到,没有从分母去掉。
  • 对两个变化对照另做的 4 次组件 OCR:288/288 和 278/288 读对;日志读到了新增内容,但多出一个“4”、漏掉了方框玩家字形。这是新的文字诊断缺口,没有混入上面 12 字段的正确率。
  • 首次评估启动时冻结源码快照文件名不匹配,在解码前终止;只修正文件名后重跑,失败日志保留。

局限

  • 训练对照只有 21 对,阈值在其上选择;评估来源已看过,不是独立盲测,帧数也不是独立对局数。
  • 生成像素的单元测试只保证小数字、边缘文字和颜色变化的机械行为。
  • 没有重跑完整 Perception 测试套件,之前已知的 2 个失败仍未修复。
  • 项目目标(十场独立真实对局、逐场景逐字段 95%、App 热态 p95≤3 秒)都没有达成。

结论与下一步

局部对齐 + 最大小块残差能去掉大部分抖动引起的重复读取,同时保住已审展示,但还不是“去重已解决”。下一步不围绕那一次评估多读反复微调阈值,而是在训练来源补真实的连续新日志/数字变化窗口,验证“只读一次重复、真正变化仍能触发”,再与整图读取工具组合并测量完整读取成本。默认接入需要更广泛的证据。