This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.
Claudeに提供するPDFのテキスト、画像、チャート、表について質問できます。いくつかのサンプルユースケース:
Claudeは標準的なPDFで動作します。リクエストサイズがこれらの要件を満たしていることを確認してください:
| 要件 | 制限 |
|---|---|
| 最大リクエストサイズ | 32 MB (プラットフォームによって異なります) |
| リクエストあたりの最大ページ数 | 600 (200kトークンコンテキストウィンドウを持つモデルの場合は100) |
| フォーマット | 標準PDF (パスワード/暗号化なし) |
両方の制限は、PDFと一緒に送信される他のコンテンツを含む、リクエスト全体のペイロードに対するものです。大きなPDFの場合、Files APIでアップロードし、file_idで参照してリクエストペイロードを小さく保つことを検討してください。
密度の高いPDF(多くの小さいフォントのページ、複雑な表、または重いグラフィックス)は、ページ制限に達する前にコンテキストウィンドウを満たす可能性があります。大きなPDFを含むリクエストは、Files APIを使用している場合でも、ページ制限に達する前に失敗する可能性があります。ドキュメントをセクションに分割してみてください。大きなファイルの場合、各ページが画像として処理されるため、埋め込み画像のダウンサンプリングも役立つ可能性があります。
PDFサポートはClaudeのビジョン機能に依存しているため、他のビジョンタスクと同じ制限と考慮事項の対象となります。
PDFサポートは現在、直接APIアクセスとGoogle Vertex AIを通じてサポートされています。すべてのアクティブなモデルがPDF処理をサポートしています。
PDFサポートはAmazon Bedrockで利用可能になりました。以下の考慮事項があります:
Amazon BedrockのConverse APIを通じてPDFサポートを使用する場合、2つの異なるドキュメント処理モードがあります:
重要: Converse APIでClaudeの完全なビジュアルPDF理解機能にアクセスするには、引用を有効にする必要があります。引用が有効になっていない場合、APIは基本的なテキスト抽出のみにフォールバックします。引用の操作について詳しく学びます。
Converse Document Chat (元のモード - テキスト抽出のみ)
Claude PDF Chat (新しいモード - 完全なビジュアル理解)
顧客がConverse APIを使用する場合、ClaudeがPDF内の画像またはチャートを見ていないと報告している場合、引用フラグを有効にする必要がある可能性があります。それなしでは、Converseは基本的なテキスト抽出のみにフォールバックします。
これはConverse APIの既知の制約です。引用なしでビジュアルPDF分析が必要なアプリケーションの場合、代わりにInvokeModel APIの使用を検討してください。
.csv、.xlsx、.docx、.md、.txtファイルなどの非PDFファイルについては、他のファイル形式の操作を参照してください。
Messages APIを使用した簡単な例から始めましょう。Claudeに3つの方法でPDFを提供できます:
documentコンテンツブロック内のbase64エンコードされたPDFとしてfile_idによって最も簡単なアプローチは、URLからPDFを直接参照することです:
ローカルシステムからPDFを送信する必要がある場合、またはURLが利用できない場合:
繰り返し使用するPDF、またはエンコーディングのオーバーヘッドを避けたい場合は、Files APIを使用してください:
Claudeに PDFを送信すると、次の手順が実行されます:
システムがドキュメントの内容を抽出します。
Claudeはテキストと画像の両方を分析してドキュメントをより良く理解します。
Claudeが応答し、必要に応じてPDFのコンテンツを参照します。
Claudeは応答時にテキストと視覚的なコンテンツの両方を参照できます。PDFサポートを以下と統合することで、パフォーマンスをさらに向上させることができます:
PDFファイルのトークン数は、ドキュメントから抽出されたテキスト全体とページ数に依存します:
トークンカウントを使用して、特定のPDFのコストを見積もることができます。
最適な結果を得るために、これらのベストプラクティスに従ってください:
大量処理の場合、以下のアプローチを検討してください:
繰り返しクエリのパフォーマンスを向上させるためにPDFをキャッシュします:
大量ワークフローにはMessage Batches APIを使用します:
Was this page helpful?
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-7",
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
# First, load and encode the 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")
# Alternative: Load from a local file
# with open("document.pdf", "rb") as f:
# pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")
# Send to Claude using base64 encoding
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-7",
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()
# Upload the PDF file
with open("document.pdf", "rb") as f:
file_upload = client.beta.files.upload(file=("document.pdf", f, "application/pdf"))
# Use the uploaded file in a message
message = client.beta.messages.create(
model="claude-opus-4-7",
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-7",
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-7",
"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."},
],
}
],
},
}
]
)PDF対応の完全なAPIドキュメントを参照してください。