大可的 AI Builder 手记
跟随系统
颜色主题
长沙小桌实战
大可 Dako
大可 Dako大可 DakoAI Builder · Agent 实践者用 AI 做真正能用的产品。专注探索 Agent 工程化落地、Vibe Coding 实践与商业化交付。
内容平台即将上线,敬请期待
图片是被切碎、编码,然后接进同一条序列的01缩放图片先被缩放到模型能接受的尺寸细节上限在这一步就定死了,小字先糊02切块切成小块,每一块交给视觉编码器变成向量03编码拼接向量映射到和文字 token 同一个空间,接进序列04继续生成模型不再区分文字和图片,照样一个接一个猜下一个 token文字理解上的毛病,读图时一个不少✓ 对精度有硬要求,别用通用模型——专门的 OCR 又准又便宜
它不是「看」了一眼图,是把图切成一格一格、编成和文字同一种向量,再接到序列里。能看多细,取决于切了多少格。

多模态输入

图片先被缩放、切块、编成向量,再拼进文字序列。它不是看了一眼,是在接着往下写。

它不是看见了一张图,是把图切碎、编成和文字同一种向量,接到序列里,然后接着往下写。这个加装方式决定了它能看多细,也决定了它读图时会犯哪些错。

读完你能回答:

  • 为什么它能把一份报表描述得头头是道,某个数字却读错了?
  • 同一张图换一个模型,为什么一个读得出、一个读不出?
  • 手里这张照片,交给它之前要先做哪三件事?

它不是看见了图,是接着往下写

图片进模型要经过四道工序:第一步把它缩到模型允许的尺寸;第二步按格子切开,每一格称为一个块;第三步每一块交给视觉编码器,转成一串向量;第四步这些向量再被映射一遍,落到和文字 token 相同的空间里,然后混进文字序列一起进去。claude-vision

最后一步才是关键:一旦混进去,模型就分不出哪些内容原本是文字、哪些原本是图。它仍然在同一个位置上不断判断下一个 token 该是什么。你问它图里有什么,本质还是在接话茬,区别只在于这一次可供接续的依据里,多了几百个从图片来的向量。

由此可以推出三件事。其一,看图和处理文字动用的是同一套推理本领,所以文字上那些老毛病——凭空编、记混、顺着你的话往下说——换成看图一样会犯。其二,图片会挤占上下文,而且占得不少:一张普通截图折算下来,通常要占掉几百到上千个 token。其三,能分辨多少细节,在缩放和切块那两道工序上就已经封顶,之后不管你怎么追问都补不回来。

像素级的活,它天生做不好

把上面那四道工序翻过来看,它读图会出的错就有了各自的来路。这些错不是偶尔失手,而是加装方式带出来的必然结果,换一代模型能减轻,抹不掉。

第一类错,源头在缩放。图片一旦缩过,最先消失的就是细笔画之间的间隔:一份翻拍的纸质说明书,标题上的字认得一字不差,脚注里那行小五号字读出来全是错的。同样被抹掉的还有细微的颜色与明暗差别——两张海报只差底色的深浅,它多半答「看起来一样」。

第二类错,源头在切块。它知道某个东西大致落在哪一块里,但块内没有更细的坐标可言,所以让它指「这个柱子在哪」或者「这个元素在哪个像素上」,它只能给你一个粗位置。它也不数数:让它报出画面里有几个同类图标,它给的是个约数,而且块与块的边界该怎么对齐,对它来说并不清楚。

第三类错,源头在画幅。一屏装不下的长图,两条路都不好走:整体缩下去,细节消失得更狠;切成很多块,块与块之间的对应关系就成了新的出错点。一份十屏长的聊天记录,它读得出聊了什么,读不准某条消息具体在第几屏。

第四类错,源头在语料。手写的签名、盖章的扫描件、格线细密到需要放大才看得清的表格,训练素材里本来就少,它没机会在这些形状上变得可靠。

