提供したPDF内のテキスト、画像、グラフ、表についてClaudeに質問できるようになりました。サンプルのユースケース:

  • 財務報告書の分析とグラフ/表の理解
  • 法的文書から重要な情報を抽出
  • 文書の翻訳支援
  • 文書情報の構造化フォーマットへの変換

始める前に

PDF要件の確認

Claudeは標準的なPDFで動作します。ただし、PDFサポートを使用する際には、リクエストサイズが以下の要件を満たしていることを確認してください:

要件制限
最大リクエストサイズ32MB
リクエストあたりの最大ページ数100
フォーマット標準PDF(パスワード/暗号化なし)

PDFと一緒に送信される他のコンテンツを含め、リクエストペイロード全体に両方の制限が適用されることに注意してください。

PDFサポートはClaudeのビジョン機能に依存しているため、他のビジョンタスクと同じ制限と考慮事項が適用されます。

サポートされているプラットフォームとモデル

PDFサポートは現在、直接APIアクセスとGoogle Vertex AIで以下のモデルでサポートされています:

  • Claude Opus 4 (claude-opus-4-20250514)
  • Claude Sonnet 4 (claude-sonnet-4-20250514)
  • Claude Sonnet 3.7 (claude-3-7-sonnet-20250219)
  • Claude Sonnet 3.5モデル (claude-3-5-sonnet-20241022, claude-3-5-sonnet-20240620)
  • Claude Haiku 3.5 (claude-3-5-haiku-20241022)

この機能はAmazon Bedrockでもまもなくサポートされる予定です。


ClaudeでPDFを処理する

最初のPDFリクエストを送信する

Messages APIを使用した簡単な例から始めましょう。PDFをClaudeに提供する方法は3つあります:

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

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

最も簡単なアプローチは、URLから直接PDFを参照することです:

 curl https://api.anthropic.com/v1/messages \
   -H "content-type: application/json" \
   -H "x-api-key: $ANTHROPIC_API_KEY" \
   -H "anthropic-version: 2023-06-01" \
   -d '{
     "model": "claude-opus-4-20250514",
     "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?"
         }]
     }]
 }'

オプション2:Base64エンコードされたPDFドキュメント

ローカルシステムからPDFを送信する必要がある場合や、URLが利用できない場合:

# 方法1:リモートPDFを取得してエンコードする
curl -s "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf" | base64 | tr -d '\n' > pdf_base64.txt

# 方法2:ローカルPDFファイルをエンコードする
# base64 document.pdf | tr -d '\n' > pdf_base64.txt

# pdf_base64.txtの内容を使用してJSONリクエストファイルを作成する
jq -n --rawfile PDF_BASE64 pdf_base64.txt '{
    "model": "claude-opus-4-20250514",
    "max_tokens": 1024,
    "messages": [{
        "role": "user",
        "content": [{
            "type": "document",
            "source": {
                "type": "base64",
                "media_type": "application/pdf",
                "data": $PDF_BASE64
            }
        },
        {
            "type": "text",
            "text": "What are the key findings in this document?"
        }]
    }]
}' > request.json

# JSONファイルを使用してAPIリクエストを送信する
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d @request.json

オプション3:Files API

繰り返し使用するPDFや、エンコーディングのオーバーヘッドを避けたい場合は、Files APIを使用してください:

# まず、PDFをFiles APIにアップロードする
curl -X POST https://api.anthropic.com/v1/files \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: files-api-2025-04-14" \
  -F "file=@document.pdf"

# 次に、返されたfile_idをメッセージで使用する
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: files-api-2025-04-14" \
  -d '{
    "model": "claude-opus-4-20250514", 
    "max_tokens": 1024,
    "messages": [{
      "role": "user",
      "content": [{
        "type": "document",
        "source": {
          "type": "file",
          "file_id": "file_abc123"
        }
      },
      {
        "type": "text",
        "text": "What are the key findings in this document?"
      }]
    }]
  }'

PDFサポートの仕組み

PDFをClaudeに送信すると、次の手順が実行されます:

