Ce guide décrit comment travailler avec des images dans Claude, y compris les bonnes pratiques, des exemples de code et les limitations à garder à l'esprit.
Utilisez les capacités de vision de Claude via :
Plusieurs images peuvent être incluses dans une seule requête, que Claude analysera conjointement lors de la formulation de sa réponse. Cela peut être utile pour comparer ou mettre en contraste des images.
Le nombre maximal d'images par message ou par requête est :
Les dimensions maximales par image sont de 8000x8000 px.
Si une seule requête API contient plus de 20 images, une limite de dimension par image plus stricte s'applique. Sur Amazon Bedrock et Vertex AI, les blocs de documents tels que les PDF comptent également dans ce seuil. Les images dépassant la limite plus stricte sont rejetées avec une erreur invalid_request_error dont le message fait référence à « many-image requests » et indique la limite actuelle en pixels. Pour rester sous la limite sur toutes les plateformes, redimensionnez chaque image de sorte qu'aucune dimension ne dépasse 2000 px, ou limitez la requête à 20 blocs d'images et de documents ou moins.
La taille maximale par image est :
Bien que l'API prenne en charge jusqu'à 600 images par requête, les limites de taille de requête (32 Mo pour les points de terminaison standard ; moins sur certaines plateformes opérées par des partenaires, par exemple Amazon Bedrock et Vertex AI) peuvent être atteintes en premier. Pour de nombreuses images, envisagez de les téléverser avec l'API Files et de les référencer par file_id pour garder les charges utiles de requête petites.
Même en utilisant l'API Files, les requêtes contenant de nombreuses images volumineuses peuvent échouer avant d'atteindre le nombre de 600 images. Réduisez les dimensions ou la taille des fichiers d'images (par exemple, par sous-échantillonnage) avant le téléversement (voir Évaluer la taille de l'image).
Claude voit les images sous forme de « patches » (blocs) plutôt que de pixels. Chaque patch est un bloc de 28×28 pixels de l'image, appelé token visuel. Une image coûte donc ⌈largeur / 28⌉ × ⌈hauteur / 28⌉ tokens visuels.
Si Claude reçoit une image trop grande, il la redimensionne. La résolution d'image native maximale est :
Si votre image d'entrée est plus grande que cette résolution native, elle est d'abord redimensionnée à la plus grande taille possible qui préserve le rapport d'aspect. Toutes les images, redimensionnées ou non, sont ensuite complétées par du remplissage sur les bords inférieur et droit jusqu'à un multiple de 28 pixels. Voir Comment Claude redimensionne et remplit les images pour la règle exacte.
Lorsque vous demandez à Claude de produire des coordonnées (points, boîtes englobantes, etc.), il fonctionne mieux avec des coordonnées de pixels absolues exprimées par rapport à l'image redimensionnée qu'il voit. Voir Travailler avec des coordonnées et des boîtes englobantes pour savoir comment gérer cela.
Pour minimiser la latence et simplifier les flux de travail basés sur les coordonnées, vous devriez privilégier le redimensionnement des images avant de les téléverser.
Chaque image que vous incluez dans une requête à Claude compte dans votre utilisation de tokens. Pour calculer le coût approximatif, multipliez le nombre de tokens visuels de l'image (voir Évaluer la taille de l'image) par le prix par token du modèle que vous utilisez.
Voici des exemples de tokenisation et de coûts approximatifs pour différentes tailles d'images dans les contraintes de taille de l'API, basés sur le prix par token de Claude Sonnet 4.6 de 3 $ par million de tokens d'entrée :
| Taille de l'image | Nb de tokens | Coût / image | Coût / 1k images |
|---|---|---|---|
| 200x200 px(0,04 mégapixel) | 64 | ~0,00019 $ | ~0,19 $ |
| 1000x1000 px(1 mégapixel) | 1296 | ~0,0039 $ | ~3,89 $ |
| 1092x1092 px(1,19 mégapixel) | 1521 | ~0,0046 $ | ~4,56 $ |
| 1920x1080 px(2,07 mégapixels) | 1560 | ~0,0047 $ | ~4,68 $ |
| 2000x1500 px(3 mégapixels) | 1564 | ~0,0047 $ | ~4,69 $ |
| 3840x2160 px(8,29 mégapixels) | 1560 | ~0,0047 $ | ~4,68 $ |
Notez que les trois dernières images dépassent la résolution native et sont réduites avant traitement (à 1456x819 px, 1270x952 px et 1456x819 px respectivement), ce qui plafonne leur coût en tokens. L'image 4K ne coûte pas plus que l'image 1920x1080 car les deux sont réduites à la même taille ; la résolution supplémentaire est ignorée.
Claude Opus 4.7 est le premier modèle Claude avec prise en charge des images haute résolution ; Claude Opus 4.8, Claude Fable 5, Claude Mythos 5 et les modèles ultérieurs la prennent également en charge. La résolution d'image maximale est de 2576 pixels sur le bord long, contre 1568 px sur les modèles précédents. Cela débloque des gains de performance sur les charges de travail à forte composante visuelle et est particulièrement précieux pour l'utilisation d'ordinateur, la compréhension de captures d'écran et l'analyse de documents.
La prise en charge haute résolution est automatique sur Claude Opus 4.7 et les modèles ultérieurs et ne nécessite aucun en-tête bêta ni activation côté client.
Les images haute résolution sur Claude Opus 4.7, Claude Opus 4.8, Claude Fable 5 et Claude Mythos 5 peuvent utiliser jusqu'à environ 3x plus de tokens d'image que sur les modèles précédents (4784 contre 1568 tokens par image). Si vous n'avez pas besoin de la fidélité supplémentaire, sous-échantillonnez les images avant de les envoyer pour contrôler les coûts en tokens.
Voici les mêmes tailles d'images tokenisées pour Claude Opus 4.7 et Claude Opus 4.8, basées sur leur prix par token de 5 $ par million de tokens d'entrée :
| Taille de l'image | Nb de tokens | Coût / image | Coût / 1k images |
|---|---|---|---|
| 200x200 px(0,04 mégapixel) | 64 | ~0,00032 $ | ~0,32 $ |
| 1000x1000 px(1 mégapixel) | 1296 | ~0,0065 $ | ~6,48 $ |
| 1092x1092 px(1,19 mégapixel) | 1521 | ~0,0076 $ | ~7,61 $ |
| 1920x1080 px(2,07 mégapixels) | 2691 | ~0,013 $ | ~13,46 $ |
| 2000x1500 px(3 mégapixels) | 3888 | ~0,019 $ | ~19,44 $ |
| 3840x2160 px(8,29 mégapixels) | 4784 | ~0,024 $ | ~23,92 $ |
Seule la dernière image dépasse les limites supérieures : l'image 4K est réduite à 2576x1449 px avant traitement. La prise en charge haute résolution augmente les limites de résolution mais ne les supprime pas ; les images de plus de 2576 px sur le bord long (ou 4784 tokens visuels) sont toujours réduites.
Lorsque vous fournissez des images à Claude, gardez à l'esprit les points suivants pour obtenir les meilleurs résultats :
Claude peut localiser et étiqueter des régions d'une image (par exemple, renvoyer des « bounding boxes » (boîtes englobantes) pour des tableaux, des champs de formulaire, des éléments de graphique ou des composants d'interface utilisateur).
Claude fonctionne mieux avec des coordonnées de pixels absolues. Demandez-les explicitement dans votre prompt. Par exemple : « Renvoie la boîte englobante de chaque tableau sous la forme [x1, y1, x2, y2] en coordonnées de pixels. » Claude ne fonctionne pas bien lorsque vous demandez des coordonnées normalisées, par exemple : « Renvoie les coordonnées de boîte englobante entre 0 et 1000. » Demandez toujours des coordonnées de pixels et normalisez dans votre propre code si nécessaire.
Les coordonnées suivent la convention d'image standard : l'origine (0, 0) est le coin supérieur gauche de l'image, avec x augmentant vers la droite et y augmentant vers le bas. Les coordonnées que Claude renvoie sont des positions de pixels dans l'image que Claude voit : votre image après que Claude l'a redimensionnée pour s'adapter à la résolution native du modèle (voir Comment Claude redimensionne et remplit les images). Pour obtenir des coordonnées que vous pouvez utiliser directement, soit pré-redimensionnez votre image afin que les coordonnées correspondent une à une à l'image que vous avez (voir Redimensionner votre image avant de la téléverser), soit remettez à l'échelle les coordonnées que Claude renvoie (voir Remettre à l'échelle les coordonnées lorsque vous ne pouvez pas pré-redimensionner).
Le raisonnement spatial de Claude a des limites (voir Limitations). La précision des coordonnées est optimale lorsque vous indiquez le format de coordonnées attendu dans votre prompt et que vous vérifiez visuellement les résultats avant de traiter à grande échelle. Pour les téléversements de PDF, les pages sont rastérisées en images côté serveur à des dimensions que vous ne contrôlez pas, de sorte que les coordonnées renvoyées ne peuvent pas être mappées de manière fiable sur la page. Pour travailler avec des coordonnées sur du contenu PDF, rastérisez vous-même les pages en images et utilisez l'approche de pré-redimensionnement.
Claude trouve la plus grande taille préservant le rapport d'aspect qui satisfait les deux limites d'image du modèle :
⌈largeur / 28⌉ × ⌈hauteur / 28⌉ ne dépasse pas le budget de tokens visuels du modèle (1568 tokens pour la plupart des modèles, 4784 pour Claude Opus 4.7 et les modèles ultérieurs).Pour la plupart des photos et captures d'écran, c'est la limite de bord qui déclenche un redimensionnement. Pour les documents en portrait, la limite de tokens visuels se déclenche généralement en premier, et l'ignorer est la cause la plus courante de coordonnées mal alignées. Par exemple, une page A4 numérisée à 130 DPI fait 1075×1520 pixels : les deux côtés sont inférieurs à 1568 px, mais elle coûte 39 × 55 = 2145 tokens visuels, donc Claude la redimensionne à 924×1307.
Claude remplit ensuite chaque image, qu'elle ait été redimensionnée ou non, jusqu'au multiple de 28 pixels suivant sur les bords inférieur et droit (924×1307 devient 924×1316 dans l'exemple). Le remplissage ne contient aucun contenu : Claude perçoit l'image remplie, mais le contenu de la page n'occupe jamais que la région redimensionnée non remplie. Normalisez ou remettez toujours à l'échelle par les dimensions redimensionnées, pas par les dimensions remplies ; diviser par les dimensions remplies décale chaque coordonnée d'une petite quantité.
L'approche la plus fiable consiste à redimensionner vous-même votre image avant de la téléverser, de sorte que l'image que vous avez soit exactement l'image que Claude voit et que les coordonnées que Claude renvoie ne nécessitent aucune conversion.
L'implémentation de référence suivante calcule la taille exacte à laquelle Claude redimensionne une image :
import math
def count_image_tokens(width: int, height: int) -> int:
"""Visual tokens consumed by an image: one token per 28x28 pixel patch."""
return math.ceil(width / 28) * math.ceil(height / 28)
def resized_size(
width: int,
height: int,
max_edge: int = 1568,
max_tokens: int = 1568,
) -> tuple[int, int]:
"""The size Claude resizes an image to before padding.
Defaults are for most models. For Claude Opus 4.7 and later models, use
max_edge=2576 and max_tokens=4784. Returns (width, height). Images that
already fit within the limits are returned unchanged.
"""
def fits(w: int, h: int) -> bool:
return (
math.ceil(w / 28) * 28 <= max_edge
and math.ceil(h / 28) * 28 <= max_edge
and count_image_tokens(w, h) <= max_tokens
)
if fits(width, height):
return (width, height)
if height > width:
resized_h, resized_w = resized_size(height, width, max_edge, max_tokens)
return (resized_w, resized_h)
# Recherche binaire sur le côté long pour la plus grande taille préservant
# le ratio d'aspect qui tient.
aspect_ratio = width / height
lo, hi = 1, width # lo always fits; hi never fits
while lo + 1 < hi:
mid = (lo + hi) // 2
if fits(mid, max(round(mid / aspect_ratio), 1)):
lo = mid
else:
hi = mid
return (lo, max(round(lo / aspect_ratio), 1))
# L'exemple A4 de « Comment Claude redimensionne et remplit les images » :
print(resized_size(1075, 1520)) # (924, 1307)resized_size. Si l'image tient déjà dans les limites du modèle, resized_size renvoie ses dimensions inchangées et aucun redimensionnement n'est nécessaire.[x1, y1, x2, y2] en coordonnées de pixels. »Si vous ne pouvez pas pré-redimensionner (par exemple, lorsque l'image provient d'un système en amont que vous ne pouvez pas modifier), utilisez resized_size de Redimensionner votre image avant de la téléverser pour récupérer les dimensions que Claude a vues, puis mappez les coordonnées que Claude renvoie en coordonnées normalisées ou sur votre image originale. Cette approche nécessite de connaître les dimensions en pixels de l'image que vous avez téléversée, elle ne s'applique donc pas aux téléversements de PDF.
def to_relative_coordinates(
x: float,
y: float,
original_width: int,
original_height: int,
max_edge: int = 1568,
max_tokens: int = 1568,
) -> tuple[float, float]:
"""Map a pixel coordinate returned by Claude to relative coordinates in [0, 1].
Pass the dimensions of the image you uploaded. For Claude Opus 4.7 and
later models, use max_edge=2576 and max_tokens=4784.
"""
resized_w, resized_h = resized_size(
original_width, original_height, max_edge, max_tokens
)
return (x / resized_w, y / resized_h)
# Pour exprimer la coordonnée dans l'espace de pixels de votre image d'origine, multipliez la
# coordonnée relative par vos dimensions d'origine :
# (rel_x * largeur_originale, rel_y * hauteur_originale)Le remplissage n'est appliqué qu'aux bords inférieur et droit, donc l'origine ne se décale pas et une remise à l'échelle linéaire par axe est suffisante.
De nombreuses techniques de prompting qui fonctionnent bien pour les interactions textuelles avec Claude peuvent également être appliquées aux prompts basés sur des images.
Ces exemples démontrent les structures de prompts de bonnes pratiques impliquant des images.
Tout comme placer les documents longs avant votre requête améliore les résultats dans les prompts textuels, Claude fonctionne mieux lorsque les images viennent avant le texte. Les images placées après le texte ou intercalées avec le texte fonctionnent toujours bien, mais si votre cas d'usage le permet, préférez une structure image-puis-texte.
Les exemples suivants démontrent comment utiliser les capacités de vision de Claude en utilisant divers langages de programmation et approches. Vous pouvez fournir des images à Claude de trois manières :
imageSur Amazon Bedrock et Vertex AI, seules les sources encodées en base64 sont actuellement disponibles.
Les exemples de prompts base64 utilisent ces variables :
import base64
import httpx
# Pour les images encodées en 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")
# Pour les images basées sur une URL, vous pouvez utiliser les URL directement dans vos requêtesVoici des exemples de comment inclure des images dans une requête de l'API Messages en utilisant des images encodées en base64 et des références URL :
image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image1_media_type = "image/png"
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-8",
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-8",
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)Pour les images que vous utiliserez de manière répétée ou lorsque vous souhaitez éviter la surcharge d'encodage, utilisez l'API Files. Téléversez l'image une fois, puis référencez le file_id renvoyé dans les messages suivants au lieu de renvoyer les données base64.
Dans les conversations multi-tours et les flux de travail agentiques, chaque requête renvoie
l'historique complet de la conversation. Si les images sont encodées en base64, les octets complets de l'image
sont inclus dans la charge utile à chaque tour, ce qui peut augmenter considérablement
la taille de la requête et la latence à mesure que la conversation s'allonge. Téléverser les images vers
l'API Files et les référencer par file_id garde les charges utiles de requête petites
quel que soit le nombre d'images accumulées dans l'historique de la conversation.
client = anthropic.Anthropic()
# Téléverser le fichier image
with open("image.jpg", "rb") as f:
file_upload = client.beta.files.upload(file=("image.jpg", f, "image/jpeg"))
# Utiliser le fichier téléversé dans un message
message = client.beta.messages.create(
model="claude-opus-4-8",
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)Consultez les exemples de l'API Messages pour plus d'exemples de code et de détails sur les paramètres.
Bien que les capacités de compréhension d'images de Claude soient à la pointe de la technologie, il existe certaines limitations à connaître :
Examinez et vérifiez toujours attentivement les interprétations d'images de Claude, en particulier pour les cas d'usage à enjeux élevés. N'utilisez pas Claude pour des tâches nécessitant une précision parfaite ou une analyse d'images sensibles sans supervision humaine.
Prêt à commencer à construire avec des images en utilisant Claude ? Voici quelques ressources utiles :
Si vous avez d'autres questions, contactez l'équipe d'assistance. Vous pouvez également rejoindre la communauté de développeurs pour vous connecter avec d'autres créateurs et obtenir de l'aide des experts Anthropic.
Was this page helpful?