Claude Platform Docs
Messages画像とビジョン

ビジョン

Claudeのビジョン機能により、Claudeは画像を理解・分析できるようになり、マルチモーダルなインタラクションの魅力的な可能性が広がります。

このガイドでは、Claudeに画像を送信する方法、適用される制限とコスト、そして座標ベースのワークフローに関するガイダンスの参照先について説明します。


Claudeに画像を送信する

Claudeのビジョン機能は、次の方法で利用できます。

  • claude.ai。ファイルと同じように画像をアップロードするか、チャットウィンドウに画像を直接ドラッグ&ドロップします。
  • Claude ConsoleのPlayground。任意のUserメッセージブロックに画像を直接追加します。
  • APIリクエスト。以下の例を参照してください。

APIでは、次の3つのソースタイプのいずれかを使用して、imageコンテンツブロックとしてClaudeに画像を提供します。

  1. リクエスト本文に埋め込まれたbase64エンコード画像
  2. オンラインでホストされている画像へのURL参照
  3. Files APIから返されるfile_id(一度アップロードすれば、何度でも参照可能)

base64エンコード画像の例

image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image1_media_type = "image/png"

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {"type": "text", "text": "Describe this image."},
            ],
        }
    ],
)
print(message)

URLベースの画像の例

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://platform.claude.com/docs/images/vision-example.jpg",
                    },
                },
                {"type": "text", "text": "Describe this image."},
            ],
        }
    ],
)
print(message)

Files APIを使用した画像の例

繰り返し使用する画像や、エンコードのオーバーヘッドを避けたい場合は、Files APIを使用してください。画像を一度アップロードし、以降のメッセージではbase64データを再送信する代わりに、返されたfile_idを参照します。

client = anthropic.Anthropic()

# 画像ファイルをアップロードします
with open("vision-example.jpg", "rb") as f:
    file_upload = client.files.upload(file=("vision-example.jpg", f, "image/jpeg"))

# アップロードしたファイルをメッセージで使用します
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {"type": "file", "file_id": file_upload.id},
                },
                {"type": "text", "text": "Describe this image."},
            ],
        }
    ],
)

print(message.content)

その他のサンプルコードやパラメータの詳細については、Messages APIの例を参照してください。

複数の画像

1つのリクエストに複数の画像を含めることができ、Claudeはそれらをまとめて分析します。これは、画像の比較、相違点についての質問、またはドキュメントのページのような連続した画像を扱う場合に便利です。複数の画像を送信する場合は、各画像の前に短いテキストラベル(Image 1:、Image 2:など)を付けて紹介すると、プロンプトやその後のターンで名前によって画像を参照できます。

image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image2_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYPgPAAEDAQAIicLsAAAAAElFTkSuQmCC"

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Image 1:"},
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image1_data,
                    },
                },
                {"type": "text", "text": "Image 2:"},
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image2_data,
                    },
                },
                {"type": "text", "text": "How are these images different?"},
            ],
        }
    ],
)
print(message)

マルチターンの会話では、後続のuserターンでも同じ方法で新しい画像を追加します。Claudeは以前のターンのすべての画像にアクセスできるため、「これらは最初の2枚と似ていますか?」のようなフォローアップの質問は、新しいターンのコンテンツに以前の画像を再度含めなくても機能します。


画像の制限とコスト

リクエストの制限

メッセージまたはリクエストあたりの画像の最大数は次のとおりです。

  • claude.aiでは、メッセージあたり20枚。
  • APIでは、200kトークンのコンテキストウィンドウを持つモデルの場合、リクエストあたり100枚。
  • APIでは、その他すべてのモデルの場合、リクエストあたり600枚。

画像あたりの最大サイズ(寸法)は8000x8000 pxです。