1

システムがドキュメントの内容を抽出します。

  • システムはドキュメントの各ページを画像に変換します。
  • 各ページのテキストが抽出され、各ページの画像と一緒に提供されます。
2

Claudeはドキュメントをより理解するために、テキストと画像の両方を分析します。

  • ドキュメントは分析のためにテキストと画像の組み合わせとして提供されます。
  • これにより、ユーザーはPDFのグラフ、図表、その他の非テキストコンテンツなどの視覚的要素に関する洞察を求めることができます。
3

Claudeは、関連する場合はPDFの内容を参照して応答します。

Claudeは応答する際にテキストと視覚的な内容の両方を参照できます。以下を統合することで、パフォーマンスをさらに向上させることができます:

  • プロンプトキャッシング:繰り返し分析のパフォーマンスを向上させるため。
  • バッチ処理:大量のドキュメント処理のため。
  • ツール使用:ツール入力として使用するためにドキュメントから特定の情報を抽出するため。

コストを見積もる

PDFファイルのトークン数は、ドキュメントから抽出された総テキスト量とページ数によって異なります:

  • テキストトークンコスト:各ページは通常、コンテンツの密度に応じて1ページあたり1,500〜3,000トークンを使用します。追加のPDF料金なしで標準APIの価格が適用されます。
  • 画像トークン費用:各ページは画像に変換されるため、同じ画像ベースのコスト計算が適用されます。

特定のPDFのコストを見積もるには、トークンカウントを使用できます。


PDF処理の最適化

パフォーマンスの向上

最適な結果を得るには、次のベストプラクティスに従ってください:

  • リクエストでテキストの前にPDFを配置する
  • 標準フォントを使用する
  • テキストが明確で読みやすいことを確認する
  • ページを適切な上向き方向に回転させる
  • プロンプトでは論理的なページ番号(PDFビューアからの)を使用する
  • 必要に応じて大きなPDFをチャンクに分割する
  • 繰り返し分析にはプロンプトキャッシングを有効にする

実装のスケーリング

大量処理のために、次のアプローチを検討してください:

プロンプトキャッシングを使用する

繰り返しクエリのパフォーマンスを向上させるためにPDFをキャッシュします:

# pdf_base64.txtの内容を使用してJSONリクエストファイルを作成する
jq -n --rawfile PDF_BASE64 pdf_base64.txt '{
    "model": "claude-opus-4-20250514",
    "max_tokens": 1024,
    "messages": [{
        "role": "user",
        "content": [{
            "type": "document",
            "source": {
                "type": "base64",
                "media_type": "application/pdf",
                "data": $PDF_BASE64
            },
            "cache_control": {
              "type": "ephemeral"
            }
        },
        {
            "type": "text",
            "text": "Which model has the highest human preference win rates across each use-case?"
        }]
    }]
}' > request.json

# JSONファイルを使用してAPIを呼び出す
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d @request.json

ドキュメントバッチを処理する

大量のワークフロー用にMessage Batches APIを使用します:

# pdf_base64.txtの内容を使用してJSONリクエストファイルを作成する
jq -n --rawfile PDF_BASE64 pdf_base64.txt '
{
  "requests": [
      {
          "custom_id": "my-first-request",
          "params": {
              "model": "claude-opus-4-20250514",
              "max_tokens": 1024,
              "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "document",
                            "source": {
 "type": "base64",
 "media_type": "application/pdf",
 "data": $PDF_BASE64
                            }
                        },
                        {
                            "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-4-20250514",
              "max_tokens": 1024,
              "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "document",
                            "source": {
 "type": "base64",
 "media_type": "application/pdf",
 "data": $PDF_BASE64
                            }
                        },
                        {
                            "type": "text",
                            "text": "Extract 5 key insights from this document."
                        }
                    ]
                }
              ]
          }
      }
  ]
}
' > request.json

# JSONファイルを使用してAPIを呼び出す
curl https://api.anthropic.com/v1/messages/batches \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d @request.json

次のステップ