它看起来像截图,其实不是
拿一张图表截图问 AI 是可行的,但它扔掉了图片下面的文字、它出自的那一页,以及周围的文档。在文档里框选一块区域,三样都保留下来,所以数字是从文字里读出来的,而不是从像素里猜出来的,回答还能链回那一页。
每个人都有同一个变通办法。遇到一张看不懂的图,截个图,贴进对话框,打一句「这是什么意思」。它管用的次数多到成了习惯。
它也会以一种具体的、可重复的方式失败,而失败的原因并不是模型不擅长看图。而是等图片到达时,原本就在它旁边的三样东西已经被扔掉了。
裁剪丢掉了什么
在真正的文档里打开那张图,看看那里都有什么。坐标轴标签是文字。图注是文字。图下面那张表是文字,里面有确切的数值。页码是已知的。解释这张图的那段话,就在它上面两寸。
裁成一张 PNG,这些就全没了。到达模型的是一格格像素,其中数字 0.37 和 0.87 只差几十个像素。
于是模型只能做它必须做的事:读图。大多数时候它读对了数字。有时候它读得差不多对,这更糟,因为一个差不多对的数字不会自报家门。而且返回的回答无处可指——你点不了它,对话根本不知道那是哪份文档,追问一句(「它上面那段说了什么?」)不再截一张图就没法回答。
我们改为发送什么
在 MindMax 里,你在阅读器里拖一个框,有四样东西跟着一起走。
图片,因为有些东西确实是图形性的:哪个方框在哪个标题下面、箭头连着什么、版面怎样分组。这才是图片该干的事。
框下面的逐字文字,是从文档里取出来的,而不是从像素里识别出来的。这正是你把截图贴进对话框时不存在的那一部分。
它出自哪里——文件、页码、章节、幻灯片。所以回答可以点回那个位置,对话里的缩略图也能在对的那一页重新打开文档。
文档本身,附在问题上,所以模型可以去读周围的章节,而不是对着图注瞎猜。
真正起作用的那条规则
图片和文字都有,并不会自动带来改进。还得告诉模型以哪一个为准,因为哪怕一张含有那个确切数值的表就在它的上下文里,它也会兴致勃勃地从图表上去读这个数。
所以指令是明确的:凡是区域有真正的文字层,数字、公式和表格数值都以文字为准,图片只管版式、形状和空间关系。
有意思的是另一个分支。扫描页、标签是画上去的示意图、只有图片的 PDF 里的图,底下都没有文字。我们本可以把这一点掩盖过去——悄悄把区域转写出来,把结果当作原文呈现。我们做的恰恰相反:框下面什么都没有时,模型必须说明某个数字是从图片上读出来的,可能有误。
这个分支比看起来更要紧,因为这是唯一一种老实的回答不如不老实的回答显得厉害的情况。一个永远显得一样自信的工具,等于什么都没告诉你什么时候该去核对。
还有第三种情况,在实现时让我们栽了个跟头。如果你在两轮之后追问,图片已经不在对话历史里了——历史是文字。我们最初的修补,是改为保留一份区域的转写。这就意味着到了第三轮,「框下面的文字」根本不是文档里的文字:而是模型在第一轮对图片写下的东西。把它当作数字的权威喂回去,恰恰就是这条规则要防止的失败,只是打扮成了遵守规则的样子。所以这两者从头到尾被分开标注,模型写的描述被明确标为不可引用、对任何数字都不具权威。
为什么处处都是同一个框
这是每个阅读器里的同一个动作——PDF、EPUB 和 Kindle 电子书、PowerPoint 幻灯片、图片、你自己的 Markdown 笔记——区域会根据它画在什么上面而调整:PDF 里的一页、书里的一章、演示文稿里的幻灯片编号。
这种一致不是为整齐而整齐。一旦它只在部分阅读器里存在,你就不会再伸手去用它,因为一个得先确认能不能用的动作,就不算一个动作。它得成为下意识,才有价值。
留下回答
最后一块最不聪明,却可能最有用。对一张图的解释,值得放在你的工作旁边,而不是埋在一段你不会往回翻的对话里。
所以一块区域和它换来的回答,可以一步存进你的今日笔记。这样做时,图片会被复制到你自己的文件夹里——而不是从对话的存储里引用过来——因为一篇在你清理旧对话后就指向一张坏图的笔记,比没有笔记更糟。
我们没有声称什么
手写和极小的坐标轴标签,依然是读图会出错的地方,而且错得很自信。框选不能解决这一点;它把问题收窄了:只要有文字,就把文字交给模型;没有文字时,逼它承认。而一张跨页的图,是两块区域,不是一块。
这里的说法很窄,也可以核对:你指着的东西,连同它的上下文完整到达;文档里有数字时,数字取自文档;回答知道回去的路。