Claude Platform Docs
メッセージファイルの操作

PDFサポート

ClaudeでPDFを処理:ドキュメントからテキストを抽出し、チャートを分析し、視覚的なコンテンツを理解します。

提供したPDF内のあらゆるテキスト、画像、チャート、表についてClaudeに質問できます。ユースケースの例:

  • 財務報告書の分析とチャート/表の理解
  • 法的文書からの重要情報の抽出
  • 文書翻訳の支援
  • ドキュメント情報の構造化フォーマットへの変換

始める前に

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を提供する方法は3つあります:

  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)

レスポンスは、Claudeの分析をcontent内のテキストブロックとして返し、トークン消費量を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を使用して、1つのリクエストで多数の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ドキュメントを参照してください。

利用可能状況

PDFサポート
API
  • Messages API
  • Managed Agents
モデル
  • すべてのモデル

データの取り扱い

データの取り扱いの概要

対象エンドポイント

  • /v1/messages
ゼロデータ保持対象

対象モデルを除く

HIPAA対象

HIPAA適格性は、Files API経由ではなく、Messages API経由でインライン送信されたPDFに適用されます。

このページは役に立ちましたか?