做产品 PMaker
空格的键盘
图片是被切碎、编码,然后接进同一条序列的 接进和文字同一条序列 文 文 图 图 图 图 图 图 图 文 对模型来说,它们没有区别,一起参与下一个 token 的计算 一张图 切成 patch 编码后接进序列 ① 小字先丢 分辨率被压过,细线和小字最先没 ② 位置不精确 别指望它给你准确的像素坐标 ③ 一张图几百上千 token 多图对话烧上下文特别快

它不是「看」了一眼图,是把图切成一格一格、编成和文字同一种向量,再接到序列里。能看多细,取决于切了多少格。

多模态:图片怎么被读懂

多模态是加装上去的,不是天生的。加装的方式是把图切成小块、编成向量,接到文字序列后面。所有能力和所有毛病都由这个方式决定。

你会遇到的现象
  • 发一张整屏截图让它找按钮,它把界面描述得头头是道,按钮位置说错了
  • 发一张表格图,大标题读得准,表格里的小字全读串了
  • 换个模型,同一张图一个读得出、一个读不出,你不知道差在哪

图是怎么进去的

流程是这样的:图片先被缩放到模型能接受的尺寸,然后切成一格一格的小块(patch),每一块交给一个视觉编码器,变成一串向量。这些向量再经过一层映射,变成和文字 token 同一个空间里的东西,接到文字序列里一起进模型。

关键在最后一步:接进去之后,模型不再区分哪些来自文字、哪些来自图片。它照样是在那条序列上一个一个往下猜 token。你问它图里有什么,它是在「接话茬」,只不过接话的依据里多了几百个来自图片的向量。

这也就解释了几件事。第一,它读图和读字用的是同一套推理能力,所以文字理解上的毛病——会编、会记串、会顺着你说——读图时一个不少。第二,图片是要占上下文的,占的还不少。第三,它看到的细节上限,在缩放和切块那一步就已经定死了,后面再怎么问都补不回来。

于是它有这些边界

做不好的事机制上的原因
读清楚小字图被缩放过,小字在 patch 里已经糊了
给出精确坐标它只知道大致在第几块,不知道第几个像素
数清楚数量数数本来就是它的弱项,切块之后更难对齐
判断细微的颜色和间距差异压缩过程中这些差异最先被抹掉
看懂超长截图要么被压得更狠,要么被切成很多块,两头不讨好
可靠地读手写体、复杂表格语料里这类样本本来就少
前两行决定了一件事:不要让它做「基于像素的判断」。要它定位元素,靠的应该是你给的结构化信息(比如页面的 DOM 或元素清单),不是让它盯着截图看。

反过来,它做得好的也很清楚:看整体、看关系、看语义。这张图在讲什么、布局有没有明显问题、两版设计的差别在哪、图表反映的趋势是什么——这些不依赖像素级精度的任务,它相当可靠。

它看到的细节上限,在缩放那一步就已经定死了 整屏截图直接发 缩放 小字糊成一片,后面再怎么问都补不回来 裁出你关心的那一块 原尺寸 小字就能读了——所有技巧里最有效的一条 图片是给它看结构和布局的,不是给它读字的 图里的数字、字段名、报错内容,能贴文字就贴文字。要它定位元素,靠的应该是页面的 DOM 或元素清单。 对精度有硬要求就别用通用模型:读发票、认车牌、扫条码,专门的 OCR 又准又便宜。
它做得好的是看整体、看关系、看语义——这张图在讲什么、布局有没有问题、两版设计差在哪。凡是需要「基于像素的判断」的,都该换个做法。

怎么给它图

最后一条判断给做产品的人:如果你的功能对精度有硬要求,别把识图这一步交给通用模型。读发票、认车牌、扫条码,这些有专门的 OCR 和检测模型,又准又便宜。通用多模态模型的位置是理解和串联,是在你把结构化信息取出来之后,帮你判断这些信息意味着什么。

接着看