Claude Platform Docs
Messagesファイルの操作

PDFサポート

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

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

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

始める前に

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サポート

Amazon Bedrock上のClaude(Opus 4.6以前)の一部であるConverse APIを通じてPDFサポートを使用する場合、2つの異なるドキュメント処理モードがあります:

ドキュメント処理モード

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

  1. オンラインでホストされているPDFへのURL参照として
  2. documentコンテンツブロック内のbase64エンコードされたPDFとして
  3. Files APIfile_idによって

オプション1:URLベースのPDFドキュメント

最も簡単な方法は、URLからPDFを直接参照することです:

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-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",
  "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",
    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",
    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ページあたり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",
    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",
                "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",
                "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?