Skip to content

图片理解(Vision)

让模型看懂图片:识别物体、读取文字、分析图表、描述场景。Shuro 在售的 GPT / Claude 模型均带 Vision 能力。

协议差异速览

Provider协议图片格式
OpenAI 系列OpenAI Chat Completionsimage_url 对象(URL 或 base64 data URI)
Claude 系列Anthropic Messagesimage 块(URL / base64)

待验证(TODO/VERIFY):生产环境优先用 base64

以下内容基于旧平台实测(2026-06),尚未在 Shuro 复测,仅供参考。

URL 模式能用但看图床:GitHub raw 等常见源正常,但部分域名(如 Wikimedia)上游拉取失败报 Failed to download image。base64 data URI 在旧平台各协议全部稳定。

OpenAI 协议

POST https://shuro.vip/v1/chat/completions

请求示例(图片 URL)

json
{
  "model": "gpt-5.4",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "https://example.com/photo.jpg"
          }
        },
        {
          "type": "text",
          "text": "请描述这张图片"
        }
      ]
    }
  ],
  "max_tokens": 4096
}

请求示例(base64)

json
{
  "model": "gpt-5.4",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABA..."
          }
        },
        {"type": "text", "text": "OCR 这张图里的文字"}
      ]
    }
  ],
  "max_tokens": 2048
}

Python 示例

python
from openai import OpenAI
import base64

client = OpenAI(api_key="<您的 API Key>", base_url="https://shuro.vip/v1")

# 本地图片 → base64
with open("photo.jpg", "rb") as f:
    b64 = base64.b64encode(f.read()).decode()

resp = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}},
                {"type": "text", "text": "这张图里有几个人?"}
            ]
        }
    ],
    max_tokens=2048
)
print(resp.choices[0].message.content)

多图同时分析

json
{
  "model": "claude-opus-4-7",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "image_url", "image_url": {"url": "https://.../img1.jpg"}},
        {"type": "image_url", "image_url": {"url": "https://.../img2.jpg"}},
        {"type": "text", "text": "对比这两张图的差异"}
      ]
    }
  ],
  "max_tokens": 4096
}

Claude 原生 Messages 协议

POST https://shuro.vip/v1/messages

请求示例

json
{
  "model": "claude-opus-4-7",
  "max_tokens": 2048,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image",
          "source": {
            "type": "url",
            "url": "https://example.com/photo.jpg"
          }
        },
        {
          "type": "text",
          "text": "请描述这张图片"
        }
      ]
    }
  ]
}

Claude base64 格式(不同于 OpenAI)

json
{
  "type": "image",
  "source": {
    "type": "base64",
    "media_type": "image/jpeg",
    "data": "/9j/4AAQSkZJRg..."
  }
}

Claude 跟 OpenAI 不互通

  • OpenAI: image_url.url 字符串带 data:image/jpeg;base64,
  • Claude: source 对象分离 media_typedata

推荐模型对比

模型强项适合
gpt-5.4 / gpt-5.5通用最强日常
gpt-5.4-mini最便宜简单分类、大量批处理
claude-opus-4-8 / claude-opus-4-7深度理解 + 长文档OCR、图表分析
claude-sonnet-4-6平衡日常

实战场景

OCR / 图片识字

"提取图片里的所有文字,按原始排版给我"

Claude 的 OCR 准确度极高,比开源 OCR 库还稳

图表分析

"看这个柱状图,告诉我:
1. 哪个月销售额最高
2. 同比增长率
3. 异常值(突高或突低的月份)"

GPT-5 系 / Claude Opus 处理图表的能力业界顶级。

UI 还原成代码

"看这个 UI 截图,生成对应的 React 组件 + Tailwind CSS"

适合 Cursor / Cline 工作流。

表格抽取(OCR + 结构化)

json
{
  "model": "gpt-5.4",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}},
        {"type": "text", "text": "抽取表格内容为 JSON 数组"}
      ]
    }
  ],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "table_rows",
      "schema": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {"type": "string"},
                "age": {"type": "integer"},
                "city": {"type": "string"}
              }
            }
          }
        }
      }
    }
  }
}

视觉 + 结构化输出 组合拳。

WARNING

旧平台实测 json_schema 不强制,Shuro 待验证(见结构化输出页首说明)。表格抽取要严格 JSON 的话,改用 tools + tool_choice: "required" 把表格行定义成工具参数。

图片格式支持

格式OpenAIClaude
JPEG / JPG
PNG
WebP
GIF (静态)
GIF (动态)❌(取第一帧)
TIFF
SVG❌(要转 PNG)
HEIC(iPhone)⚠️ 部分⚠️

大小限制

Provider单图最大单请求图数
OpenAI20 MB250+
Claude5 MB100+

超大图建议先压缩 + 用 base64 而非 URL(URL 有时效问题)。

成本

图片按分辨率折算成输入 token 计费,随模型倍率变化。具体价格见 Shuro 价格表

常见问题

图片 URL 拉不到

Error: Failed to download image from URL

可能原因:

  • URL 需要登录(如私有 GitHub)→ 改用 base64
  • URL 域名被 Anthropic / OpenAI 黑名单 → 改用 base64
  • URL 返回 HTML 不是图片 → 检查链接

Base64 数据太大被拒

Error: Request entity too large

压缩图片:

python
from PIL import Image
img = Image.open("photo.jpg")
img.thumbnail((1024, 1024))   # 缩到最长边 1024
img.save("photo_small.jpg", quality=85)

图片内容被审核

Error: content_policy_violation

某些图片(成人/暴力/政治敏感)被拒。换图片或换模型。

Claude 看不懂中文文字

试一下用更高级的模型(Opus > Sonnet > Haiku)。

跟客户端集成

主流客户端都内置 vision 支持:

客户端用法
Claude Code直接拖图到终端
Codex CLIcodex chat --image photo.jpg(TODO/VERIFY:该用法待确认)
Cursor拖图到 chat 面板
AionUI文件拖拽
Cherry Studio文件上传

参考

内容采用 CC BY-NC-ND 4.0 协议 · 禁止商业使用 / 禁止改编 / 禁止训练 AI 模型