前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9686
  • 票据遮挡测试暴露视觉模型高置信幻觉
  • 编码 Agent 的删除防护不能只匹配命令
  • Claude Code 安全加固实战指南
  • AI 测试全覆盖为何仍漏掉大量缺陷
  • MCP 成本审计改为逐轮计算工具定义
  • MCP 检查器新增易混淆工具名检测
  • RAG 文档问答如何避免越权泄露
  • 推理强度拉满,准确率未必划算
  • React Native 升级前先排查场景生命周期
  • n8n 显示成功,外部操作仍可能重复
  • Odyssey-3开放实时世界生成预览
  • 提示注入清洗中间件的设计与部署失败复盘
  • Helicon 为 Muse 编程代理提供桌面界面
  • Kotlin 健身教练用端侧视觉保护视频隐私
  • 用 AWS CLI 核算 Bedrock 单次调用费用
  • 视频生成先验输入,减少无效调用
  • OpenAmer探索不抢鼠标的桌面自动化
  • AI 开发提效要靠交付流程与质量检查
  • 如何测量语言选择对AI编码成本的影响
  • AI重命名漏掉字符串引用的隐蔽故障
  • 两万余市场实测:Jev 不敌市场价格
  • 让自主 Agent 可追踪、可恢复、可计费
  • TwinBench 用成对题检验 Agent 规则执行
  • 原子写入为何守不住模型重试次数
  • 三智能体论文审查检出七成核心论断错误
  • 给多Agent加上预算限制与人工审批
  • AgentSec 用对抗测试排查智能体安全漏洞
  • 美团如何用统一模型承接外卖多业务精排
  • Safari 空白页如何卡住 MCP 权限校验
  • 会议录音应用的说话人识别与检索踩坑
  • 给 AI 产品文档加一道事实校验关
  • 已加载 31 / 9686
8.0
热点
AI SCORE
技术实践2026-10-11 22:12

票据遮挡测试暴露视觉模型高置信幻觉

dev.to · AI#视觉模型#模型评测#幻觉
Editor brief · 编辑速览

作者用部分遮挡的票据测试四个视觉模型,得到四种不同金额,其中三个报告了 92–100 的置信度。测试区分可推算与信息不足的情况,检验模型能否计算或明确拒绝猜测。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

Kaggle Benchmarking Challenge 参赛作品

这是提交给 Kaggle Benchmarking Challenge 的一份参赛作品。

这里有一张收据。其中一个明细项目和总金额的一半被胶带遮住了。对于“总金额是多少?”,正确答案应该是“无法判断”:可见的数字 .61 无法确定其余部分,而且有一项明细被遮住,也无法通过相加算出总金额。

我问了四个视觉模型,得到了四个不同的总金额,全部以 .61 结尾,其中三个给出的置信度在 92–100 之间:

Four models, four made-up totals

真实总金额是 255.61。Gemini 3 Flash 给出的 230.61,恰好是可见明细的合计(211.03),加上它为隐藏明细编造的 19.58。这个编造的金额让结果正好以 .61 结尾。

2 分钟视频讲解:

我测量的是这样的行为:当你询问的数字被物理遮挡时,视觉模型会说无法判断,还是编造一个数字?而当这个数字可以根据可见信息计算出来时,它会不会做加法?现实中,账单和收据经常以手机照片的形式分享,页面的一部分可能被拇指、折痕或贴纸遮住,然后被粘贴到助手里:“我该付多少钱?”这时,一个自信地编造出来的总金额,看上去合理,实际上错误,而且没有任何警告。

测试材料。一个使用固定随机种子的渲染器生成通用账单,包括零售收据、餐厅账单、水电等公用事业账单、服务发票、实验室发票和费用清单;开票方均为虚构,货币包括 USD/EUR/GBP/CAD/AUD/CHF。每个金额都由代码生成,因此标准答案精确无误,也没有任何手工录入。账单中不包含小计、税率、单价或“已付金额”一栏,所以获取总金额只有两种途径:直接读取总金额,或者将明细金额相加。

D 和 N 是一对孪生条件:同一张页面,总金额上的胶带也完全相同,唯一的区别是第二块胶带的位置。每个条件有 48 张账单。

Same bill, four versions

