Claude Platform Docs
  • 消息
  • 托管智能体
  • 管理

Search...
⌘K
第一步
Claude 简介快速入门
使用 Claude 构建
功能概览使用 Messages API停止原因与回退拒绝与回退回退额度
模型能力
扩展思考自适应思考努力程度任务预算(测试版)快速模式(研究预览)结构化输出引用流式传输消息批量处理搜索结果流式传输拒绝多语言支持嵌入
工具
概览工具使用的工作原理教程:构建使用工具的智能体定义工具处理工具调用并行工具使用工具运行器(SDK)严格工具使用工具使用与提示缓存服务器工具故障排除网页搜索工具网页抓取工具代码执行工具顾问工具记忆工具Bash 工具计算机使用工具文本编辑器工具
工具基础设施
工具参考管理工具上下文工具组合工具搜索编程式工具调用细粒度工具流式传输
上下文管理
上下文窗口压缩上下文编辑提示缓存对话中系统消息构建编排模式缓存诊断(测试版)令牌计数
处理文件
Files APIPDF 支持图像与视觉
技能
概览快速入门最佳实践企业技能API 中的技能
MCP
远程 MCP 服务器MCP 连接器
云平台上的 Claude
Amazon BedrockAmazon Bedrock(旧版)AWS 上的 Claude PlatformMicrosoft FoundryVertex AI

Log in
PDF 支持
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
消息/处理文件

PDF 支持

使用 Claude 处理 PDF。从您的文档中提取文本、分析图表并理解视觉内容。


此功能符合零数据保留(ZDR)的条件。当您的组织签订了 ZDR 协议时,通过此功能发送的数据在 API 响应返回后不会被存储。

您可以向 Claude 询问您提供的 PDF 中的任何文本、图片、图表和表格。一些示例用例:

  • 分析财务报告并理解图表/表格
  • 从法律文档中提取关键信息
  • 文档翻译辅助
  • 将文档信息转换为结构化格式

开始之前

检查 PDF 要求

Claude 可处理任何标准 PDF。请确保您的请求大小符合以下要求:

要求限制
最大请求大小32 MB(因平台而异)
每个请求的最大页数600(对于具有 20 万令牌上下文窗口的模型为 100)
格式标准 PDF(无密码/加密)

这两个限制均针对整个请求负载,包括与 PDF 一起发送的任何其他内容。对于大型 PDF,建议使用 Files API 上传并通过 file_id 引用,以保持请求负载较小。



内容密集的 PDF(包含大量小字体页面、复杂表格或大量图形)可能在达到页数限制之前就填满上下文窗口。即使使用 Files API,包含大型 PDF 的请求也可能在达到页数限制之前失败。请尝试将文档拆分为多个部分;对于大文件,由于每个页面都作为图像处理,对嵌入的图像进行降采样也会有所帮助。

由于 PDF 支持依赖于 Claude 的视觉能力,因此它受到与其他视觉任务相同的限制和注意事项的约束。

支持的平台和模型

PDF 支持可在 Claude API、AWS 上的 Claude Platform、Amazon Bedrock(参见 Amazon Bedrock PDF 支持)、Vertex AI 和 Microsoft Foundry 上使用。所有活跃模型均支持 PDF 处理。

Amazon Bedrock PDF 支持

通过 Bedrock 的 Converse API 使用 PDF 支持时,有两种不同的文档处理模式:



重要提示: 要在 Converse API 中访问 Claude 的完整视觉 PDF 理解能力,您必须启用引用(citations)。如果未启用引用,API 将回退到仅进行基本文本提取。了解更多关于使用引用的信息。

文档处理模式

  1. Converse 文档聊天(原始模式 - 仅文本提取)

    • 提供 PDF 的基本文本提取
    • 无法分析 PDF 中的图像、图表或视觉布局
    • 3 页 PDF 大约使用 1,000 个令牌
    • 未启用引用时自动使用此模式
  2. Claude PDF 聊天(新模式 - 完整视觉理解)

    • 提供 PDF 的完整视觉分析
    • 可以理解和分析图表、图形、图像和视觉布局
    • 将每个页面同时作为文本和图像处理,以实现全面理解
    • 3 页 PDF 大约使用 7,000 个令牌
    • 在 Converse API 中

主要限制

  • Converse API:视觉 PDF 分析需要启用引用。目前没有在不启用引用的情况下使用视觉分析的选项(与 InvokeModel API 不同)。
  • InvokeModel API:提供对 PDF 处理的完全控制,无需强制启用引用。

常见问题

如果在使用 Converse API 时 Claude 无法看到您 PDF 中的图像或图表,您可能需要启用引用标志。如果未启用,Converse 将回退到仅进行基本文本提取。



这是 Converse API 的一个已知限制。对于需要在不启用引用的情况下进行视觉 PDF 分析的应用程序,请考虑改用 InvokeModel API。



对于非 PDF 文件,如 .csv、.xlsx、.docx、.md 或 .txt 文件,请参阅处理其他文件格式。


使用 Claude 处理 PDF

发送您的第一个 PDF 请求

