PDF 支持
使用 Claude 处理 PDF:从您的文档中提取文本、分析图表并理解视觉内容。
您可以向 Claude 询问您所提供的 PDF 中的任何文本、图片、图表和表格。一些示例用例:
- 分析财务报告并理解图表/表格
- 从法律文档中提取关键信息
- 协助文档翻译
- 将文档信息转换为结构化格式
开始之前
检查 PDF 要求
Claude 可处理任何标准 PDF。请确保您的请求大小满足以下要求:
| 要求 | 限制 |
|---|---|
| 最大请求大小 | 第一方 Claude API 上为 128 MB(因平台而异;请参阅请求大小限制) |
| 每个请求的最大页数 | 600(当请求的上下文窗口小于 1M 令牌时为 100) |
| 格式 | 标准 PDF(无密码/加密) |
这两项限制均针对整个请求负载,包括与 PDF 一起发送的任何其他内容。对于大型 PDF,请考虑使用 Files API 上传并通过 file_id 引用,以保持请求负载较小。
由于 PDF 支持依赖于 Claude 的视觉能力,因此它与其他视觉任务一样受到相同的限制和注意事项的约束。
支持的平台和模型
所有活跃模型均支持 PDF 处理。
使用 Claude 处理 PDF
发送您的第一个 PDF 请求
从一个使用 Messages API 的简单示例开始。您可以通过三种方式向 Claude 提供 PDF:
- 作为指向在线托管 PDF 的 URL 引用
- 作为
document内容块中的 base64 编码 PDF - 通过来自 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 中返回令牌消耗情况:
{
"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 时,会发生以下步骤:
系统提取文档的内容。
- 系统将文档的每一页转换为图像。
- 每一页的文本会被提取出来,并与每一页的图像一起提供。
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 API
- API
- Messages API
- Managed Agents
- 模型
- 所有模型
Claude Platform on AWS
- API
- Messages API
- Managed Agents
- 模型
- 所有模型
Claude Models on Google Cloud (Anthropic managed)
- API
- Messages API
- Managed Agents
- 模型
- 所有模型
Amazon Bedrock
- API
- Messages API
- 模型
- 所有模型
- Note
仅支持 Base64 源。
Amazon Bedrock (InvokeModel)
- API
- Messages API
- 模型
- 所有模型
- Note
仅支持 Base64 源。
Claude Models on Google Cloud (Google managed)
- API
- Messages API
- 模型
- 所有模型
- Note
仅支持 Base64 源。
Microsoft Foundry
- API
- Messages API
- 模型
- 所有模型
- Note
file_id源需要托管在 Anthropic 上的部署。
数据处理
数据处理概览适用的端点
/v1/messages
不包括 涵盖的模型
HIPAA 资格适用于通过 Messages API 内联发送的 PDF,不适用于通过 Files API 发送的 PDF。
此页面对您有帮助吗?