你把一张手机截图丢给 AI,让它"看看这段报错",它可能默默记了你 3000 个 token。你以为发的是一张图,模型算的是一片字海。海外有工程师发现,团队账单从纯文本切到多模态 RAG 后,一夜涨了 5–10 倍——而其中绝大部分,是一张张没人盯着的图片在偷偷计费。
今天拆穿多模态账单里四道把图片当碎钞机的暗门。每一道都附带官方计费规则、具体数字和可立刻执行的代码级操作。按这四道走,海外案例显示能把多模态花费砍掉 40%–80%。
这是信息差的第一层——大多数人从没算过图片的 token,因为图片不像文字那样"看得见字数"。但三家主流厂商给图片计费,用的是完全不同的两套底层逻辑,算错的人会多付一个数量级。
Claude(Anthropic)——按面积算,像素越多越贵
官方规则(platform.claude.com):图片送进来后,会被等比缩放到长边不超过 1568 像素的框里(只缩不放),然后按这个公式计费:
图片 token ≈ (width × height) / 750
举例:一张 1092×1092 的图 ≈ 1590 token;一张 1568×1568 满框图 ≈ 3275 token。
OpenAI(GPT-4o / GPT-5 系列)——按 tile 切片算
官方规则(PyPI 上的 openai-vision-cost 有现成实现):图片被切成 512×512 的瓦片(tile),每片 170 token,外加 85 token 基底:
high detail: token = 85 + 170 × tiles
low detail: 固定 85 token(不管多大)
举例:1024×1024 high detail = 4 片 → 85 + 4×170 = 765 token;一张 4K 大图可能切出 10+ 片,冲到 2000–3000 token。
关键反差:同一张 4K 图,Claude 缩放到 1568 边后 ≈ 3275 token;OpenAI high detail 切完可能 ≈ 2800 token;但 OpenAI 如果切 detail:"low",直接 85 token 收摊。差出 38 倍。
下面这张决策树,是多模态请求 token 流向的全景——四道暗门就藏在这个流程里:
flowchart TD
A[原始图片上传] --> B{暗门1: 长边卡 1568?<br/>原图直送}
B -->|没卡| BAD[4000×3000 缩放后<br/>仍吃满 ~5000 token]
B -->|已 resize| C{暗门2: detail 参数<br/>默认 high}
C -->|要看细节| D[high: 85+170×tiles]
C -->|只判断有无/类型| E[low: 固定 85 token<br/>省 90%+]
D --> F{暗门3: 内容是文档/截图?}
F -->|当图喂| G[整页 1000-3000 token]
F -->|先 OCR| H[转文本 ~200 token]
E --> I{暗门4: 视频/多帧?}
G --> I
H --> I
I -->|全帧灌入| J[token × 帧数 爆炸]
I -->|抽关键帧| K[1-2fps 抽样]
style BAD fill:#fdd
style E fill:#dfd
style H fill:#dfd
style K fill:#dfd
症状:手机拍的照片 4000×3000,用户上传截图 2560×1440,全都不经处理直接塞进 API。
为什么烧钱:Claude 虽然会自动缩放到 1568,但 Claude 缩放前的"原始大图"在某些链路里仍会按高分辨率过一遍;更糟的是很多人用第三方 SDK 或把图传给同时支持 vision 的小模型(如某些 OpenAI 兼容端点),这些端点不一定会帮你缩,4K 图就按 4K 切 tile,token 直接×4。
解法:在客户端做一次 resize,长边锁死 1568(Claude)或 2048(OpenAI 上限),质量降到 85。一行 Pillow:
from PIL import Image
img = Image.open("photo.jpg")
img.thumbnail((1568, 1568)) # 等比缩,长边≤1568
img.save("photo_s.jpg", quality=85) # 质量85肉眼几乎无差
省钱账:一张 4K 图,缩放前 high detail ≈ 2800 token,缩到 1568 后 ≈ 765 token。假设 GPT-4o 输入按 \$2.5/1M token 算,单图从约 \$0.007 降到约 \$0.002,一张省 70%。日处理 10 万张图的业务,一年省下的钱够雇一个人。
这是绝大多数人忽略的第一层——预处理发生在你这边,不花 API 的钱。
detail 默认 high,但 90% 请求根本不看细节症状:你让模型"判断这张图里有没有猫"、"这是收款码还是付款码"、"提取图里的金额数字"。这类任务根本不需要高清,但请求默认走 detail:"high",为每张图付 765 token。
解法:给不需要细节的请求显式指定 detail:"low",固定 85 token,省 90%+。
# OpenAI 风格
client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "图里有没有猫?只回有/没有"},
{"type": "image_url",
"image_url": {"url": url, "detail": "low"}} # ← 一行省90%
]
}]
)
进阶:搞个两级路由。第一级用 low + 便宜模型做粗判(有没有/是什么类),命中后再用 high + 强模型细看。这正是之前聊过的"旗舰只该当指挥"思路在多模态上的落地——80% 的图根本不配上 high detail。
场景适配:
| 任务 | detail 选什么 |
|------|--------------|
| 分类、有无判断、OCR 数字 | low(85 token) |
| 看图标 UI、读图表数据 | auto 或 high |
| 医学/质检/精密识别 | high,且别省 |
症状:PDF 扫描件、长截图、合同页,直接整页当 image 丢给模型。一页 A4 扫描图轻松 1500–3000 token,而你要的可能只是其中一段文字。
为什么是暗门:图片里大部分是白纸黑字的文字,用 vision 编码器去"看文字"是杀鸡用牛刀——文字本该走文本通道(便宜得多)。视觉 token 是给"图像语义"(形状、颜色、布局)准备的,不是给纯文字准备的。
解法:文档先 OCR 成文本再喂。
- 本地/免费:tesseract、PaddleOCR,中文识别已经很能打;
- 结构化:unstructured 能把 PDF 拆成"文字+表格+图",文字走文本,只有真图走 vision;
- 云:各家文档解析 API,按页计费远比 vision token 便宜。
省钱账:一页扫描文档,当图喂 ≈ 2000 token;OCR 成文本 ≈ 200 token(同样内容,文字 token 密度高得多)。省 90%,而且 OCR 文本还能命中 prompt caching,进一步复利。
判断标准:如果图里 90% 以上是文字,就别当图喂,OCR 它。如果图里是流程图、UI、照片,才值得 vision。
症状:做视频理解、监控摘要、UI 录屏分析时,把视频逐帧(甚至 30fps)拆成图全灌进 API。一段 1 分钟视频 = 1800 张图 × 765 token ≈ 137 万 token,一次请求烧掉几美元到几十美元。
为什么是暗门:相邻帧 90% 画面是重复的,全送等于为同样的信息反复买单。而模型对视频本就有抽帧建议(如 1fps 或更稀疏)。
解法: 1. 降帧率:按 1fps(每秒 1 帧)甚至按场景抽,而非 30fps; 2. 关键帧检测:用 PySceneDetect 找镜头切换点,只在画面发生变化时送一帧; 3. 首帧 + 变化帧:固定背景只送一次,后续只送差异区域(ROI)。
# 粗暴版:每秒1帧
import cv2
cap = cv2.VideoCapture("video.mp4")
fps = cap.get(cv2.CAP_PROP_FPS)
for i in range(0, int(cap.get(7)), int(fps)): # 每隔1秒
cap.set(cv2.CAP_PROP_POS_FRAMES, i)
_, frame = cap.read()
send_to_api(frame) # 而非每帧都送
省钱账:30fps → 1fps,token 直接砍 97%;再叠关键帧检测,监控类场景常常能砍到 1% 以内。
学术圈这两年也在卷这个方向——arXiv 上的 token reduction 论文(如 ToFu、Less is More)研究的就是"哪些视觉 token 是冗余的、可以 prune/merge 掉"。GitHub 上有人维护了两个合集:awesome-llm-token-optimization 和 Awesome-Collection-Token-Reduction,想深挖可以去抄。
| 维度 | 大多数人(你在做的) | 信息差玩家(该做的) |
|---|---|---|
| 图片计费 | "图片就按张算吧" | 知道 Claude 按面积、OpenAI 按 tile,公式能背 |
| 上传前 | 原图直送 | 客户端 resize 锁 1568、质量 85 |
| detail 参数 | 永远默认 high | 分类/OCR 任务切 low,省 90% |
| 文档/截图 | 整页当图喂 | 90% 文字就先 OCR,省 90% |
| 视频 | 逐帧灌入 | 1fps + 关键帧,砍 97% |
| 测量 | 账单涨了不知道为啥 | 每张图算 token,盯图像占比 |
一句话:纯文本时代你优化的是"怎么问",多模态时代你还得优化"怎么喂图"。后者是全新的成本黑洞,且国内几乎没人系统讲过。
thumbnail((1568,1568)) + quality=85,零 API 成本,立刻省 60–70%。detail 改成 low,一刀省 90%。unstructured 转文本,再决定要不要 vision。把第 2、3、4 步叠起来,海外案例显示多模态账单普遍能砍到原来的 1/5 到 1/3。这不靠换便宜模型,不靠牺牲质量,纯粹是把"喂图的方式"从粗放改成精细——典型的认知差红利。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
