本工具不做"AI 鉴定",做的是像素级取证:一张真实的 App 截图,在噪声、压缩、 文字锐度、版式对齐上有非常刻板的规律;而无论是局部重绘、贴图拼接,还是整幅生成, 都会在其中若干项上留下与规律不符的痕迹。我们把七个可量化的痕迹分别打分,再用证据累积合成一个 0~100 的综合分。
SECTION 01它到底在判什么
输入是一张跑步记录截图(PNG / JPG / WEBP),输出是三样东西:
- 综合可疑度:0~100,衡量"这张图与原生截图的像素规律不符的程度";
- 七个维度分:每个维度独立可解释,能指出具体是哪一块、哪一行文字出问题;
- 标注图与放大图:OCR 框、噪声热点、锐度/对齐异常区域,直接看位置。
分数不是"伪造概率"。它衡量的是异常证据的强度, 15 分及以上按当前策略统一标记为「可疑」,需要人工复核;反过来,低分只代表"没检出像素异常", 不等于"这张图真实"。
SECTION 02处理流水线
SECTION 03七个维度
| 维度 | 权重 | 在找什么 |
|---|---|---|
| 噪声地板 / 局部重绘 | 26 | 真实截图的平坦区域几乎纯色(σ≈0);重绘或贴图会带进成片颗粒。加了自相关门控,只认"相邻像素不相关"的真噪声,地图渐变不算。 |
| 文字锐度一致性 | 14 | 同一字号的文本边缘锐度应当一致,重绘过的文字偏软。实测真实图组内偏差 <5%。 |
| 版式对齐 | 13 | 原生 UI 的左边缘与基线是像素级对齐的,后贴文字会有 1~3px 错位;多列栅格不算错位。 |
| ELA 误差水平 | 12 | 整图重压缩残差应当均匀,编辑过的区域残差异常偏高。 |
| 文字可信度 | 12 | 两路离群证据:① 真机不会出现的纯字母串(AI 图把运营商渲染成 KDIS);② 多字中文词里字形读不准的那几个。按个数计而非占比,避免被几十个正常词稀释。 |
| EXIF / 容器 | 9 | 截图不应带相机 EXIF;出现修图软件标签(Photoshop / 各类改名工具)即为可疑。 |
| 压缩网格一致性 | 8 | 拼接区域与整体的 8×8 JPEG 压缩相位不一致。 |
权重是"这一维单独能把总分顶多高"的相对量级:噪声地板最高(26),因为它对局部重绘几乎不可能漏; 压缩网格最低(8),因为无损 PNG 本来就没有网格特征。
SECTION 04分数怎么合:证据累积(noisy-OR)
miss = ∏ᵢ ( 1 − (wᵢ / w_max) · min(sᵢ / 100, 1) ) score = 100 · ( 1 − miss ) w_max = 26
为什么不取平均:一张只有"配速数字被重绘"的图,其余六维全是 0 分,取平均会被稀释成看不出来; 而证据累积允许单一维度的强信号独立抬分,同时多条中等信号会叠加, 又不会因为某一项误报就把总分拉满。
实例(示例图 03 · 局部重绘配速)
文字锐度 66 → 1 − (14/26)·0.66 = 0.6446 ELA 15 → 1 − (12/26)·0.15 = 0.9308 文字可信度 10 → 1 − (12/26)·0.10 = 0.9538 其余四维 0 → 不改变 miss miss = 0.6446 × 0.9308 × 0.9538 = 0.573 score = 42.7 → 可疑
SECTION 05阈值与判定
- 综合分:
< 15未见异常;≥ 15可疑(当前策略,宁滥勿缺)。 - 颜色梯度:15~50 黄色、≥50 红色,仅用于提示严重度,结论标签统一是「可疑」。
- 单维颜色:维度卡片的绿/黄/红用
30 / 60两档,与总分阈值相互独立。
15 这个数字不是拍脑袋:现有真机样本的最高分是 10.2(含地图水印的那张), 把阈值定在 15 既能覆盖全部真机样本,又留了约 5 分的余量。
SECTION 06校准数据
| 样本 | 分数 | 结论 | 主要触发项 |
|---|---|---|---|
| 真实截图(PNG) | 9 | 未见异常 | 无 |
| 真实截图(JPEG 转发) | 3 | 未见异常 | 无 |
| 真机截图 Android 1090×1920 | 3 | 未见异常 | 无 |
| 真机截图 1320×2868(含地图水印) | 10 | 未见异常 | ELA 20 |
| 局部重绘配速(带噪 + 1.2px 虚化) | 43 | 可疑 | 文字锐度 66 |
| 重绘文字发虚(2.2px 模糊) | 52 | 可疑 | 文字锐度 85 |
| AI 生成图(状态栏乱码 + 3 处字形读不准) | 61 | 可疑 | 文字可信度 96 |
| AI 生成图("隐私"被读成"隙私" 0.77) | 30 | 可疑 | 文字可信度 40 |
| 整幅生成(全图噪声 + 虚化) | 100 | 可疑 | 噪声地板 100 |
| 真机截图缩放到 75% | 40 | 可疑 | 噪声地板 39(重采样本身产生颗粒) |
SECTION 07试过但被否掉的方案
这一节记录的是失败,因为它们直接决定了本工具的能力边界。
通用 AI 图像检测模型
- CIFAKE 系 ViT在截图域反向判断——把真机截图给出 90% fake。
- UnivFD(CLIP 特征 + 线性头)加入第二张真机图后完全无法分开: 真机 −3.73 落在两张 AI 图(−4.03 / −2.44)之间。
- SPAI(CVPR'25 频谱学习)输出全部贴地:四张图 3e-18 ~ 3e-04, 等于把所有图都判成"真实",训练时的 BCE 损失 40.46 也印证了预测塌缩。
共同原因:这些模型的训练域是自然照片,截图(纯色底、抗锯齿文字、无镜头成像链)对它们是分布外。
纯字形统计
试过笔画宽度离散度、转角堆墨量、字高离散度、逐字重识别置信度——全部无效, 因为 AI 生成图的笔画均匀度优于真机截图(519 的字高离散 0.066 < 真机 562 的 0.103), 统计方向是反的。目前唯一可用的字形信号是识别器给出的置信度离群项。
SECTION 08局限与正确用法
- 最大盲区:整幅重新生成、且数字自洽的截图。这类图在平坦区颗粒密度、频谱、上采样残差、 文字锐度、字形统计、JPEG 相位上都与真机截图无法区分,只能靠数据自洽性、版式异常、语义破绽来抓。
- 只改文字内容、但边缘/位置/噪声处理得极干净的伪造,可能只落在「可疑」的低分段。
- 转发、缩放过的图会自带颗粒,可能被噪声维度记一笔——实测缩放 75% 得 40 分。
- 「文字可信度」依赖识别器愿意给低分:扭曲字被"自信地读成另一个合理字"就抓不到; 识别器被图标干扰时也会误报(已排除贴边截断文字,但无法根除)。
- 单条判据的风险量只用 4 张真机/AI 图校准,换机型、换 App 可能需要重调。
建议的使用方式
- 尽量拿原始文件(不要聊天记录里的转发图);
- 「可疑」不等于「作弊成立」,作为要求补交材料的依据:App 内实时截图、录屏、后台配速记录;
- 多张图横向比对同一人的历史截图,比单张绝对分数更有意义。
