Skip to main content
API易 上绝大多数主流对话模型都能「看图」:OCR 提取文字、数物体、描述场景、对比多张图。本页给出 2026-10-11 (UTC+8) 的实测支持清单、一张图要花多少 tokens、四种调用写法各自能走哪些模型,以及最常见的报错。
先看这三条:
  1. 通用写法是 OpenAI 兼容的 image_url:{"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}},实测 22 个视觉模型全部可用。Responses、Anthropic 两种写法只有部分模型能走,见「四种写法支持哪些模型」。
  2. deepseek-v4-pro、glm-5.3 等纯文本模型不吃图:请求照样返回 200,但图片被丢掉,模型只会回答「看不到」。判断图片有没有进模型,看响应里的 usage.prompt_tokens。
  3. 优先用 Base64:公网直链要由上游去下载,图床慢、有防盗链、或响应头缺 Content-Length(Qwen 会直接 400)都会失败。

识别图片 · API易 在线工具

不想写代码?网页端直接上传图片(支持多图联合分析),内置万物识别、商品标题、五点描述、属性分析、OCR 提取等模板,可切换模型对比效果,填入 API易 令牌即可使用。

视频理解 API

需要分析视频?看视频理解的支持清单与写法。

让 AI Agent 帮你接入

复制这段提示词,粘贴给 Codex / Claude Code / Cursor

它会先抓本页的纯文本版(任意文档页地址后加 .md),再按你项目的技术栈写代码——通用 image_url 写法、大图先缩放、用 prompt_tokens 确认图片真的进了模型这几个高频问题已经写死在要求里。

帮我在当前项目里接入 / 排查图像理解:把图片交给多模态模型,做 OCR 文字提取、计数、场景描述或多图对比。

先读文档再动手:抓 https://docs.apiyi.com/api-capabilities/vision-understanding.md 拿到本页纯文本版。

  1. 端点与写法:默认走 OpenAI 兼容的 …

共 9 条接入要求,点下方按钮复制完整版

支持的模型

以下结论来自 2026-10-11 (UTC+8) 的实测:同一张 1200×760 的中英混排订单图(含表格)要求逐字 OCR,另测数图形个数、两图找不同、公网直链,并用一张空白图做对照,排除「没看也能答」。 gemini-3.1-flash-lite 与 gpt-5.4-mini 也能识图、OCR 全对,但数图形个数会数错(实测分别 0/3、1/3 次数对),计数类任务不建议用。qwen-vl-ocr 是 OCR 专用模型,只输出表格、表格外的文字不输出,多图也只认第一张,只适合纯表格 / 证件类场景。
模型价格与官网对齐,且可能随官网调整;上表仅供参考,具体以顶部导航「模型价格」栏目为准:模型价格。

不支持图片的模型

判断其他模型吃不吃图,以模型详情页的「输入模态」为准,详见 文本+出图能不能一个接口。

四种写法支持哪些模型

新项目一律用 OpenAI 兼容 chat 写法,换模型只改模型名。Responses 适合已经在用 OpenAI Responses SDK 的项目;Anthropic 写法适合 Claude 生态(如 Claude Code、Anthropic SDK);Gemini 原生适合已经在用 google-genai SDK 的项目。

快速开始:通用写法(image_url)

本地图片(Base64,推荐)

公网图片 URL

多图对比

多张图按顺序放多个 image_url 块,在提示词里用「图 1」「图 2」指代:

curl

为什么推荐 Base64:图片 URL 方式需要上游实时下载该图片,图床响应慢、有防盗链或访问限制都会失败;Qwen 系还要求图床响应头带 Content-Length(部分 CDN 用分块传输不带这个头,实测会报 Missing Content-Length of multimodal url)。Base64 把图片直接放进请求体,不依赖任何外部下载。Base64 体积约为原图的 1.33 倍,大图先缩放再编码,见「大图先缩放」。

其他写法

OpenAI Responses(input_image)

适合已经在用 OpenAI Responses SDK 的项目。只能调 GPT、Grok、Qwen3.8、Kimi、MiniMax、DeepSeek Vision,Gemini / Claude / Seed 会报 400。

Anthropic Messages(image)

适合 Claude 生态(Anthropic SDK、Claude Code 等),端点 https://api.apiyi.com。base64 方式可调 Claude、Gemini、GPT、Qwen、Kimi、MiniMax;url source 只有 Claude 能用(Gemini 会静默丢图)。

Gemini 原生格式(inline_data)

已经在用谷歌官方 google-genai SDK 的项目,把 base_url 换成 https://api.apiyi.com 即可:
REST 写法:POST https://api.apiyi.com/v1beta/models/gemini-3.8-flash:generateContent,请求头 x-goog-api-key: YOUR_API_KEY,图片放在 contents[].parts[] 的 {"inline_data": {"mime_type": "image/png", "data": "<BASE64>"}} 里。更多原生用法见 Gemini 原生格式调用。

大图先缩放

各家对大图的处理差别很大。实测一张 9000×6000、约 10MB 的 JPEG:
上传前把长边缩到 2048px 左右:实测把上面那张图缩到 2048×1365 后,表中 8 个模型全部通过、OCR 全对,一张图约 700~3700 tokens,gpt-6-sol 从 63658 降到 3320。Claude 返回 429 时先看报错正文,如果是 image exceeds 就是图太大,重试不会成功。

常见错误

图片 URL 下载超时

使用图片 URL 方式时,如果收到如下错误:
这表示上游在拉取该图片 URL 时下载超时,与模型、密钥、额度均无关。常见原因:图床响应慢或对部分地区不友好、图片过大、URL 设有防盗链或需要登录。 解决方法:改用 Base64(推荐,彻底绕开下载环节);或更换为响应更快、可公开访问的直链;或压缩图片后重试。

Missing Content-Length of multimodal url(Qwen)

Qwen 系模型要求图床的响应头带 Content-Length。部分 CDN(如 Cloudflare)以分块方式返回图片、不带这个头,就会报这个错;同一张图换成对象存储直链或 Base64 即可。

invalid base64 data(URL 误放进 Base64 字段)

如果收到如下 400 错误(关键特征是 invalid base64 data,不同模型文案略有差异):
通常是把图片 URL 拼进了 data URI 的 Base64 数据位:
data:image/...;base64, 前缀后面必须是图片文件本身的 Base64 编码字符串。URL 方式和 Base64 方式是两种互斥的传参形式,不能混拼:
自检建议:发送前判断图片来源——字符串以 http 开头就走 URL 方式,否则才做 Base64 编码并拼 data URI。合法的 Base64 字符串不会包含 ://、? 等字符,若在 base64, 之后看到这些字符,基本可以断定是把链接拼进去了。

声明的图片格式与实际格式不符(media type mismatch)

如果收到如下 400 错误(关键特征是 The image was specified using the image/png media type, but the image appears to be a image/jpeg image):
意思是:data URI 里声明图片是 PNG(data:image/png;base64,...),上游解码后检查文件头,发现实际内容是 JPEG,于是拒绝。常见诱因是按扩展名推断格式(文件被改过后缀)、或代码里写死了 image/png。
是否校验取决于模型走的上游通道:2026-10-11 (UTC+8) 实测把 JPEG 声明成 PNG,22 个视觉模型全部正常识别;但 Claude 系经 Bedrock 通道时会报上面这个错。按「声明必须与内容一致」来写代码,在任何通道上都不会踩坑。
解决方法:按文件头判断真实格式再拼 data URI,或者像「大图先缩放」里的函数那样统一用 PIL 转成 JPEG:
file xxx.png(macOS / Linux 命令行)一秒看出文件真实格式;Python 里 Image.open(path).format 也能拿到。

进阶技巧

确认图片真的进了模型

看响应里的 usage.prompt_tokens:一张 1200×760 的图在各家约 900~1300 tokens(DeepSeek Vision 约 570);如果只比纯文本多几个甚至没变,说明图片被丢掉了。这种情况出现在纯文本模型(deepseek-v4-pro、glm-5.3),以及 Grok 走 Anthropic 端点、Gemini 走 Anthropic url source 时。
没收到图的模型可能编答案。实测在不带图的情况下要求「逐字提取图片文字」,gemini-3.8-flash 6 次中有 1 次编出了一整张并不存在的表格,其余模型都如实说看不到。所以批量流程里不要只看回答,先用 prompt_tokens 确认图片已送达。

detail 参数

image_url 里的 detail: "low" 只有部分模型认:gpt-5.4-mini(1147 → 233 tokens,但小字开始读错)、Seed(1340 → 602 tokens,OCR 仍全对);GPT-6 / 5.6、Gemini、Claude、Qwen 会忽略。想省 tokens,更通用的办法是自己先缩小图片。

参数说明

chat 端点上,max_tokens、temperature 在 GPT(含 GPT-6)、Claude、Gemini 上都能正常使用(实测 temperature=0.3 全部通过)。MiniMax-M3 会把思考过程 <think>...</think> 放在正文里,需要自行剥离。

常见任务的提问思路

同一张图,换提示词就能完成不同任务,无需改代码:
  • OCR:「逐字提取图片里的所有文字,表格用 Markdown 表格输出」
  • 计数 / 结构化:「数一数每种物体各有几个,只输出 JSON:{"物体": 数量}」
  • 商品分析:「识别商品类型和品牌,列出主要卖点与适合人群」
  • 多图对比:「下面依次是图 1 和图 2,逐项说出不同之处」
  • 图表解读:「读出图表的坐标轴、数据趋势和最大最小值」
医疗影像、证件、人身安全相关的识别结果仅供参考,重要决策需人工复核;不要上传含敏感个人信息的图片。

常见问题

本页实测的 22 个视觉模型都能用:Gemini、GPT、Claude、Grok、Seed、Qwen、Kimi、MiniMax、DeepSeek Vision。deepseek-v4-pro、glm-5.3 等纯文本模型不能。其他模型以模型详情页的「输入模态」为准。
先看响应里的 usage.prompt_tokens:只有几十说明图片没进模型。常见原因:① 选了纯文本模型;② 用 Anthropic 端点调 Grok,或用 Anthropic url source 调 Gemini(都会静默丢图);③ 公网直链上游拉不到。换成 chat image_url + Base64 基本都能解决。
多半是用了 Responses 或 Anthropic 写法——它们只支持部分模型(见「四种写法支持哪些模型」)。改成 OpenAI 兼容 chat 的 image_url 写法即可在各家通用。
先看报错正文。如果是 image exceeds 10 MB maximum,是图片太大(按 Base64 后的体积算),重试不会成功,缩放到长边 2048px 左右再传即可。
多半是单张图片像素过大(几千万像素的原图),原厂会在高峰期排队几分钟后拒绝,或直接返回 patches ... exceeding the limit。重试无效,缩到长边 2048px 再传即可。实测与判断方法见 识图请求一直超时,是图片太大了吗?。
GPT 系按图块计费,原图越大 tokens 越多:实测一张 9000×6000 的图在 gpt-6-sol 上记了 63658 个输入 tokens。上传前缩放到长边 2048px 左右,实测同一张图在 gpt-6-sol 上降到 3320 tokens,各家约 700~3700 tokens。
JPEG、PNG、GIF、WebP 等主流格式都可以;手机相机拍出的 MPO(扩展名仍是 .jpg)实测也能识别。最稳的做法是统一用 PIL 转成 JPEG 再传。

相关资源

模型价格

查看全部模型与最新定价

视频理解 API

视频内容识别、场景描述与时间戳定位

Gemini 原生格式

原生格式的流式、推理预算等用法

文本+出图能不能一个接口

如何判断模型支持哪些输入模态