1つのAPIリクエストに20枚を超える画像が含まれる場合、そのリクエスト内のすべての画像に、より厳しい画像あたりの寸法制限が適用されます。リクエスト内のすべてのimageブロックがこのしきい値にカウントされます。これには、再送信する以前の会話ターンの画像や、tool_resultコンテンツ内にネストされた画像(たとえば、computer useツールに返されるスクリーンショット)も含まれます。Amazon BedrockおよびGoogle Cloudでは、PDFなどのドキュメントブロックもこのしきい値にカウントされます。より厳しい制限を超える画像は、「many-image requests」に言及し、現在の制限をピクセル単位で示すメッセージを含むinvalid_request_errorで拒否されます。すべてのプラットフォームで制限内に収めるには、各画像をどちらの辺も2000 pxを超えないようにリサイズするか、リクエスト内の画像ブロックとドキュメントブロックを合計20個以下に抑えてください。

画像あたりの最大ファイルサイズは次のとおりです。

  • Claude APIを直接使用する場合は10 MB(base64エンコード後)。
  • Amazon BedrockおよびGoogle Cloudでは5 MB(base64エンコード後)。
  • claude.aiでは10 MB。

サポートされている形式

ClaudeはJPEG、PNG、GIF、WebP画像(image/jpeg、image/png、image/gif、image/webp)をサポートしています。アニメーションはサポートされておらず、最初のフレームのみが使用されます。

解像度とトークンコスト

Claudeは画像をピクセル単位ではなくパッチ単位で認識します。各パッチは画像の28×28ピクセルのブロックであり、「visual token」(ビジュアルトークン)と呼ばれます。したがって、画像のコストは⌈width / 28⌉ × ⌈height / 28⌉ビジュアルトークンとなります。

各モデルには、長辺の制限とビジュアルトークンの制限で表される、ネイティブ画像解像度の上限があります。いずれかの制限を超える画像は、処理前に縮小されます。正確なルールについては、Claudeが画像をリサイズおよびパディングする方法を参照してください。例外は、computer useおよびbrowser useツールセットに返すスクリーンショットやズーム画像です。APIは、モデルの制限を超えるtool_result画像を縮小せずに検証エラーで拒否するため、それらの画像は返す前にアプリケーション側でリサイズしてください。その他のサイズ超過画像についても、縮小ではなくエラーで拒否させたい場合は、画像ブロックのtransformationsフィールドを設定してください。

解像度ティアモデル最大長辺最大ビジュアルトークン
高解像度Claude 4.7以降のモデル2576 px4784
標準その他すべてのモデル1568 px1568

高解像度のサポートは、記載されているモデルで自動的に有効になり、ベータヘッダーやクライアント側でのオプトインは不要です。

次の表は、各ティアにおけるいくつかの画像サイズの縮小後の解像度とビジュアルトークンコストを示しています。

画像サイズ標準ティア:縮小後のサイズ標準ティア:トークン高解像度ティア:縮小後のサイズ高解像度ティア:トークン
200x200 px(0.04メガピクセル)リサイズなし64リサイズなし64
1000x1000 px(1メガピクセル)リサイズなし1296リサイズなし1296
1092x1092 px(1.19メガピクセル)リサイズなし1521リサイズなし1521
1920x1080 px(2.07メガピクセル)1456x819 px1560リサイズなし2691
2000x1500 px(3メガピクセル)1269x952 px1564リサイズなし3888
3840x2160 px(8.29メガピクセル)1456x819 px15602576x1449 px4784

画像が縮小される場合、Claudeはアスペクト比を維持しながら、ティアの制限内に収まる最大のサイズに画像をスケーリングします。これによりトークンコストに上限が設けられます。正確なルールとリファレンス実装については、Claudeが画像をリサイズおよびパディングする方法を参照してください。

コストを見積もるには、トークン数に使用しているモデルのトークンあたりの価格を掛けます。たとえば、Claude Haiku 4.5の入力トークン100万あたり$1 USD(標準ティア)の場合、1000×1000の画像は1000枚あたり約$1.30 USDです。Claude Opus 5の100万あたり$5 USD(高解像度ティア)の場合、同じ画像は1000枚あたり約$6.48 USD、4K画像は1000枚あたり約$23.92 USDです。

