摘要
生物面板右下角有一排状态小图标,每个图标角上有一个数字或 ∞(角标)。早先的实验(B035)已经做出定位圆框和识别 ∞ 的能力,但它依附在旧的批处理流程上。本实验(编号 B121)把这些能力接进“读一张截图”的显式入口:用户给一张截图,程序在当前检测到的生物面板里找状态行、逐个图标输出位置和角标字面。
在 65 张开发截图、142 个可见图标的固定分母上,首轮只有 18 个“定位且角标正确”;两轮针对真实失败原因的窄修复后达到 141 个(99.30%),整行全对的正例从 2 行增加到 36/37 行,错值和多报始终为 0。但这些数字只是字面:角标是不是剩余回合、图标是什么效果、属于哪个单位,都没有回答。
要回答的问题
能否在一张截图里,只依赖当前画面,可靠地读出生物面板状态行的每个图标及其角标字面,并且在读不出时保持未知?
数据与来源
- 65 张既有曝光开发截图:37 张有状态图标,19 张是可见的空状态行,9 张是其他画面。来自 14 个旧视频编号(含控制图),有相邻帧,不是 14 场独立验收。
- 首轮之后逐张复核原生状态行拼图,发现旧参考有 11 张并没有把图标标全,不能把“未标”当负例。补标 66 项后,完整分母为 142 个图标;旧参考不改。
- 冻结后另用较新来源:5 张完整生物面板(其中只有 1 张有状态图标)和 21 张控制图。
方法
在当前自动检测到的生物面板中,先核对本帧真实存在的标题、“主动能力”、阶级等文字锚点,再检查状态行背景和 9 个候选槽位上实际的圆框,而不是直接输出 9 个固定位置。每个图标输出原生框、角标原文、整数或 ∞、所属面板关系。∞ 用独立的“横向双孔”像素拓扑判定。
三个版本:
| 版本 | 改了什么 | 为什么 |
|---|---|---|
| v1 | 首次接入 | — |
| v2 | 背景检查改为在槽与槽之间的空隙采样;文字归属改为不重叠的整槽单元 | 查看原图发现:白色数字被“整条暗背景”检查误判为坏背景;OCR 的文字框自然补边超出了 44×35 的字形裁区被误判越界 |
| v3 | 只对仍未读出的角标:先找中性数字字形,再批量调用现有文字读取器补读,两个输入必须同文、分数都 ≥ 0.90、数字长度等于可见字形数 | 剩余失败多为鼠标被 OCR 读成 e/o/日 混入角标,或单个 7、低分 6 漏检 |
已接受的读数从不被覆盖;同一像素的不同变换不算独立证据。
设置
匹配标准:图标框与参考框 IoU ≥ 0.5 算定位正确;角标要求字面严格一致。
结果
| 同一 65 图 / 142 个可见图标 | v1 | v2 | v3 |
|---|---|---|---|
| 定位正确 | 65 | 141 | 141(99.30%) |
| 定位且角标严格正确 | 18 | 129 | 141(99.30%) |
| 漏读 / 拒读 | 124 | 13 | 1 |
| 错值 / 多出图标 | 0 / 0 | 0 / 0 | 0 / 0 |
| 11 个 ∞ 正确 | 11 | 11 | 11 |
| 37 行正例整行全对 | 2 | 25 | 36(97.30%) |
19 个空行中 18 个实际检查后没有圆框;9 张其他画面无误报。
冻结 v3 后的较新来源:唯一一张有状态图标的面板,3 个角标“2、1、5”全部找到并读对;4 张空行面板无多报;21 张控制图无状态行误报,原有其他读取结果保持。真实命令行开启该功能,输出与完整入口一致。
共进行 292 次完整入口调用,涉及 91 张不同原图——调用次数不是独立质量样本。最终 10 个相关测试文件 192 项通过。
失败与负结果
- 首轮评分曾把未标注的图标当成“空”,得出分母 76、11 个误报的错误结果;这份评分已明确作废,同一输出的更正评分保留。
- 唯一剩下的漏读:一张图上数字 8 清楚可见,但左侧提示遮住了“主动能力”锚点,整行没读;不从后一帧补值。
- 一张空行图因标题 OCR 低分被拒读,不能算作“正确的完整空行”。
局限
- 全部是曝光过的开发截图;较新来源的正例只有 1 张,不能声称广泛跨来源精度。
- 角标数字没有赋予“剩余回合”的含义;效果身份、单位实例、敌我归属、与悬浮说明的关联都还未知。高字面成绩不能掩盖这个语义缺口。
- 没有新的整体延迟测量,没有 App 闭环,也没有“所有场景/字段 95%”的结论。
结论与下一步
状态行的“位置+字面”已经可以在单张截图入口稳定读出。项目决定不再在这批角标上追最后一分,下一步是复用早先的状态悬浮文字读取,与当前面板、同槽图标建立可核对的候选关系,并分别保存三种时间信息:图上的角标计数、说明里的基础时长、日志里的字面持续时间;再补充较新训练来源中多种状态和共享图标的例子,冻结后做更多来源的正例验证。
Comments