Was this page helpful?
このガイドでは、Claudeで画像を操作する方法、ベストプラクティス、留意すべき制限事項について説明します。
Claudeのビジョン機能は以下の方法で利用できます:
1つのリクエストに複数の画像を含めることができます:claude.aiでは最大20枚、APIリクエストでは最大600枚(200kトークンのコンテキストウィンドウを持つモデルの場合は100枚)。Claudeは応答を作成する際に提供されたすべての画像を分析します。これは画像を比較または対比する場合に役立ちます。
8000x8000 pxより大きい画像を送信すると、拒否されます。1つのAPIリクエストで20枚以上の画像を送信する場合、この制限は2000x2000 pxです。
APIは1リクエストあたり最大600枚の画像をサポートしていますが、リクエストサイズ制限(標準エンドポイントの場合32 MB、一部のサードパーティプラットフォームではそれ以下)に先に達する可能性があります。多くの画像の場合、Files APIでアップロードし、file_idで参照することを検討して、リクエストペイロードを小さく保ちます。
Files APIを使用している場合でも、多くの大きな画像を含むリクエストは600画像カウントに達する前に失敗する可能性があります。アップロード前に画像の寸法またはファイルサイズを削減してください(例えば、ダウンサンプリングにより)(画像サイズの評価を参照)。
レイテンシを最小化しながら出力品質を損なわないようにするには、アップロード前に大きすぎる画像をリサイズしてください。Claude Opus 4.6、Claude Sonnet 4.6、およびそれ以前のモデルでは、画像の長辺が1568ピクセルを超える場合、または画像が約1,600トークンを超える場合、最初にアスペクト比を保持しながらスケールダウンされ、サイズ制限内に収まります。
入力画像が大きすぎてリサイズが必要な場合、time-to-first-tokenのレイテンシが増加し、出力品質に利益がありません。いずれかのエッジで200ピクセル未満の非常に小さい画像は、出力品質を低下させる可能性があります。
Claude Opus 4.7より前のモデルの場合、time-to-first-tokenを改善するために、画像を最大1.15メガピクセル(および両方の寸法で1568ピクセル以内)にリサイズすることを検討してください。Claude Opus 4.7については、以下のClaude Opus 4.7での高解像度画像サポートを参照してください。
Claude Opus 4.7は、高解像度画像サポートを備えた最初のClaudeモデルです。最大画像解像度は長辺で2576ピクセル(以前のモデルの1568 pxから増加)です。これにより、ビジョンヘビーなワークロードでのパフォーマンス向上がもたらされ、コンピュータ使用、スクリーンショット理解、ドキュメント分析に特に価値があります。
高解像度サポートはClaude Opus 4.7で自動であり、ベータヘッダーやクライアント側のオプトインは必要ありません。
トークンコスト: Claude Opus 4.7での全解像度画像は、以前のモデルよりも約3倍多くの画像トークンを使用できます(画像あたり最大4784トークン、以前の上限は約1,600トークン/画像)。追加の忠実度が必要ない場合は、トークンコストを制御するために送信前に画像をダウンサンプリングしてください。
座標計算: Claude Opus 4.7では、モデルが返すポインティングおよびバウンディングボックス座標は実際の画像ピクセルと1
、スケールファクター変換は必要ありません。これにより、コンピュータ使用、注釈付け、ローカライゼーションワークフローが簡素化されます。以下は、一般的なアスペクト比についてリサイズされないAPIが受け入れる最大画像サイズの表です。Claude Sonnet 4.6では、これらの画像は約1,600トークンを使用し、1k画像あたり約$4.80です。
| アスペクト比 | 画像サイズ |
|---|---|
| 1:1 | 1092x1092 px |
| 3:4 | 951x1268 px |
| 2:3 | 896x1344 px |
| 9:16 | 819x1456 px |
| 1:2 | 784x1568 px |
Claudeへのリクエストに含める各画像は、トークン使用量にカウントされます。概算コストを計算するには、概算画像トークン数に、使用しているモデルのトークンあたりの価格を掛けます。
画像をリサイズする必要がない場合、このアルゴリズムを通じてトークン数を推定できます:tokens = (width px * height px)/750
以下は、Claude Sonnet 4.6のトークンあたりの価格$3/100万入力トークンに基づくAPIのサイズ制約内の異なる画像サイズのトークン化とコストの概算例です:
| 画像サイズ | トークン数 | 画像あたりのコスト | 1k画像あたりのコスト |
|---|---|---|---|
| 200x200 px(0.04メガピクセル) | ~54 | ~$0.00016 | ~$0.16 |
| 1000x1000 px(1メガピクセル) | ~1334 | ~$0.004 | ~$4.00 |
| 1092x1092 px(1.19メガピクセル) | ~1590 | ~$0.0048 | ~$4.80 |
Claudeに画像を提供する場合、最良の結果を得るために以下を念頭に置いてください:
Claudeとのテキストベースのインタラクションでうまく機能するプロンプティング技術の多くは、画像ベースのプロンプトにも適用できます。
これらの例は、画像を含むベストプラクティスプロンプト構造を示しています。
長いドキュメントをクエリの前に配置することがテキストプロンプトの結果を改善するのと同じように、Claudeは画像がテキストの前に来るときに最適に機能します。テキストの後に配置された画像またはテキストと補間された画像は依然として良好に機能しますが、ユースケースが許可する場合は、画像優先のテキスト構造を優先してください。
以下の例は、様々なプログラミング言語とアプローチを使用してClaudeのビジョン機能を使用する方法を示しています。Claudeに画像を提供する方法は3つあります:
imageコンテンツブロック内のbase64エンコードされた画像としてbase64の例プロンプトは、これらの変数を使用します:
以下は、base64エンコードされた画像とURL参照を使用してMessages APIリクエストに画像を含める方法の例です:
繰り返し使用する画像や、エンコーディングのオーバーヘッドを避けたい場合は、Files APIを使用してください。画像を一度アップロードしてから、その後のメッセージで base64 データを再度送信する代わりに、返された file_id を参照してください。
マルチターン会話とエージェントワークフローでは、各リクエストが完全な会話履歴を再送信します。画像が base64 エンコードされている場合、完全な画像バイトがすべてのターンでペイロードに含まれるため、会話が増えるにつれてリクエストサイズとレイテンシーが大幅に増加する可能性があります。画像を Files API にアップロードして file_id で参照することで、会話履歴に蓄積される画像の数に関係なく、リクエストペイロードを小さく保つことができます。
詳細なコード例とパラメータの詳細については、Messages API の例を参照してください。
Claude の画像理解機能は最先端ですが、認識すべき制限事項があります:
特に高リスクのユースケースでは、Claude の画像解釈を常に慎重に確認および検証してください。完全な精度が必要なタスクや人間の監視なしで機密の画像分析に Claude を使用しないでください。
Claude を使用して画像でビルドを開始する準備はできていますか?ここにいくつかの有用なリソースがあります:
その他のご質問がある場合は、サポートチームにお問い合わせください。開発者コミュニティに参加して、他のクリエイターと交流し、Anthropic の専門家からサポートを受けることもできます。
import base64
import httpx
# base64エンコードされた画像の場合
image1_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image1_media_type = "image/jpeg"
image1_data = base64.standard_b64encode(httpx.get(image1_url).content).decode("utf-8")
image2_url = "https://upload.wikimedia.org/wikipedia/commons/b/b5/Iridescent.green.sweat.bee1.jpg"
image2_media_type = "image/jpeg"
image2_data = base64.standard_b64encode(httpx.get(image2_url).content).decode("utf-8")
# URLベースの画像の場合、リクエストでURLを直接使用できますimage1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image1_media_type = "image/png"
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-7",
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-4-7",
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)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-4-7",
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)