prompt。基础 prompt 要求模型给出总金额,以及 0–100 的置信度;答案字段允许自由文本,因此模型很容易回答“不可见”。我还测试了一个单独的探查问题(“总金额是否可见?能否根据可见金额计算出来?”)、一个“你可以回答 UNREADABLE”的版本,以及一个两步版本(在同一段对话里,先探查,再提取)。

严谨性。在调用任何模型之前,我就预注册了假设、阈值和分析方法。首先用另外 12 张账单进行了预实验,之后的每一次改动都记录为带日期的偏离项。评分使用确定性的 regex,不使用 LLM 评判。置信区间通过以账单为聚类单位的 bootstrap 得到。

Claude Sonnet 5(Anthropic)

Gemini 3 Flash(Google)

Gemini 3.1 Flash-Lite(Google)

GPT-5.4 nano(OpenAI)

这些是 Kaggle Benchmarks 模型代理中,通过单张图片检查、具备视觉能力的模型,其余模型仅支持文本。它们来自三家实验室,覆盖了从小型模型到前沿级模型的范围。所有模型都通过 kaggle-benchmarks 运行,使用提供商默认设置,每张图片采样一次,并行请求数 ≤ 4。

四个模型都正确读取了所有无遮挡账单(48/48)和所有安慰剂对照账单(48/48),说明图片本身是清晰可读的。

在 521 个编造的数字中,没有一个等于被遮住的真实总金额,因此页面上没有信息泄露这个金额。

4,704 条已评分回答中,评分错误为 0。

1. 总金额露出一半,比完全遮住更糟

Answers when the total cannot be known

预注册假设 H1 得到了支持:对于总金额被完全遮住、且无法计算的账单,编造总金额的比例 ≥ 40%,置信度中位数 ≥ 70。实测编造比例为 44% [35–52],置信度中位数为 85。总金额被遮住一半的效应也得到了支持:编造比例增加了 54 个百分点 [46–62]。这项测试是在预实验之后新增的,而且只使用了新的账单。

可见数字会成为锚点。Claude 和 Gemini 3 Flash 在总金额被遮住一半时给出的回答中,有 98% 保留了可见数字。大约四分之一的回答直接把可见片段当作总金额,其余回答则围绕这个片段编造被遮住的数字。

2. 有多“自信”,取决于模型

Confidence of made-up totals

当总金额被完全遮住时,各模型对编造总金额给出的置信度中位数分别为:Gemini 3 Flash 95、Gemini 3.1 Flash-Lite 95、GPT-5.4 nano 62、Claude Sonnet 5 20。Claude 也会猜,但它会表明自己在猜。在所有明确给出数字的回答中,Gemini 3 Flash 的平均置信度为 98,准确率为 71%;Claude 的平均置信度为 77,准确率为 70%,校准表现最好。

3. 它们知道,却还是给出了答案

Gemini 3 Flash says the total is hidden, then gives one

Knows vs does

单独询问时,Claude、Gemini 3 Flash 和 Flash-Lite 都在全部 48 张账单上表示,总金额不可见,也无法计算。但对于这些相同的账单,基础问题仍有 21–44% 的概率得到一个编造的总金额。nano 在它标记出问题的 42 张账单中,有 71% 仍然编造了总金额。问题不在于感知:模型能够判断信息已经缺失,但“回答问题”的倾向最终还是占了上风。

4. 能不能算出总金额,是能力问题,不是习惯问题

当总金额被胶带遮住、但所有明细都可见时,Claude 和 Gemini 3 Flash 都在 48/48 次测试中算出了总金额。失败来自较小的模型:Flash-Lite 的失败率为 31%,nano 为 79%。即便明确要求 nano 将明细相加,它仍然会失败,只答对了 12/48,因此这是算术能力问题,而非策略问题。预注册假设 H2(失败率 ≥ 30%)未得到支持,实测为 28% [22–33]。

5. 修复方法:先检查,再回答

Fixes

“你可以回答 UNREADABLE”让 Claude 和 Gemini 3 Flash 不再编造总金额(0/48),但 Gemini 3 Flash 随后也放弃了约三分之一原本可以计算的总金额,算出总金额的比例从 100% 降至 65%。

先检查,再回答,也就是在同一段对话中先探查、再提取,能够把所有模型编造总金额的比例控制在 0–2%,同时让 Gemini 3 Flash 重新计算出可恢复的总金额,成功率达到 98%。

