教程

Claude API Vision 图像理解完全指南:图片分析、截图解读与多图处理

Claude API 视觉能力(Vision)完整使用指南:支持的图像格式(PNG/JPEG/GIF/WebP)与大小限制、Base64 编码图像传入方式、URL 直接引用图像、多张图片同时分析、图像与文字混合输入、典型应用场景(截图调试/图表解读/文档扫描/UI分析)、图像 Token 计算方式和成本优化,以及 Python/TypeScript 完整代码示例。

2026/3/204分钟 阅读ClaudeEagle

Claude 的视觉能力让它能够「看懂」图片——分析截图、解读图表、 识别文档内容,在软件开发和内容处理中有大量实用场景。

支持的图像规格

属性规格
支持格式PNG、JPEG、GIF(静态)、WebP
最大文件大小单图 5 MB(Base64 编码前)
最大分辨率无硬性限制,但过大会自动缩放
单次请求图像数最多 20 张

两种传图方式

方式一:Base64 编码(本地文件)

Python:

python
import anthropic
import base64

client = anthropic.Anthropic()

with open("screenshot.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/png",  # image/jpeg / image/gif / image/webp
                    "data": image_data,
                },
            },
            {"type": "text", "text": "这张截图里的错误信息是什么?如何修复?"},
        ],
    }],
)
print(message.content[0].text)

TypeScript:

typescript
import Anthropic from "@anthropic-ai/sdk";
import * as fs from "fs";

const client = new Anthropic();
const imageData = fs.readFileSync("error.png").toString("base64");

const response = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{
    role: "user",
    content: [
      {
        type: "image",
        source: { type: "base64", media_type: "image/png", data: imageData },
      },
      { type: "text", text: "描述这张图片中的主要内容" },
    ],
  }],
});

方式二:URL 直接引用(在线图片)

python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "url",
                    "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/200px-PNG_transparency_demonstration_1.png",
                },
            },
            {"type": "text", "text": "这张图片里有什么?"},
        ],
    }],
)

URL 图像会被 Claude 实时下载,需要 URL 公开可访问。 私有图片推荐用 Base64 方式

多张图片同时分析

python
# 对比两张截图,找差异
with open("before.png", "rb") as f:
    before = base64.standard_b64encode(f.read()).decode("utf-8")
with open("after.png", "rb") as f:
    after = base64.standard_b64encode(f.read()).decode("utf-8")

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "这是重构前的截图:"},
            {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": before}},
            {"type": "text", "text": "这是重构后的截图:"},
            {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": after}},
            {"type": "text", "text": "对比两张图,UI 发生了哪些变化?"},
        ],
    }],
)

典型应用场景

1. 截图调试(开发利器)

python
# 结合 Claude Code:截图 → 直接分析报错
def analyze_screenshot(screenshot_path: str, question: str) -> str:
    with open(screenshot_path, "rb") as f:
        img = base64.standard_b64encode(f.read()).decode("utf-8")

    msg = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=2048,
        messages=[{
            "role": "user",
            "content": [
                {"type": "image", "source": {"type": "base64",
                  "media_type": "image/png", "data": img}},
                {"type": "text", "text": question},
            ],
        }],
    )
    return msg.content[0].text

# 使用:截图后直接问 Claude
result = analyze_screenshot(
    "browser-error.png",
    "这个浏览器控制台的错误是什么原因?对应的代码应该如何修改?"
)

2. 图表数据提取

你:[上传折线图截图] 把这张图表里的数据提取成 CSV 格式 Claude: month,sales 2025-01,1234 2025-02,1456 ...(准确提取坐标数据)

3. UI 设计分析

python
# 分析竞品 UI
msg = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    messages=[{
        "role": "user",
        "content": [
            {"type": "image", "source": {"type": "url", "url": competitor_screenshot_url}},
            {"type": "text", "text": "分析这个登录页面的 UX 设计:用了哪些设计模式?有什么可以改进的地方?"},
        ],
    }],
)

4. 文档/表格识别(OCR+理解)

python
# 识别手写笔记或扫描文档
msg = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=4096,
    messages=[{
        "role": "user",
        "content": [
            {"type": "image", "source": {"type": "base64",
              "media_type": "image/jpeg", "data": document_b64}},
            {"type": "text", "text": "识别并整理这份扫描文档的内容,输出 Markdown 格式"},
        ],
    }],
)

图像 Token 计费

图像占用的 Token 数取决于尺寸(尺寸越大 Token 越多):

图像尺寸大约 Token 数
256×256~170 tokens
512×512~~340 tokens
1024×1024~1300 tokens
1568×1568(最大)~1600 tokens

图像 Token 以输入 Token 计费。 优化建议:提交前将图像压缩到 1024px 以内,可节省 50%+ 费用。


来源:Anthropic 官方文档 - docs.anthropic.com/en/docs/build-with-claude/vision

相关文章推荐

教程Claude Cache Diagnostics 教程:定位 Prompt Cache Miss 的真正原因Claude Cache Diagnostics 解决 prompt cache miss 难排查问题。通过传入上一次 response id,API 会比较请求 fingerprint,告诉你 model/system/tools/messages 哪个部分破坏了缓存 prefix。2026/6/6教程Claude MCP Tunnels 指南:不用开放入站端口,也能把私有 MCP 服务接给 ClaudeMCP Tunnels 是 Anthropic 面向企业内网 MCP 服务的 beta 能力,通过 outbound-only 连接、cloudflared、proxy、inner TLS 和 OAuth,让 Claude 安全访问私有工具与数据源。2026/6/6教程Claude Mid-conversation System Messages 使用指南:长会话不再破坏 Prompt CacheClaude Opus 4.8 新增 mid-conversation system messages,可在长会话中途追加系统级指令,不改顶层 system prompt,从而保持缓存 prefix 命中,降低 Agent 循环成本。2026/6/6教程Claude Citations 完整指南:让 AI 回答带可验证引用,适合 RAG 与文档问答Claude Citations 官方能力中文整理:如何启用 citations.enabled、支持的文档类型、PDF 页码引用、文本字符索引、custom content block 索引、RAG chunk 粒度控制、与 Prompt Caching 兼容性和 Structured Outputs 不兼容限制。2026/5/21教程Claude Batch Processing 完整指南:批量处理任务如何节省 50% API 成本Claude Batch Processing 官方能力中文整理:为什么批处理能省钱、如何创建 batch、custom_id 设计、轮询状态、下载结果、处理失败请求,以及适合大规模分类、摘要、翻译、数据清洗的任务模式。2026/5/21教程Claude Prompt Caching 完整指南:降低长上下文成本与延迟的 API 实战Claude Prompt Caching 官方能力中文整理:适合缓存的内容、cache_control 使用方法、缓存断点策略、长文档和工具定义复用、成本/延迟收益、常见坑和生产环境落地建议。2026/5/21