高解像度の画像は、標準ティアのモデルで同じ画像を使用する場合と比べて、最大で約3倍のビジュアルトークンを使用する可能性があります。computer use、スクリーンショットの理解、高密度なドキュメントにおいて高解像度がもたらす追加の忠実度が不要な場合は、トークンコストを抑えるために送信前に画像をダウンサンプリングしてください。レイテンシを最小限に抑え、座標ベースのワークフローを簡素化するために、アップロード前に画像をリサイズすることを推奨します。

画像品質に関するガイダンス

Claudeに画像を提供する際は、最良の結果を得るために次の点に留意してください。

  • 画像の鮮明さ: 画像が鮮明で、ぼやけすぎたりピクセル化しすぎたりしていないことを確認してください。
  • テキスト: 画像に重要なテキストが含まれている場合は、判読可能で小さすぎないことを確認してください。テキストを拡大するためだけに、重要な視覚的コンテキストを切り取ることは避けてください。
  • リサイズ: 画像が大きすぎる場合はリサイズされる可能性があることを考慮してください(解像度とトークンコストを参照)。これにより、たとえばテキストが読みにくくなる場合があります。画像を事前にリサイズするか、切り抜くか、またはその両方を検討してください。サイズ超過の画像をリサイズではなくエラーで拒否させるには(座標ワークフローで重要)、画像ブロックに"oversized_image": "error"を指定してください。
  • 画像の圧縮: JPEGやWebP(非可逆モード)などの非可逆形式を使用して送信前に画像を圧縮すると、リクエストのサイズが小さくなり、レイテンシを削減できます。ただし、これによりモデルのパフォーマンスに悪影響を与えるアーティファクトが生じる可能性があり、特に複数回の圧縮が適用された場合に顕著です。たとえば、強いJPEG圧縮によってテキストが読みにくくなることがあります。APIに送信される実際の画像を確認して、圧縮設定がタスクに適していることを確かめてください。

座標とバウンディングボックス

「bounding box」(バウンディングボックス)、ポイント、ピクセル座標については、座標とバウンディングボックスを参照してください。Claudeは、リサイズ後に認識した画像を基準とした絶対ピクセル座標を返します。このガイドでは、Claudeが画像をリサイズおよびパディングする方法と、座標が元の画像と一致するように事前にリサイズまたは再スケーリングする方法について説明しています。


制限事項

Claudeの画像理解機能は最先端のものですが、注意すべきいくつかの制限事項があります。

  • 人物の識別: Claudeを画像内の人物の名前を特定するために使用することはできず、Claudeはそのような要求を拒否します。
  • 精度: Claudeは、低品質の画像、回転した画像、または200ピクセル未満の非常に小さな画像を解釈する際に、ハルシネーションを起こしたり誤りを犯したりする可能性があります。
  • 空間推論: Claudeの座標および位置特定の出力は近似値です。座標とバウンディングボックスのガイダンスに従い、出力に依存する前に検証してください。
  • カウント: Claudeは画像内のオブジェクトのおおよその数を示すことができますが、特に小さなオブジェクトが多数ある場合は、常に正確であるとは限りません。
  • AI生成画像: Claudeは画像がAIによって生成されたものかどうかを判断できず、尋ねられた場合に誤った回答をする可能性があります。偽の画像や合成画像の検出にClaudeを頼らないでください。
  • 不適切なコンテンツ: Claudeは、利用規約(Acceptable Use Policy)に違反する不適切または露骨な画像を処理しません。
  • 医療用途: Claudeは一般的な医療画像を分析できますが、CTやMRIなどの複雑な診断スキャンを解釈するようには設計されていません。Claudeの出力は、専門的な医学的助言や診断の代わりとみなすべきではありません。

特にリスクの高いユースケースでは、Claudeによる画像の解釈を常に慎重に確認・検証してください。完全な精度が求められるタスクや機密性の高い画像分析に、人間による監督なしでClaudeを使用しないでください。


よくある質問


次のステップ

グラフの解釈やフォームからのコンテンツ抽出などのタスクに関するヒントとベストプラクティスの手法を紹介します。

画像を含むAPI呼び出しの例を含む、Messages APIのドキュメントを参照してください。

Was this page helpful?