Claude Platform Docs
Messages处理文件

PDF 支持

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

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

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

开始之前

检查 PDF 要求

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

要求限制
最大请求大小32 MB(因平台而异)
每个请求的最大页数600(当请求的上下文窗口小于 1M 令牌时为 100)
格式标准 PDF(无密码/加密)

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

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

支持的平台和模型

所有活跃模型均支持 PDF 处理。有关通过 Amazon Bedrock 的 Converse API 使用 PDF 支持的信息,请参阅 Amazon Bedrock PDF 支持。

Amazon Bedrock PDF 支持

当通过 Converse API(属于 Amazon Bedrock 上的 Claude(Opus 4.6 及更早版本)的一部分)使用 PDF 支持时,有两种不同的文档处理模式:

文档处理模式

  1. Converse Document Chat(原始模式 - 仅文本提取)

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

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

主要限制

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

常见问题

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

使用 Claude 处理 PDF

发送您的第一个 PDF 请求

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

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

选项 1:基于 URL 的 PDF 文档

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

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-5-5",
    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)

响应会在 content 中以文本块的形式返回 Claude 的分析,并在 usage 中返回令牌消耗情况:

Output
{
  "id": "msg_01Hfp8YuFjQ55VgWbpdHDehB",
  "type": "message",
  "role": "assistant",
  "model": "claude-opus-5-5",
  "content": [
    {
      "type": "text",
      "text": "This document is an addendum to the Claude 3 model card, reporting updated evaluation results. The key findings include..."
    }
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 45000,
    "output_tokens": 300
  }
}

选项 2:Base64 编码的 PDF 文档

如果您需要从本地系统发送 PDF,或者在没有可用 URL 的情况下:

import base64
import httpx2

# 首先,加载 PDF 并进行编码
pdf_url = "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf"
pdf_data = base64.standard_b64encode(
    httpx2.get(pdf_url, follow_redirects=True).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-5-5",
    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)

选项 3:Files API

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

client = anthropic.Anthropic()

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

# 在消息中使用已上传的文件
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    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)

PDF 支持的工作原理

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

  1. 系统提取文档的内容。

    • 系统将文档的每一页转换为图像。
    • 每一页的文本会被提取出来,并与每一页的图像一起提供。
  2. Claude 同时分析文本和图像,以更好地理解文档。

    • 文档以文本和图像组合的形式提供以供分析。
    • 这使用户能够就 PDF 的视觉元素(如图表、示意图和其他非文本内容)寻求见解。
  3. Claude 作出响应,并在相关时引用 PDF 的内容。

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

估算您的成本

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

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

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

优化 PDF 处理

提升性能

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

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

扩展您的实现

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

使用提示缓存

使用提示缓存缓存 PDF,以提高重复查询的性能:

import base64
import httpx2

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

# 使用已缓存的文档创建消息
client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-5-5",
    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": "Which model has the highest human preference win rates across each use-case?",
                },
            ],
        }
    ],
)

print(message.content)

处理文档批次

使用 Message Batches API 在一个请求中处理多个 PDF:

import base64
import httpx2

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

# 创建一批使用该文档的请求
client = anthropic.Anthropic()
message_batch = client.messages.batches.create(
    requests=[
        {
            "custom_id": "my-first-request",
            "params": {
                "model": "claude-opus-5-5",
                "max_tokens": 1024,
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {
                                "type": "document",
                                "source": {
                                    "type": "base64",
                                    "media_type": "application/pdf",
                                    "data": pdf_data,
                                },
                            },
                            {
                                "type": "text",
                                "text": "Which model has the highest human preference win rates across each use-case?",
                            },
                        ],
                    }
                ],
            },
        },
        {
            "custom_id": "my-second-request",
            "params": {
                "model": "claude-opus-5-5",
                "max_tokens": 1024,
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {
                                "type": "document",
                                "source": {
                                    "type": "base64",
                                    "media_type": "application/pdf",
                                    "data": pdf_data,
                                },
                            },
                            {
                                "type": "text",
                                "text": "Extract 5 key insights from this document.",
                            },
                        ],
                    }
                ],
            },
        },
    ]
)

print(message_batch)

批次以异步方式处理。要检查进度并在处理结束后获取结果,请参阅批处理。

后续步骤

Claude 的视觉能力使其能够理解和分析图像,为多模态交互开辟了令人兴奋的可能性。

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

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

Compatibility

Supported platforms
  • Claude API
  • Claude Platform on AWS
  • Amazon Bedrock
  • Google Cloud
  • Microsoft Foundry

Was this page helpful?