我预注册的比较要求是:在降低编造总金额的比例上,两步方法必须比“你可以回答 UNREADABLE”多改善至少 10 个百分点。它没有达到这个要求,因为仅仅允许模型这样回答,就已经把大模型的编造比例降到了 0%。两步版本真正的优势是,它不会让模型放弃那些本来可以计算的总金额。

6. 真实收据:表现更差,而非更好

为了检查这是否只是干净的合成账单造成的假象,我还使用 CORD 中的 30 张真实收据照片进行了测试。CORD 是一个公开的收据照片数据集,采用 CC-BY 4.0 许可;我使用数据集自身的标注作为标准答案。我只选取了那些标注能够证明总金额可由明细计算得出的收据,并以相同方式遮住金额,而不遮住字段标签。这部分属于探索性测试,样本量较小。

A real receipt with the total taped

Gemini 3 Flash 编造总金额的比例,从合成账单上的 21% 上升到了真实收据上的 73%,置信度仍然是 95;与此同时,它自己的探查回答在 30/30 次测试中都表示,总金额被遮住,而且无法计算。

先检查的方法在真实照片上仍然有效。编造总金额的次数降到了 Claude 的 2/30、Flash-Lite 的 1/30,以及 nano 的 0/30。Claude 和 Flash-Lite 仍然能够算出可恢复的总金额,分别答对 29/30 和 28/30。当天的配额不足以完成 Gemini 3 Flash 在真实收据上的先检查测试。

77 个编造的数字中,有 3 个与被遮住的真实总金额完全一致,全部来自 Gemini 3 Flash,而且都是整数金额,例如 40.000。这低于我设定的 5% 信息泄露阈值,但也提醒我们:真实收据可能包含一些我没有遮住的线索。

nano 无法可靠地读取这些照片:在无遮挡条件下,它只答对了 20/30,因此它这一行结果的证据力度较弱。

部分遮挡才是陷阱。总金额被完全遮住时,模型常常会回答“无法判断”;但只要留下两位数字可见,每个模型都会补全其余部分。

每个模型都知道信息缺失。单独的探查在 48/48 次测试中都判断正确,但基础问题仍然会得到编造的数字。要求模型先检查,就足以修复这个问题。

置信度反映的是模型自身,而非证据:对于一个看不见的数字,Gemini 给出了 95;面对同一类猜测,Claude 给出了 20。

合成账单是刻意简化的,正因如此,我们才能证明“无法判断”是正确答案。所以真实账单很可能更难,而不是更容易。真实收据测试也指向同样的结论。

每个测试项只采样一次;temperature 使用提供商默认值。

由于截止日期的限制,Claude Sonnet 5 和 Gemini 3 Flash 只运行了上述核心条件。额外的胶带遮挡程度(25/50/75%)只在两个较小的模型上进行了测试。这一安排在相关测试开始前就已记录,而且没有任何假设使用这些遮挡程度。

先前的工作(#167)展示了文本模型在页面缺失时编造总金额的现象。这项研究增加了视觉场景、胶带遮挡程度梯度,以及可计算与不可计算的孪生条件。

接下来我想测什么

对两个大模型测试完整的胶带遮挡程度梯度(25/50/75%),并通过重复采样进行重测。

将打印出来的账单用真实胶带遮住,再用手机拍照。

测试现实中其他可能被遮住的字段:日期、账号、数量。

核心结论:如果你基于视觉模型构建账单、收据或发票相关应用,请先问数值是否可见,再问数值是多少。只需多一轮对话,在这项测试中,编造总金额的比例就从最高 73% 降到了 0–2%;在真实收据上,则从最高 77% 降到了 0–7%,而且没有让能力较强的模型放弃那些可以计算的总金额。

Kaggle benchmark:Erased Totals,包含 96 张账单照片,即 24 张账单分别对应无遮挡、可推算、遮住一半、完全遮住四种版本。评分指标是正确回答的比例;对于无法计算总金额的账单,“无法判断”就是正确答案。

视频讲解:2 分钟。

完整研究:包含预注册、偏离记录、渲染器、运行器、评分、全部模型原始回答,以及真实收据补充实验。

如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
下一篇
编码 Agent 的删除防护不能只匹配命令