图片理解
deepseek-v4.1 原生多模态,可直接读图:OCR 文字提取、票据解析、截图问答、图表理解、UI 元素定位。
01
能做什么
deepseek-v4.1 是原生多模态模型,图片和文字在同一次对话里一起传,不需要切换模型、不需要额外接口。
计费与纯文本一致,按 token 计。一张普通截图约折合 200~1000 个输入 token(每张上限 1024),一条消息里可以放多张。
- OCR 文字提取 — 中英文混排、手写体、票据发票、证照
- 文档解析 — 表格、合同、报告的结构化提取
- 截图问答 — 把报错截图、后台界面丢给它直接问
- 图表理解 — 折线图、柱状图的趋势与数值读取
- 空间定位 — 描述元素位置关系,可用于 UI 自动化
02
方式一:传图片链接
最简单的方式,把公网可访问的图片 URL 放进 image_url。适合图片已经在对象存储/CDN 上的场景。
curl https://api.qiyuanapi.cc/v1/chat/completions \
-H "Authorization: Bearer $OPC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1",
"messages": [{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/invoice.png"}},
{"type": "text", "text": "读出这张发票的编号和总金额"}
]
}]
}'03
方式二:传本地图片(base64)
本地文件或内网图片用这种方式,无需先上传到公网。注意 URL 前缀要写成 data:image/<格式>;base64,
import base64
from openai import OpenAI
client = OpenAI(
api_key="sk-opc-your-api-key",
base_url="https://api.qiyuanapi.cc/v1"
)
with open("invoice.png", "rb") as f:
b64 = base64.b64encode(f.read()).decode()
resp = client.chat.completions.create(
model="deepseek-v4.1",
messages=[{
"role": "user",
"content": [
{"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{b64}"}},
{"type": "text", "text": "读出图中所有文字,并说明版面结构"},
],
}],
)
print(resp.choices[0].message.content)04
多图对比
一条消息里可以放多张图,用于前后对比、差异查找、多页文档合并理解。
{
"model": "deepseek-v4.1",
"messages": [{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/before.png"}},
{"type": "image_url", "image_url": {"url": "https://example.com/after.png"}},
{"type": "text", "text": "这两张截图有哪些差异?"}
]
}]
}05
效果与成本建议
- 图片越大,折算的 token 越多。纯 OCR 场景建议先压到长边 1500px 以内,效果几乎无损、成本明显下降。
- 提问尽量具体:「读出发票号和金额」比「看看这是什么」得到的结果更准、更短。
- 需要结构化结果时,直接在提示里要求返回 JSON,并说明字段名。
- 多轮追问同一张图时,图片会随上下文重复传输 —— 命中前缀缓存后按缓存价计费,成本很低。
- 支持 png / jpeg / webp;单张建议不超过 10MB。
06
常见问题
- 图片链接必须公网可访问 —— 内网地址、需要登录的链接模型取不到,请改用 base64。
- base64 忘了写 data:image/png;base64, 前缀会报格式错误。
- 把图片放进 system 消息不生效,图片要放在 user 消息的 content 数组里。
- deepseek-v4.1 同时支持图片与文字;已下线的 deepseek-v4 / qwen3.8-flash 名字再调用会返回 404,请改用 deepseek-v4.1。