多模态AI直接读取图像 | AI生成和翻译
今天早些时候,我让 Claude(在 Claude Code 中)查看我 Mac 上的截图 ~/Downloads/s1.jpg,并从中提取考试成绩。它做到了。然后我问:你实际上是怎么读取 JPG 的? 这篇文章就是答案的详细版,外加一个关于 ChatGPT 是否做同样事情的旁注。
发生了什么
Claude Code 内置了一个 Read 工具。当你提供的路径指向一个文本文件时,它会返回各行内容。当路径指向一张图片——PNG、JPG、截图、照片,或任何 Claude 能解码的内容——该工具会做不同的事情:它加载字节数据,并将图片直接交给模型作为对话的一部分,就像你在 Claude 网页应用中将图片附加到聊天中一样。
没有 OCR 步骤。没有调用外部视觉 API。模型本身查看像素。
所以当截图显示:
计算机网络技术 23
大学语文 57
计算机高级程序设计 74
习近平新时代... 56
Claude 并非在后台运行 Tesseract 并将提取的文本反馈给自己。它是在看到渲染后的中文字符及其旁边的数字,整个过程与它决定如何处理你五分钟前编辑的文件是同一遍。文本和图片都是同一个上下文窗口中的 token。
“多模态”究竟意味着什么
一个模型是多模态的,当它的权重被训练为接受不止一种输入——通常包括文本和图像,有时也包括音频,有时是视频。在模型内部,一张图片被分割成小块,每个小块被转换成一个向量(一个“视觉 token”),这些向量与文本 token 一起位于 Transformer 处理的同一序列中。
这与旧有的流水线方法不同:
- 旧流水线(非多模态): 图片 → OCR 服务 → 文本 → 语言模型
- 多模态模型: 图片 → 块嵌入 → 处理文本的同一个 Transformer
流水线版本会丢失所有非文本内容:布局、颜色、手写风格、复选框是否被选中、数字是否以红色高亮。原生多模态模型保留了所有这些,因为像素就在上下文中。
Claude 是多模态的吗?ChatGPT 呢?
两者都是,但有一些值得注意的细节。
Claude(Anthropic 模型家族——Claude 4 系列中的 Opus、Sonnet、Haiku,当前版本 4.6)接受文本和图像作为输入。它不直接接受音频或视频,也不生成图像——输出仅为文本。Claude Code 的 Read 工具能读取 JPG,是因为底层模型支持图像输入。
ChatGPT(OpenAI 的产品)是多个模型的封装。GPT-4o 及之后版本原生支持多模态:它们接受文本、图像和音频,并能生成文本、图像(通过工具调用图像模型)和音频。你可能听过的语音模式之所以可行,是因为音频是一等输入,而非通过 Whisper 转录的文本。
Gemini(Google)在理论上更进一步:原生支持文本、图像、音频和视频输入,并拥有非常长的上下文窗口。
所以“X 是多模态的吗?”很少是一个是非问题。更有用的是问:哪些模态可以输入,哪些可以输出? 对于我的截图任务,我只需要图像输入、文本输出,这是最广泛支持的组合,也正是 Claude 所提供的。
这对日常工作为什么重要
一旦你内化模型确实能“看到”图像,一系列任务就变得非常容易:
- 粘贴错误对话框的截图,而不是重新打字。
- 放入白板的照片,并要求将其中的公式转为 LaTeX。
- 展示 UI 模型,并请求对应的 HTML/CSS。
- 提交图表,询问趋势是什么——无需导出底层数据。
我今天下午做的事情——从一张中文考试成绩截图中读取四个分数并更新一个 Markdown 文件——只是这个功能的普通版本。有意思的部分在于,这个普通版本现在已经足够可靠,以至于我不再将其视为一个单独的步骤。文件路径输入,正确的分数输出。
一个小注脚
这个抽象层有一个地方可能会泄露:图像消耗 token。一张高分辨率截图可能会吃掉几千个上下文 token,超过典型会话中周围代码的消耗。如果你按 token 付费或接近上下文极限,更倾向于使用裁剪或缩小后的图像,而不是全屏 dump。但对于偶尔使用——这里一张截图,那里一张照片——这确实是向模型传递信息最自然的方式。