上下文转图片省 Token,却可能读错数字
作者用六份文档、三种输入方式进行 144 次调用,以精确匹配检查文本转图片后的信息保真度。其报告称 Token 用量最多降低 81%,但出现编造数字的问题,暴露出压缩成本与准确读取标识符之间的取舍。
完整中文译文
最近流传着一个降低 Claude Code 账单的技巧:把体积庞大的上下文(system prompt、工具文档、日志、较早的对话历史)渲染成文字密集的 PNG 图片,再用图片代替文本。图片按像素尺寸计费,而不是按里面有多少文字计费,因此,一页塞满小字的图片,消耗的 token 可能远少于同样内容的纯文本。
开源代理 pxpipe 做的正是这件事,并声称账单能降低 59%–70%。它的 README 也坦率说明,这种方法会损失信息。我想独立测出两方面的数据:它到底能省多少 token,以及模型还能从中准确读回多少内容。
六份文档,每份 10,600 到 23,200 个字符:我们的一篇文章,分别提供英文、韩文和日文版本;一个 JavaScript 文件;一份生成的 JSON API 响应;以及一份生成的、共 230 行的服务器日志。
每份文档都植入了五行内容,例如“工单 T123 使用的构建 hash 为 3f9a1c7e02bd,超时时间为 19043 ms”。对于 JSON 和日志,我还针对其中原本就有的五条记录提了问题。
采用三种方式发送:纯文本、pxpipe 自身的输出(页面图片,加上一份以文本形式列出精确标识符的“factsheet”),以及仅发送图片。
通过 Claude Code 使用 Claude Haiku 5.5、Sonnet 5.5、Opus 5.5 和 Fable 5.1,每种组合运行 2 次,共调用 144 次,按完全匹配评分。
System prompt:只根据文档回答,不确定就返回 null。
Token:确实能省
(以下为 Opus 5.5 的结果;Haiku 和 Sonnet 的差异只有几个 token。Fable 的排版更密集,token 降幅为 68%–81%。)
一种语言以文本形式发送时消耗的 token 越多,转成图片后节省的就越多。韩文和日文受益最大。
精确值:问题出在这里
使用纯文本时,每个模型都答对了所有项目。通过 pxpipe 发送后:
有三点格外明显:
标识符是从 factsheet 中读回来的,而不是从图片中读出来的。所有植入的标识符碰巧都进入了 pxpipe 的文本列表。日志里有 235 个标识符,但只有 94 个进入了列表。那些被遗漏的标识符,在四个模型合计 80 次读取中,一次都没读对。
数字是薄弱环节。这里表现最好的 Opus 5.5,在 60 项中答对了 44 项。在韩文文章中,它只答对了 10 项中的 3 项。
错误答案看起来也很像那么回事。尽管要求了“不确定就返回 null”,模型有时仍会返回一个看似合理的错误值:比如把 94392 读成 9392,而文档里根本没有这个数字;又或者像 Fable 5.1 那样,把 factsheet 中真实存在的值关联到了错误的工单上。
那么,什么时候值得用?
模型需要理解的内容,可以用图片上下文;模型需要照抄的内容,就别这么做。需要总结的长文章、需要评审的设计文档、较早的对话历史,都可以。标识符、hash、价格、行号,以及你希望模型编辑的代码,请保留为文本。
我为此加了一个按钮
考虑到较长的非英文文本能节省大量 token,我在 tokensave.app 的免费 token 计数器中加入了一个实验性的 Text → image 按钮。它会在浏览器里把文本渲染成 PNG 页面(不会上传任何内容),根据你选择的 GPT、Claude 或 Gemini 模型估算图片 token 数,并与文本 token 数并排展示,还支持复制或下载这些页面。一篇 9,000 字符的韩文文章,在 Claude 上转成图片后大约需要 1,400 个 token,而文本形式需要 8,229 个。
有两点需要说明。这个按钮使用的字体比 pxpipe 的 5×8 像素字符单元更大、也更朴素,因此节省幅度会小一些,我也还没有测量它的内容读回准确率。另外,前面的提醒同样适用:凡是必须精确的内容,都不要用它。
每个测试组合只运行了两次,总共只有六份文档,因此请把单个结果单元格视为示例。我只测量了精确回忆能力;pxpipe 自己的测试报告称,它在主旨理解和算术问题上表现不错,但我没有重复这些测试。在正常使用中,pxpipe 会把较早的对话历史和 system prompt 转成图片,最近几轮对话则保留为文本,因此整张账单能省多少,取决于你的会话情况。
完整表格、测试方法和 CSV(CC BY 4.0):tokensave.app/data/text-as-image-token-cost。语料、渲染后的页面、原始回答和脚本:GitHub 上 johnisking/token-cost-by-language 仓库的 text-as-image 目录。
如需进一步采取行动,可以考虑屏蔽此人和/或举报滥用行为。