四类错合起来指向一条纪律:凡是需要「基于像素的判断」,都不要交给它。要它精确定位,靠的应该是你自己提供的结构化信息——页面的元素清单、DOM、打点数据之类——而不是让它盯着图去猜。

这四类错的比例,各家模型并不一样,因为「缩放、切块、编码」这几步的具体做法本来就是厂商各自定的:允许的最大边长是多少、一张图最多切成几块、编码器在什么数据上练出来,每一项都会移动那条细节上限。所以同一张模糊的收据,A 模型读得出金额、B 模型读成另一个数,常常只是两家在缩放和切块上取的值不同——这不是你没问对,也不是其中一家「更聪明」。既然单看输出分不出是模型不行还是图不行,那就换一张更清楚的图再试一次:两个模型都读错,问题在输入;只有一个读错,问题在模型。

反过来,它擅长什么同样清楚:看整体、看关系、看语义。这张图整体在讲什么、布局有没有明显别扭的地方、两版方案的差异落在哪里、折线呈现的是什么趋势——这些用不着像素精度的判断,它相当靠得住。这条界线要先分清,再谈怎么把图交给它。

交给它之前,先动手改三处

第一处是裁,不是缩。你只关心画面里的一块,就把那一块单独裁出来,让它按原尺寸进去,不要指望在整图上追问出细节。一张后台工单详情页的截图,与其整张发过去让它找状态流转,不如直接把流转那一栏裁下来——三条里这条最管用。

第二处是把关键信息用文字补一遍。图里的数字、字段名、报错内容,能用文字写出来的就写出来。图片的用途是让它把握结构和布局,不是让它去认字。

第三处是一次一张,并给每张起个位置。多张图彼此干扰,还各自吃掉一份上下文。非要对比两张,先讲明第一张是改版前、第二张是改版后,再问差在哪,别让它自己去猜顺序。

这三处都不是使用技巧,而是前面那四道工序的直接推论:凡是让输入更接近原始像素、让判断更有依据的做法,效果都会变好。

问题问得越具体,答案越有用

「这张图有什么问题」换来的多半是空泛的话。改成「这份报表里,退款那一列是不是比上个月高」或者「这两个页面的顶部留白,哪个更宽」,答案才有落点。原因还是那条:它是在接你的话往下写,而你这句话本身就决定了它往哪个方向接。

同时要记住,图片不是白给的输入,它按占掉的上下文计费,分辨率越高越贵,多图场景里这个量很容易被算少。openai-vision 所以做多图功能之前先估一遍账:一次请求带几张图、每张折算多少、单次调用多少钱、一天多少次。这一步不做,等上线才发现贵,就只能回头砍功能。图片按什么单位计价、为什么它比同样长度的文字贵,一次调用三种价里单有一节讲。

精度要求高的活,别交给通用模型

如果你的功能对准确度卡得很严,识图这一环就别用通用多模态模型。证件号码的识别、快递面单上的地址栏、流水线上的缺陷图片,各有专门的识别与检测模型,成本低、准确率高,输出还是确定的。

通用多模态模型该站的位置是理解和串联:结构化信息已经取出来之后,由它判断这些东西意味着什么、有没有异常、归到哪一类合适。两件事混在一起做,你付的是更高的费用加上更高的出错率。

能用结构化信息的地方,就别用图

最后一个判断更根本:能拿到结构化信息的地方,不要让模型看图。要判断一个页面元素在哪、有没有被遮挡,一份元素清单比一张截图既便宜又准确;要统计数量,一个查询语句比让它数图可靠得多。图片只留在确实需要「看整体」的那几处——判断这一屏给人的观感对不对、几个方案的视觉重心落在哪里。

别让模型搬运数据 讲的是同一条原则的另一面:精确的东西交给系统,判断的东西交给模型。多模态这一层最容易违反它,因为把一张图丢过去看起来太省事了。

参考资料

  1. Vision — Claude Platform Docs
  2. Images and vision — OpenAI API