摘要
战斗日志(Logs)是游戏里记录每次攻击、施法、伤害的文字列表,每行以 [时:分:秒] 时间戳开头。项目的日志读取器对每一行做三次 OCR:整图原尺寸、面板原尺寸、面板放大 1.5 倍;然后用解析器把每次读到的文字解析成结构化事件,要求多次读法一致才接受。
上一轮难例评测(A31R)中,40 行可见日志有 3 行被拒、1 行参考答案不确定。本实验不跑任何新的识别,只诊断已保存的三次读数:每次读法是否能被完整解析?各读法之间是一致、矛盾还是缺失?
要回答的问题
日志行被拒,是因为不同读法互相矛盾,还是因为某些读法根本没能完整解析?哪种读法最容易失败?
数据与来源
- 6 份已保存的难例读数:3 页有日志行(5 行、29 行、6 行,共 40 行),3 页是负例(战场、英雄面板、说明文字),没有日志行。
- 这 40 行都已在之前的开发中曝光,是开发单位,不是 40 场独立战斗。
方法
- 只接收每行原有的三次尝试,分析时不读取参考答案或已有正确性标签。
- 每次尝试调用一次已有的文字解析器,记录:能否完整解析、解析出的事件类型、是否有“时间戳形状但缺右括号”的前缀、原始文字是否跨行、分数。
- 每行归类:三次完整且相同、两次完整且相同、只有一次完整、没有完整、完整但互相矛盾。分数低不改变“是否完整”,单独报告。
- 两两比较读法,结果分五种:同一完整事件、不同完整事件、都不完整、只有前者完整、只有后者完整。
- 所有诊断算完后,才读一次已有的评分输出,把历史状态(正确/被拒/参考不确定)挂到对应行上;不重新匹配、不重新计算正确性。
注意:语法上完整、读法一致,都不等于识别正确;同一引擎的不同预处理是相关的,不是独立投票;“缺右括号”只是字符串标记,不证明像素上真的缺了括号。
设置
诊断定义、实现和 15 个合成测试用例在分析前冻结。零新图、零解码、零 OCR、零 GPU;120 次解析器调用,总耗时约 8 毫秒。34 项新测试和 399 项相关回归通过。未改生产代码。
结果
每行分类(40 行):
| 分类 | 行数 |
|---|---|
| 三次完整且相同 | 24 |
| 两次完整且相同 | 13 |
| 只有一次完整 | 3 |
| 没有完整读法 | 0 |
| 完整但互相矛盾 | 0 |
按读法统计:
| 读法 | 完整 | 不完整 | 不完整中“缺右括号” | 分数 <0.90 |
|---|---|---|---|---|
| 整图原尺寸 | 34 | 6 | 6 | 0 |
| 面板原尺寸 | 38 | 2 | 2 | 0 |
| 面板放大 1.5 倍 | 29 | 11 | 11 | 0 |
所有不完整读数都伴随“时间戳缺右括号”的前缀,而且分数都 ≥0.90——也就是说,OCR 很有信心,但漏了一个括号,解析器因此判为不完整。
两两比较:三组读法对之间都没有出现“不同的完整事件”。例如整图原尺寸与面板原尺寸:34 行同一事件、2 行都不完整、4 行只有面板完整。
历史状态:36 行原为正确、3 行被拒、1 行参考不确定。3 行被拒的都属于“只有一次完整”:两行只有放大读法完整(另两种缺右括号),一行只有面板原尺寸完整。参考不确定的那一行有两次完整且相同的读法,但参考本身无法核实,诊断不改变它的状态。
失败与负结果
这是诊断,不是修复:没有尝试任何补救候选,也没有新的正确率。“缺右括号”只是字符串现象,像素层面的真实原因没有验证。Windows 计时器分辨率不足,CPU 时间报为 0,不代表没有工作量。
局限
40 行全部已曝光;三种读法来自同一引擎,相关性强;不完整与识别错误是两回事。
结论与下一步
日志被拒的主要原因不是读法互相矛盾,而是某些读法漏了时间戳的右括号导致解析失败,而且不同读法漏括号的行不同。这提示后续可以针对时间戳前缀做有界的处理,但任何新的获取或候选试验都需另行立项,诊断结果不自动推进到生产。
Comments