多模态API调用教程:图片理解、OCR、视频分析
过去大模型只能“读字”,现在它能“看图”了。给 GPT-5.5 一张发票照片,它能直接读出金额和日期;给 Gemini 3.5 Pro 一张产品图,它能写出营销文案;给 Claude Opus 4.8 一张架构图,它能讲解设计思路。这就是多模态(Multimodal)能力——模型同时理解文本和图像。
多模态让 AI 应用场景一下子拓宽了:票据识别、医疗影像辅助、商品审核、内容合规、图表分析……本文从图片输入讲起,覆盖 OCR、图表理解、视频分析,给出可直接复用的 Python 代码。
一、多模态模型能力概览
2026 年主流多模态模型各有侧重:
- GPT-5.5 / GPT-5.4:图片理解强,OCR、图表、推理均衡,通用首选。
- Gemini 3.5 Pro:原生支持图片和视频,长视频分析能力突出。
- Claude Opus 4.8:图文混合文档(如带图的技术文档)理解强,长上下文。
调用方式上,OpenAI 兼容接口已成为事实标准——把图片以 base64 或 URL 形式放进 messages 即可。通过 EnlyAI 统一接入,一套代码切换不同多模态模型。
二、图片输入的两种方式
方式1:base64 编码(本地图片)
本地图片或不想公开的图片,转成 base64 字符串直接传给 API。适合小图、隐私图片。
import base64
from openai import OpenAI
client = OpenAI(api_key="sk-your-enlyai-key", base_url="https://enlyai.com/v1")
# 读取图片并转 base64
with open("invoice.png", "rb") as f:
img_b64 = base64.b64encode(f.read()).decode()
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "请识别这张发票上的金额、日期、发票号,输出 JSON。"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{img_b64}"}}
]
}],
temperature=0.1
)
print(resp.choices[0].message.content)
方式2:图片 URL(公网图片)
图片已托管在公网(如 OSS、CDN),直接传 URL,API 自行下载。适合大图、批量处理,省去 base64 传输开销。
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这张图里有什么?用中文描述。"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}]
)
提示:通过 EnlyAI 统一接入,调用 GPT-5.5、Gemini 3.5 Pro、Claude Opus 4.8 的多模态接口方式完全一致,只需改 model 名称即可切换,一个 key 搞定所有视觉模型。
三、OCR 文字识别实战
多模态模型做 OCR 比传统 OCR 引擎更聪明:能理解版式、纠正错字、提取结构化字段。下面是一个发票信息提取的完整示例:
def extract_invoice(image_path):
with open(image_path, "rb") as f:
img_b64 = base64.b64encode(f.read()).decode()
prompt = """你是一个发票识别专家。请从图片中提取以下字段,输出严格 JSON:
{
"invoice_no": "发票号码",
"date": "开票日期 YYYY-MM-DD",
"amount": "金额(数字)",
"buyer": "购买方名称",
"seller": "销售方名称"
}
无法识别的字段填 null,不要输出 JSON 以外的内容。"""
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": prompt},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{img_b64}"}}
]
}],
temperature=0,
response_format={"type": "json_object"}
)
return resp.choices[0].message.content
import json
result = json.loads(extract_invoice("invoice.png"))
print(result)
关键技巧:用 response_format 强制 JSON 输出,用 temperature=0 保证稳定,prompt 里给出 schema 示例。这样提取的字段可直接入库。
四、图表与截图理解
多模态模型能“看懂”图表,这是传统 OCR 做不到的。比如给它一张销售折线图,让它总结趋势:
resp = client.chat.completions.create(
model="gemini-3.5-pro", # Gemini 图表理解强
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这是某产品季度销售折线图。请分析:1)整体趋势 2)最高和最低点 3)给出3条经营建议。"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{chart_b64}"}}
]
}]
)
对于 UI 截图,模型能识别按钮、表单、布局,可用于自动化测试、无障碍审查、设计稿转代码等场景。
五、多图对比与推理
一次请求可以传多张图片,让模型做对比。比如商品质检:传标准图和实拍图,让模型判断是否合格。
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "第一张是标准品,第二张是实拍品。判断实拍品是否有瑕疵,输出 合格/不合格 及原因。"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{std_b64}"}},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{real_b64}"}}
]
}]
)
六、视频分析(Gemini 优势领域)
Gemini 3.5 Pro 原生支持视频输入,适合监控分析、会议纪要、教学内容提取。视频通常通过 File API 上传后引用:
# 视频分析概念示例(Gemini 原生接口风格)
# 实际通过 EnlyAI 调用时,视频需先上传获取引用
resp = client.chat.completions.create(
model="gemini-3.5-pro",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这段会议视频里讨论了哪些议题?列出关键决议。"},
{"type": "image_url", "image_url": {"url": video_file_uri}}
]
}]
)
对于长视频,建议先抽帧成关键图片序列再用图片接口分析,成本更低、可控性更强。
七、最佳实践与避坑
- 控制图片尺寸:大图先压缩到 1568px 以内长边,既省 token 又不影响识别。
- 选对格式:照片用 JPEG,含文字/线条的用 PNG,避免压缩失真影响 OCR。
- prompt 要具体:“识别这张图”太泛,“提取发票金额并输出 JSON”才精准。
- 低温度保稳定:OCR、提取类任务 temperature 设 0,避免每次结果不同。
- 处理失败重试:复杂图片偶尔识别错,可让模型“再检查一遍”或换模型重试。
- 注意成本:图片按 token 计费,一张图约几百到上千 token,批量处理要做好缓存。
- 隐私合规:含敏感信息的图片走 base64 不走公网 URL,确认服务商数据处理协议。
八、用 EnlyAI 统一接入多模态模型
不同多模态模型各有所长,实际项目常需要组合使用。通过 EnlyAI 统一接入,一套代码、一个 key 调用所有视觉模型,按场景选最优模型:
client = OpenAI(api_key="sk-your-enlyai-key", base_url="https://enlyai.com/v1")
def smart_vision(image_b64, task):
# 按任务类型选模型
model_map = {
"ocr": "gpt-5.5", # OCR 精度高
"chart": "gemini-3.5-pro", # 图表理解强
"doc": "claude-opus-4-8", # 图文文档
"cheap": "gpt-5.4-mini" # 简单识别省钱
}
model = model_map.get(task, "gpt-5.5")
return client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": [
{"type": "text", "text": "描述这张图"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_b64}"}}
]}]
)
统一接入还能实现故障转移:某个视觉模型波动时,改一个字符串切到备用模型,业务不中断。
总结
多模态 API 把大模型的能力从“读字”扩展到“看图看视频”,打开了票据识别、图表分析、质检、内容审核等一大批场景。掌握 base64 与 URL 两种图片输入方式、结构化输出的 prompt 技巧、按场景选模型的方法,你就能搭建出实用的视觉 AI 应用。
而把多模态模型调用统一交给 EnlyAI,你就能在 GPT-5.5、Gemini 3.5 Pro、Claude Opus 4.8 间灵活切换,用一套代码覆盖所有视觉场景,把精力放在业务逻辑而非多平台对接上。
想用一套代码调用所有多模态大模型?
EnlyAI 提供 OpenAI 兼容的统一接口,一个 key 调用 GPT-5.5、Gemini 3.5 Pro、Claude Opus 4.8 的多模态能力,支持图片理解、OCR、视频分析,注册即送免费额度。
立即注册 EnlyAI →