このガイドでは、Claudeに画像を送信する方法、適用される制限とコスト、および座標ベースのワークフローに関するガイダンスの参照先について説明します。
Claudeの視覚機能は以下の方法で使用できます。
APIでは、次の3つのソースタイプのいずれかを使用して、imageコンテンツブロックとしてClaudeに画像を提供します。
file_id(一度アップロードして、何度も参照)Amazon BedrockおよびGoogle Cloudでは、現在base64エンコードされたソースのみが利用可能です。
テキストプロンプトで長いドキュメントをクエリの前に配置すると結果が向上するのと同様に、Claudeは画像がテキストの前にある場合に最も効果的に機能します。テキストの後に配置された画像やテキストと交互に配置された画像でも十分に機能しますが、ユースケースが許す場合は、画像の後にテキストを配置する構造を優先してください。
image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image1_media_type = "image/png"
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-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)client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg",
},
},
{"type": "text", "text": "Describe this image."},
],
}
],
)
print(message)繰り返し使用する画像や、エンコードのオーバーヘッドを避けたい場合は、Files APIを使用してください。画像を一度アップロードし、その後のメッセージではbase64データを再送信する代わりに、返されたfile_idを参照します。
マルチターンの会話やエージェント型ワークフローでは、各リクエストで会話履歴全体が再送信されます。画像がbase64エンコードされている場合、画像の全バイトが毎ターンのペイロードに含まれるため、会話が長くなるにつれてリクエストサイズとレイテンシが大幅に増加する可能性があります。画像をFiles APIにアップロードし、file_idで参照することで、会話履歴に蓄積される画像の数に関係なく、リクエストペイロードを小さく保つことができます。
client = anthropic.Anthropic()
# 画像ファイルをアップロードする
with open("image.jpg", "rb") as f:
file_upload = client.beta.files.upload(file=("image.jpg", f, "image/jpeg"))
# アップロードしたファイルをメッセージで使用する
message = client.beta.messages.create(
model="claude-opus-5",
max_tokens=1024,
betas=["files-api-2025-04-14"],
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",
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つと似ていますか?」のようなフォローアップの質問は、新しいターンのコンテンツに以前の画像を再度含めなくても機能します。
メッセージまたはリクエストあたりの画像の最大数は次のとおりです。
画像あたりの最大寸法は8000x8000 pxです。
1つのAPIリクエストに20枚を超える画像が含まれる場合、より厳しい画像あたりの寸法制限が適用されます。Amazon BedrockおよびGoogle Cloudでは、PDFなどのドキュメントブロックもこのしきい値にカウントされます。より厳しい制限を超える画像は、「many-image requests」に言及し、現在のピクセル単位の制限を示すメッセージを含むinvalid_request_errorで拒否されます。すべてのプラットフォームで制限内に収めるには、各画像をどちらの寸法も2000 pxを超えないようにリサイズするか、リクエストを画像およびドキュメントブロック20個以下に抑えてください。
画像あたりの最大サイズは次のとおりです。
APIはリクエストあたり最大600枚の画像をサポートしていますが、リクエストサイズの制限(標準エンドポイントでは32 MB、Amazon BedrockやGoogle Cloudなどの一部のパートナー運営プラットフォームではそれより低い)に先に到達する可能性があります。多数の画像を扱う場合は、Files APIでアップロードし、file_idで参照することで、リクエストペイロードを小さく保つことを検討してください。
Files APIを使用している場合でも、多数の大きな画像を含むリクエストは、600枚の画像数に達する前に失敗する可能性があります。アップロードする前に、画像の寸法やファイルサイズを縮小(たとえばダウンサンプリング)してください(解像度とトークンコストを参照)。
ClaudeはJPEG、PNG、GIF、WebP画像(image/jpeg、image/png、image/gif、image/webp)をサポートしています。アニメーションはサポートされておらず、最初のフレームのみが使用されます。
Claudeは画像をピクセルではなくパッチ単位で認識します。各パッチは画像の28×28ピクセルのブロックで、ビジュアルトークンと呼ばれます。したがって、画像のコストは⌈width / 28⌉ × ⌈height / 28⌉ビジュアルトークンになります。
各モデルには、長辺の制限とビジュアルトークンの制限として表される最大ネイティブ画像解像度があります。いずれかの制限を超える画像は、処理前にダウンスケールされます。正確なルールについては、Claudeが画像をリサイズおよびパディングする方法を参照してください。
| 解像度ティア | モデル | 最大長辺 | 最大ビジュアルトークン |
|---|---|---|---|
| 高解像度 | Claude 4.7以降のモデル | 2576 px | 4784 |
| 標準 | その他すべてのモデル | 1568 px | 1568 |
高解像度サポートは、記載されているモデルでは自動的に有効になり、ベータヘッダーやクライアント側のオプトインは必要ありません。
次の表は、各ティアにおけるいくつかの画像サイズのダウンサイズ後の解像度とビジュアルトークンコストを示しています。
| 画像サイズ | 標準ティア: ダウンサイズ後 | 標準ティア: トークン | 高解像度ティア: ダウンサイズ後 | 高解像度ティア: トークン |
|---|---|---|---|---|
| 200x200 px(0.04メガピクセル) | リサイズなし | 64 | リサイズなし | 64 |
| 1000x1000 px(1メガピクセル) | リサイズなし | 1296 | リサイズなし | 1296 |
| 1092x1092 px(1.19メガピクセル) | リサイズなし | 1521 | リサイズなし | 1521 |
| 1920x1080 px(2.07メガピクセル) | 1456x819 px | 1560 | リサイズなし | 2691 |
| 2000x1500 px(3メガピクセル) | 1269x952 px | 1564 | リサイズなし | 3888 |
| 3840x2160 px(8.29メガピクセル) | 1456x819 px | 1560 | 2576x1449 px | 4784 |
画像がダウンサイズされる場合、Claudeはアスペクト比を維持しながら、ティアの制限内に収まる最大サイズにスケーリングします。これによりトークンコストに上限が設けられます。正確なルールとリファレンス実装については、Claudeが画像をリサイズおよびパディングする方法を参照してください。
コストを見積もるには、トークン数に使用しているモデルのトークンあたりの価格を掛けます。たとえば、Claude Haiku 4.5の100万入力トークンあたり$1(標準ティア)では、1000×1000の画像は1000枚あたり約$1.30のコストになります。Claude Opus 5の100万あたり$5(高解像度ティア)では、同じ画像は1000枚あたり約$6.48、4K画像は1000枚あたり約$23.92のコストになります。
高解像度の画像は、標準ティアのモデルでの同じ画像と比較して、最大で約3倍のビジュアルトークンを使用する可能性があります。コンピュータ使用、スクリーンショットの理解、高密度なドキュメントに対して高解像度が提供する追加の忠実度が必要ない場合は、送信前に画像をダウンサンプリングしてトークンコストを抑えてください。レイテンシを最小限に抑え、座標ベースのワークフローを簡素化するには、アップロード前に画像をリサイズすることをお勧めします。
Claudeに画像を提供する際は、最良の結果を得るために以下の点に留意してください。
バウンディングボックス、ポイント、ピクセル座標については、座標とバウンディングボックスを参照してください。Claudeは、リサイズ後に認識した画像を基準とした絶対ピクセル座標を返します。そのガイドでは、Claudeが画像をリサイズおよびパディングする方法と、座標が元の画像と一致するように事前にリサイズまたは再スケーリングする方法について説明しています。
Claudeの画像理解機能は最先端ですが、注意すべきいくつかの制限事項があります。
特にリスクの高いユースケースでは、Claudeの画像解釈を常に慎重に確認および検証してください。完璧な精度が必要なタスクや、人間の監督なしでの機密性の高い画像分析にClaudeを使用しないでください。
チャートの解釈やフォームからのコンテンツ抽出などのタスクに関するヒントとベストプラクティスの手法を入手できます。
画像を含むAPI呼び出しの例を含む、Messages APIのドキュメントを参照してください。
Was this page helpful?