多模态API调用教程:图片理解、OCR、视频分析

过去大模型只能“读字”,现在它能“看图”了。给 GPT-5.5 一张发票照片,它能直接读出金额和日期;给 Gemini 3.5 Pro 一张产品图,它能写出营销文案;给 Claude Opus 4.8 一张架构图,它能讲解设计思路。这就是多模态(Multimodal)能力——模型同时理解文本和图像。

多模态让 AI 应用场景一下子拓宽了:票据识别、医疗影像辅助、商品审核、内容合规、图表分析……本文从图片输入讲起,覆盖 OCR、图表理解、视频分析,给出可直接复用的 Python 代码。

一、多模态模型能力概览

2026 年主流多模态模型各有侧重:

调用方式上,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}}
        ]
    }]
)

对于长视频,建议先抽帧成关键图片序列再用图片接口分析,成本更低、可控性更强。

七、最佳实践与避坑

  1. 控制图片尺寸:大图先压缩到 1568px 以内长边,既省 token 又不影响识别。
  2. 选对格式:照片用 JPEG,含文字/线条的用 PNG,避免压缩失真影响 OCR。
  3. prompt 要具体:“识别这张图”太泛,“提取发票金额并输出 JSON”才精准。
  4. 低温度保稳定:OCR、提取类任务 temperature 设 0,避免每次结果不同。
  5. 处理失败重试:复杂图片偶尔识别错,可让模型“再检查一遍”或换模型重试。
  6. 注意成本:图片按 token 计费,一张图约几百到上千 token,批量处理要做好缓存。
  7. 隐私合规:含敏感信息的图片走 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 →