提供された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)

PDFサポートは現在Amazon Bedrockで利用可能で、以下の考慮事項があります:

Amazon Bedrock PDFサポート

Amazon BedrockのConverse APIを通じてPDFサポートを使用する場合、2つの異なる文書処理モードがあります:

重要: Converse APIでClaudeの完全な視覚的PDF理解機能にアクセスするには、引用を有効にする必要があります。引用を有効にしないと、APIは基本的なテキスト抽出のみにフォールバックします。引用の使用について詳しく学んでください。

文書処理モード

  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は基本的なテキスト抽出のみにフォールバックします。

これはConverse APIの既知の制約であり、対処に取り組んでいます。引用なしで視覚的PDF分析が必要なアプリケーションの場合は、代わりにInvokeModel APIの使用を検討してください。

.csv、.xlsx、.docx、.md、.txtファイルなどのPDF以外のファイルについては、他のファイル形式での作業を参照してください。


ClaudeでPDFを処理する

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

Messages APIを使用したシンプルな例から始めましょう。Claudeに3つの方法でPDFを提供できます:

  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": "この文書の主要な発見は何ですか?"
         }]
     }]
 }'

オプション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": "この文書の主要な発見は何ですか?"
        }]
    }]
}' > 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": "この文書の主要な発見は何ですか?"
      }]
    }]
  }'

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": "各ユースケースで最も高い人間の好み勝率を持つモデルはどれですか?"
        }]
    }]
}' > 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": "各ユースケースで最も高い人間の好み勝率を持つモデルはどれですか?"
                        }
                    ]
                }
              ]
          }
      },
      {
          "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": "この文書から5つの重要な洞察を抽出してください。"
                        }
                    ]
                }
              ]
          }
      }
  ]
}
' > 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

次のステップ