让我们从一个使用 Messages API 的简单示例开始。您可以通过三种方式向 Claude 提供 PDF:

  1. 作为指向在线托管 PDF 的 URL 引用
  2. 作为 document 内容块中的 base64 编码 PDF
  3. 通过来自 Files API 的 file_id


在 Amazon Bedrock 和 Vertex AI 上,目前仅支持 base64 编码的来源。

选项 1:基于 URL 的 PDF 文档

最简单的方法是直接通过 URL 引用 PDF:

选项 2:Base64 编码的 PDF 文档

如果您需要从本地系统发送 PDF,或者当 URL 不可用时:

选项 3:Files API

对于您将重复使用的 PDF,或者当您希望避免编码开销时,请使用 Files API:

PDF 支持的工作原理

当您向 Claude 发送 PDF 时,会执行以下步骤:

  1. 1

    系统提取文档的内容。

    • 系统将文档的每一页转换为图像。
    • 从每一页提取文本,并与每页的图像一起提供。
  2. 2

    Claude 同时分析文本和图像,以更好地理解文档。

    • 文档以文本和图像的组合形式提供以供分析。
    • 这使用户能够询问有关 PDF 视觉元素的见解,例如图表、图示和其他非文本内容。
  3. 3

    Claude 作出响应,并在相关时引用 PDF 的内容。

    Claude 在响应时可以同时引用文本和视觉内容。您可以通过将 PDF 支持与以下功能集成来进一步提高性能:

    • 提示缓存:提高重复分析的性能。
    • 批处理:用于大批量文档处理。
    • 工具使用:从文档中提取特定信息以用作工具输入。

估算您的成本

PDF 文件的令牌数量取决于从文档中提取的总文本量以及页数:

  • 文本令牌成本:每页通常使用 1,500-3,000 个令牌,具体取决于内容密度。适用标准 API 定价,无额外 PDF 费用。
  • 图像令牌成本:由于每页都会转换为图像,因此适用相同的基于图像的成本计算。

您可以使用令牌计数来估算特定 PDF 的成本。


优化 PDF 处理

提高性能

遵循以下最佳实践以获得最佳结果:

  • 在请求中将 PDF 放在文本之前
  • 使用标准字体
  • 确保文本清晰易读
  • 将页面旋转到正确的竖直方向
  • 在提示中使用逻辑页码(来自 PDF 查看器)
  • 必要时将大型 PDF 拆分为多个块
  • 为重复分析启用提示缓存

扩展您的实现

对于大批量处理,请考虑以下方法:

使用提示缓存

缓存 PDF 以提高重复查询的性能:

批量处理文档

使用 Message Batches API 处理大批量工作流:

后续步骤


尝试 PDF 示例


在 cookbook 示例中探索 PDF 处理的实际示例。


查看 API 参考

查看 PDF 支持的完整 API 文档。

Was this page helpful?

  • 开始之前
  • 检查 PDF 要求
  • 支持的平台和模型
  • Amazon Bedrock PDF 支持
  • 使用 Claude 处理 PDF
  • 发送您的第一个 PDF 请求
  • PDF 支持的工作原理
  • 估算您的成本
  • 优化 PDF 处理
  • 提高性能
  • 扩展您的实现
  • 后续步骤
需要启用引用
client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "url",
                        "url": "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf",
                    },
                },
                {"type": "text", "text": "What are the key findings in this document?"},
            ],
        }
    ],
)

print(message.content)
import base64
import httpx

# 首先,加载并编码 PDF
pdf_url = "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf"
pdf_data = base64.standard_b64encode(httpx.get(pdf_url).content).decode("utf-8")

# 替代方案:从本地文件加载
# with open("document.pdf", "rb") as f:
#     pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")

# 使用 base64 编码发送给 Claude
client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "base64",
                        "media_type": "application/pdf",
                        "data": pdf_data,
                    },
                },
                {"type": "text", "text": "What are the key findings in this document?"},
            ],
        }
    ],
)

print(message.content)
client = anthropic.Anthropic()

# 上传 PDF 文件
with open("document.pdf", "rb") as f:
    file_upload = client.beta.files.upload(file=("document.pdf", f, "application/pdf"))

# 在消息中使用已上传的文件
message = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    betas=["files-api-2025-04-14"],
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {"type": "file", "file_id": file_upload.id},
                },
                {"type": "text", "text": "What are the key findings in this document?"},
            ],
        }
    ],
)

print(message.content)
client = anthropic.Anthropic()
# ...
message = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "base64",
                        "media_type": "application/pdf",
                        "data": pdf_data,
                    },
                    "cache_control": {"type": "ephemeral"},
                },
                {"type": "text", "text": "Analyze this document."},
            ],
        }
    ],
)
client = anthropic.Anthropic()
# ...
message_batch = client.messages.batches.create(
    requests=[
        {
            "custom_id": "doc1",
            "params": {
                "model": "claude-opus-4-8",
                "max_tokens": 1024,
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {
                                "type": "document",
                                "source": {
                                    "type": "base64",
                                    "media_type": "application/pdf",
                                    "data": pdf_data,
                                },
                            },
                            {"type": "text", "text": "Summarize this document."},
                        ],
                    }
                ],
            },
        }
    ]
)