---
title: Coordonnées et boîtes englobantes
url: https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates
description: Comment Claude redimensionne les images, et comment travailler avec les coordonnées en pixels qu'il renvoie pour les boîtes englobantes, les points et les éléments d'interface utilisateur.
---

Claude peut localiser et étiqueter des régions d'une image (par exemple, en renvoyant des « bounding boxes » (boîtes englobantes) pour des tableaux, des champs de formulaire, des éléments de graphique ou des composants d'interface utilisateur). Ce guide explique comment Claude redimensionne les images avant de les traiter et comment travailler avec les coordonnées en pixels qu'il renvoie, afin que les boîtes et les points s'alignent sur votre image d'origine.

Vous en aurez besoin pour les pipelines d'OCR, l'extraction de formulaires, l'analyse de graphiques, la localisation d'éléments d'interface utilisateur et toute tâche où vous agissez sur une région spécifique d'une image. Pour l'envoi d'images, les formats pris en charge et les limites de résolution par modèle, consultez [Vision](https://platform.claude.com/docs/fr/build-with-claude/vision).

<Note>
  **Claude fonctionne mieux avec des coordonnées absolues en pixels.** Demandez-les explicitement dans votre prompt. Par exemple : *« Renvoie la boîte englobante de chaque tableau sous la forme `[x1, y1, x2, y2]` (coins supérieur gauche et inférieur droit) en coordonnées en pixels. »* Claude ne fonctionne pas bien lorsque vous demandez des coordonnées normalisées, par exemple : *« Renvoie les coordonnées de la boîte englobante entre `0` et `1000`. »* Demandez toujours des coordonnées en pixels et normalisez dans votre propre code si nécessaire. Pour obtenir les coordonnées sous forme de JSON lisible par machine plutôt qu'en prose, définissez un schéma avec les [sorties structurées](https://platform.claude.com/docs/fr/build-with-claude/structured-outputs), par exemple un objet avec un tableau `[x1, y1, x2, y2]` par élément détecté.
</Note>

Les coordonnées suivent la convention standard des images : l'origine `(0, 0)` est le coin supérieur gauche de l'image, x augmentant vers la droite et y augmentant vers le bas. Les coordonnées que Claude renvoie sont des positions en pixels dans l'image que Claude voit : votre image après que Claude l'a redimensionnée pour l'adapter à la résolution native du modèle (voir [Comment Claude redimensionne et complète les images](https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates#how-claude-resizes-and-pads-images)). Pour obtenir des coordonnées directement utilisables, soit vous pré-redimensionnez votre image afin que les coordonnées correspondent une à une à l'image dont vous disposez (voir [Redimensionner votre image avant de la téléverser](https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates#resize-your-image-before-uploading)), soit vous remettez à l'échelle les coordonnées que Claude renvoie (voir [Remettre à l'échelle les coordonnées lorsque vous ne pouvez pas pré-redimensionner](https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates#rescale-coordinates-when-you-cannot-pre-resize)).

<Note>
  Le raisonnement spatial de Claude a des limites (voir [Limitations](https://platform.claude.com/docs/fr/build-with-claude/vision#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 par échantillonnage avant de traiter à grande échelle. Les petits éléments perdent en précision lorsqu'une image est réduite : pour des cibles fines, recadrez la région d'intérêt et envoyez le recadrage (décalez les coordonnées renvoyées de l'origine du recadrage), ou utilisez un modèle du niveau haute résolution. Pour la [prise en charge des PDF](https://platform.claude.com/docs/fr/build-with-claude/pdf-support), 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 reporté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.
</Note>

## Comment Claude redimensionne et complète les images

Claude détermine la plus grande taille préservant le rapport d'aspect qui satisfait les deux limites d'image du modèle :

1. **Limite de bord :** aucun côté ne dépasse la longueur de bord maximale (1568 px pour le niveau standard, 2576 px pour le niveau haute résolution).
2. **Limite de tokens visuels :** le coût en tokens de l'image `⌈width / 28⌉ × ⌈height / 28⌉` ne dépasse pas le budget de tokens visuels du modèle (1568 tokens pour le niveau standard, 4784 pour le niveau haute résolution).

Consultez [Résolution et coût en tokens](https://platform.claude.com/docs/fr/build-with-claude/vision#evaluate-image-size) pour savoir quels modèles appartiennent à quel niveau.

Pour presque toutes les photos et captures d'écran, c'est la limite de tokens visuels qui détermine la taille finale. La limite de bord ne prend le dessus que pour les images allongées telles que les panoramas ou les longues captures d'écran de téléphone. Calculez la taille avec l'[implémentation de référence](https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates#resize-your-image-before-uploading) plutôt qu'en mettant à l'échelle manuellement selon la longueur de bord : une capture d'écran de 1920×1080 est redimensionnée en 1456×819, et non en 1568×882, et supposer que la limite de bord s'applique décale sensiblement chaque coordonnée de sa cible.

La limite de tokens peut également déclencher un redimensionnement lorsqu'aucun côté ne dépasse la limite de bord. Négliger ce point est la cause la plus fréquente de coordonnées mal alignées. Par exemple, une page A4 numérisée à 130 DPI mesure 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 en 924×1307.

<Note>
  Cet exemple suppose un modèle du niveau de résolution standard. Un modèle du niveau haute résolution ne redimensionne pas la même numérisation : 2145 tokens se situent dans son budget de 4784 tokens, de sorte que les coordonnées qu'il renvoie correspondent directement à l'original de 1075×1520. Les niveaux des modèles sont répertoriés dans [Résolution et coût en tokens](https://platform.claude.com/docs/fr/build-with-claude/vision#evaluate-image-size).
</Note>

Claude complète ensuite chaque image par du « padding » (remplissage), 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 complétée, mais le contenu de la page n'occupe jamais que la région redimensionnée sans remplissage. **Normalisez ou remettez toujours à l'échelle selon les dimensions redimensionnées, et non selon les dimensions avec remplissage** ; diviser par les dimensions avec remplissage décale légèrement chaque coordonnée.

## Redimensionner votre image avant de la téléverser

L'approche la plus fiable consiste à redimensionner vous-même votre image avant de la téléverser, de sorte que l'image dont vous disposez soit exactement celle que Claude voit et que les coordonnées renvoyées par Claude ne nécessitent aucune conversion.

Vérifiez d'abord à quel niveau de résolution appartient votre modèle (voir [Résolution et coût en tokens](https://platform.claude.com/docs/fr/build-with-claude/vision#evaluate-image-size)) et passez les limites de bord et de tokens correspondantes. L'implémentation de référence suivante calcule la taille exacte à laquelle Claude redimensionne une image :

<CodeGroup exclude="shell">
  <CodeGroupItem language="cURL">
    Calculez cette taille dans le code.
  </CodeGroupItem>

  <CodeGroupItem language="CLI">
    Calculez cette taille dans le code.
  </CodeGroupItem>

  ```python Python
  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 the standard resolution tier. For high-resolution-tier
      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 grand côté pour trouver la plus grande taille
      # préservant le ratio 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 complète les images » :
  print(resized_size(1075, 1520))  # (924, 1307)

  # Pour appliquer le redimensionnement, utilisez votre bibliothèque d'images, par ex. Pillow :
  # image.resize(resized_size(*image.size))
  ```

  ```typescript TypeScript
  /** Visual tokens consumed by an image: one token per 28x28 pixel patch. */
  function countImageTokens(width: number, height: number): number {
    return Math.ceil(width / 28) * Math.ceil(height / 28);
  }

  /**
   * Round half to even (banker's rounding), matching Python's round(). The
   * live API resolves exact .5 ties toward the even neighbor, so Math.round
   * (which rounds halves up) would compute a different size for some images.
   */
  function roundTiesToEven(value: number): number {
    const floor = Math.floor(value);
    if (value - floor !== 0.5) {
      return Math.round(value);
    }
    return floor % 2 === 0 ? floor : floor + 1;
  }

  /**
   * The size Claude resizes an image to before padding.
   *
   * Defaults are for the standard resolution tier. For high-resolution-tier
   * models, use maxEdge = 2576 and maxTokens = 4784. Returns [width, height].
   * Images that already fit within the limits are returned unchanged.
   */
  function resizedSize(
    width: number,
    height: number,
    maxEdge = 1568,
    maxTokens = 1568
  ): [number, number] {
    const fits = (w: number, h: number): boolean =>
      Math.ceil(w / 28) * 28 <= maxEdge &&
      Math.ceil(h / 28) * 28 <= maxEdge &&
      countImageTokens(w, h) <= maxTokens;

    if (fits(width, height)) {
      return [width, height];
    }
    if (height > width) {
      const [resizedH, resizedW] = resizedSize(height, width, maxEdge, maxTokens);
      return [resizedW, resizedH];
    }

    // Recherche binaire sur le bord long pour trouver la plus grande taille préservant
    // le ratio d'aspect qui tient.
    const aspectRatio = width / height;
    let lo = 1; // lo always fits
    let hi = width; // hi never fits
    while (lo + 1 < hi) {
      const mid = Math.floor((lo + hi) / 2);
      if (fits(mid, Math.max(roundTiesToEven(mid / aspectRatio), 1))) {
        lo = mid;
      } else {
        hi = mid;
      }
    }
    return [lo, Math.max(roundTiesToEven(lo / aspectRatio), 1)];
  }

  // L'exemple A4 tiré de « Comment Claude redimensionne et remplit les images » :
  console.log(resizedSize(1075, 1520)); // [ 924, 1307 ]

  // Pour appliquer le redimensionnement, utilisez votre bibliothèque d'images, par ex. sharp :
  // await sharp(input).resize(width, height).toBuffer()
  ```

  ```csharp C#
  // Tokens visuels consommés par une image : un token par pavé de 28x28 pixels.
  static int CountImageTokens(int width, int height)
  {
      return (width + 27) / 28 * ((height + 27) / 28); // ceil(w/28) * ceil(h/28)
  }

  // La taille à laquelle Claude redimensionne une image avant le remplissage. Les valeurs par
  // défaut correspondent au niveau de résolution standard ; pour les modèles haute résolution,
  // passez maxEdge: 2576, maxTokens: 4784. Les images déjà dans les limites
  // sont renvoyées inchangées.
  static (int Width, int Height) ResizedSize(
      int width, int height, int maxEdge = 1568, int maxTokens = 1568)
  {
      bool Fits(int w, int h) =>
          (w + 27) / 28 * 28 <= maxEdge
          && (h + 27) / 28 * 28 <= maxEdge
          && CountImageTokens(w, h) <= maxTokens;

      if (Fits(width, height))
      {
          return (width, height);
      }
      if (height > width)
      {
          (int resizedH, int resizedW) = ResizedSize(height, width, maxEdge, maxTokens);
          return (resizedW, resizedH);
      }

      // Recherche binaire le long du grand côté pour la plus grande taille préservant le ratio
      // qui tient. Le petit côté arrondit les demis au pair, comme l'API en direct
      // sur les égalités à .5 exactes (MidpointRounding.ToEven, défaut de Math.Round).
      double aspectRatio = (double)width / height;
      int lo = 1; // lo always fits
      int hi = width; // hi never fits
      while (lo + 1 < hi)
      {
          int mid = (lo + hi) / 2;
          if (Fits(mid, ShortEdge(mid)))
          {
              lo = mid;
          }
          else
          {
              hi = mid;
          }
      }
      return (lo, ShortEdge(lo));

      int ShortEdge(int longEdge) =>
          Math.Max((int)Math.Round(longEdge / aspectRatio, MidpointRounding.ToEven), 1);
  }

  // L'exemple A4 de « Comment Claude redimensionne et remplit les images » :
  Console.WriteLine(ResizedSize(1075, 1520)); // (924, 1307)
  ```

  ```go Go
  // countImageTokens est le nombre de tokens visuels consommés par une image : un token par
  // patch de 28x28 pixels.
  func countImageTokens(width, height int) int {
  	return ((width + 27) / 28) * ((height + 27) / 28) // ceil(w/28) * ceil(h/28)
  }

  // resizedSize est la taille à laquelle Claude redimensionne une image avant le remplissage,
  // sous forme (width, height). Passez maxEdge 1568 et maxTokens 1568 pour le niveau de
  // résolution standard, ou 2576 et 4784 pour le niveau haute résolution. Les images
  // qui respectent déjà les limites sont renvoyées inchangées.
  // L'exemple A4 de « Comment Claude redimensionne et remplit les images » :
  // resizedSize(1075, 1520, 1568, 1568) renvoie (924, 1307).
  func resizedSize(width, height, maxEdge, maxTokens int) (int, int) {
  	fits := func(w, h int) bool {
  		return ((w+27)/28)*28 <= maxEdge &&
  			((h+27)/28)*28 <= maxEdge &&
  			countImageTokens(w, h) <= maxTokens
  	}

  	if fits(width, height) {
  		return width, height
  	}
  	if height > width {
  		resizedH, resizedW := resizedSize(height, width, maxEdge, maxTokens)
  		return resizedW, resizedH
  	}

  	// Recherche binaire le long du bord long pour trouver la plus grande taille préservant
  	// le ratio qui tient. Le bord court arrondit les demis au pair (math.RoundToEven),
  	// conforme à l'API réelle aux égalités .5 exactes ; math.Round les arrondirait vers le haut.
  	aspectRatio := float64(width) / float64(height)
  	lo, hi := 1, width // lo always fits; hi never fits
  	for lo+1 < hi {
  		mid := (lo + hi) / 2
  		short := max(int(math.RoundToEven(float64(mid)/aspectRatio)), 1)
  		if fits(mid, short) {
  			lo = mid
  		} else {
  			hi = mid
  		}
  	}
  	return lo, max(int(math.RoundToEven(float64(lo)/aspectRatio)), 1)
  }
  ```

  ```java Java
  /** A resized image size, as returned by resizedSize. */
  record Size(int width, int height) {}

  /** Visual tokens consumed by an image: one token per 28x28 pixel patch. */
  static int countImageTokens(int width, int height) {
      return Math.ceilDiv(width, 28) * Math.ceilDiv(height, 28);
  }

  /**
   * The size Claude resizes an image to before padding.
   *
   * <p>Pass maxEdge 1568 and maxTokens 1568 for the standard resolution tier,
   * or 2576 and 4784 for the high-resolution tier. Images that already fit
   * within the limits are returned unchanged.
   *
   * <p>The A4 example from "How Claude resizes and pads images":
   * resizedSize(1075, 1520, 1568, 1568) returns new Size(924, 1307).
   */
  static Size resizedSize(int width, int height, int maxEdge, int maxTokens) {
      if (fits(width, height, maxEdge, maxTokens)) {
          return new Size(width, height);
      }
      if (height > width) {
          Size rotated = resizedSize(height, width, maxEdge, maxTokens);
          return new Size(rotated.height(), rotated.width());
      }

      // Recherche binaire sur le grand côté pour la plus grande taille préservant le ratio
      // qui tient. Le petit côté arrondit les demis au pair (Math.rint),
      // comme l'API réelle aux égalités exactes à .5 ; Math.round les arrondirait vers le haut.
      double aspectRatio = (double) width / height;
      int lo = 1; // lo always fits
      int hi = width; // hi never fits
      while (lo + 1 < hi) {
          int mid = (lo + hi) / 2;
          if (fits(mid, shortEdge(mid, aspectRatio), maxEdge, maxTokens)) {
              lo = mid;
          } else {
              hi = mid;
          }
      }
      return new Size(lo, shortEdge(lo, aspectRatio));
  }

  private static boolean fits(int width, int height, int maxEdge, int maxTokens) {
      return Math.ceilDiv(width, 28) * 28 <= maxEdge
              && Math.ceilDiv(height, 28) * 28 <= maxEdge
              && countImageTokens(width, height) <= maxTokens;
  }

  private static int shortEdge(int longEdge, double aspectRatio) {
      return Math.max((int) Math.rint(longEdge / aspectRatio), 1);
  }
  ```

  ```php PHP
  // Tokens visuels consommés par une image : un token par pavé de 28x28 pixels.
  function countImageTokens(int $width, int $height): int
  {
      return intdiv($width + 27, 28) * intdiv($height + 27, 28);
  }

  /**
   * The size Claude resizes an image to before padding, as [width, height].
   *
   * Defaults are for the standard resolution tier. For high-resolution-tier
   * models, pass maxEdge: 2576, maxTokens: 4784. Images that already fit
   * within the limits are returned unchanged.
   */
  function resizedSize(int $width, int $height, int $maxEdge = 1568, int $maxTokens = 1568): array
  {
      $fits = fn (int $w, int $h): bool =>
          intdiv($w + 27, 28) * 28 <= $maxEdge
          && intdiv($h + 27, 28) * 28 <= $maxEdge
          && countImageTokens($w, $h) <= $maxTokens;

      if ($fits($width, $height)) {
          return [$width, $height];
      }
      if ($height > $width) {
          [$resizedH, $resizedW] = resizedSize($height, $width, $maxEdge, $maxTokens);
          return [$resizedW, $resizedH];
      }

      // Recherche binaire sur le grand côté pour trouver la plus grande taille
      // préservant le ratio qui tient. Le petit côté arrondit .5 au pair
      // (PHP_ROUND_HALF_EVEN), comme l'API réelle aux égalités exactes à .5.
      $aspectRatio = $width / $height;
      $lo = 1; // lo always fits
      $hi = $width; // hi never fits
      while ($lo + 1 < $hi) {
          $mid = intdiv($lo + $hi, 2);
          $short = max((int) round($mid / $aspectRatio, 0, PHP_ROUND_HALF_EVEN), 1);
          if ($fits($mid, $short)) {
              $lo = $mid;
          } else {
              $hi = $mid;
          }
      }

      return [$lo, max((int) round($lo / $aspectRatio, 0, PHP_ROUND_HALF_EVEN), 1)];
  }

  // L'exemple A4 de « Comment Claude redimensionne et remplit les images » :
  [$resizedWidth, $resizedHeight] = resizedSize(1075, 1520);
  echo "({$resizedWidth}, {$resizedHeight})\n"; // (924, 1307)
  ```

  ```ruby Ruby
  # Tokens visuels consommés par une image : un token par patch de 28x28 pixels.
  def count_image_tokens(width, height)
    width.ceildiv(28) * height.ceildiv(28)
  end

  # La taille à laquelle Claude redimensionne une image avant remplissage, sous forme [width, height].
  #
  # Les valeurs par défaut correspondent au niveau de résolution standard. Pour les modèles
  # haute résolution, passez max_edge: 2576, max_tokens: 4784. Les images qui tiennent déjà
  # dans les limites sont renvoyées inchangées.
  def resized_size(width, height, max_edge = 1568, max_tokens = 1568)
    fits = lambda do |w, h|
      w.ceildiv(28) * 28 <= max_edge &&
        h.ceildiv(28) * 28 <= max_edge &&
        count_image_tokens(w, h) <= max_tokens
    end

    return [width, height] if fits.call(width, height)

    if height > width
      resized_h, resized_w = resized_size(height, width, max_edge, max_tokens)
      return [resized_w, resized_h]
    end

    # Recherche binaire le long du bord long pour trouver la plus grande taille préservant
    # le ratio qui tient. Le bord court arrondit au pair (round(half: :even)),
    # ce qui correspond à l'API en direct pour les égalités exactes à .5.
    aspect_ratio = width.fdiv(height)
    lo = 1      # lo always fits
    hi = width  # hi never fits
    while lo + 1 < hi
      mid = (lo + hi) / 2
      short = [(mid / aspect_ratio).round(half: :even), 1].max
      if fits.call(mid, short)
        lo = mid
      else
        hi = mid
      end
    end

    [lo, [(lo / aspect_ratio).round(half: :even), 1].max]
  end

  # L'exemple A4 de « Comment Claude redimensionne et remplit les images » :
  p resized_size(1075, 1520) # => [924, 1307]
  ```
</CodeGroup>

1. Redimensionnez l'image aux dimensions renvoyées par la fonction utilitaire de redimensionnement. Si l'image respecte déjà les limites du modèle, la fonction renvoie ses dimensions inchangées et aucun redimensionnement n'est nécessaire.
2. [Envoyez l'image redimensionnée](https://platform.claude.com/docs/fr/build-with-claude/vision#send-images-to-claude) à l'API. Ne la complétez pas vous-même. Claude gère le remplissage, et le remplissage ne décale pas l'origine des coordonnées.
3. Dans votre prompt, demandez explicitement des coordonnées en pixels. Par exemple : *« Renvoie le point de clic du bouton Submit sous la forme `[x, y]` en coordonnées en pixels. »*
4. Utilisez les coordonnées renvoyées directement sur l'image que vous avez envoyée. Si vous avez besoin de coordonnées normalisées, divisez par les dimensions de l'image que vous avez envoyée, et non par les dimensions de l'image d'origine ni par les dimensions avec remplissage.

<Note>
  Le point de terminaison de [comptage des tokens](https://platform.claude.com/docs/fr/build-with-claude/token-counting) estime le coût en tokens d'une image à partir de ses dimensions sans la traiter entièrement, de sorte qu'un comptage réussi ne signifie pas que l'image respecte les [limites de requête](https://platform.claude.com/docs/fr/build-with-claude/vision#request-limits) de l'API Messages. Une image peut être comptée avec succès et être tout de même rejetée lorsque vous l'envoyez.
</Note>

## Transformer le redimensionnement en erreur avec `transformations`

Le pré-redimensionnement ne protège vos coordonnées que tant que votre pipeline continue de produire les bonnes tailles. Une nouvelle source d'images ou le passage à un modèle d'un niveau de résolution différent peut réintroduire discrètement le redimensionnement côté serveur. Pour transformer cette dérive silencieuse en erreur visible, définissez le champ facultatif `transformations` sur un bloc de contenu image dans une requête [Messages](https://platform.claude.com/docs/fr/api/messages) :

```json
{
  "type": "image",
  "source": { "type": "base64", "media_type": "image/png", "data": "..." },
  "transformations": { "oversized_image": "error" }
}
```

Une requête dont une image marquée (tout bloc qui définit `"oversized_image": "error"`) serait redimensionnée est rejetée avec une erreur 400 `invalid_request_error` indiquant les dimensions de l'image et les plus grandes dimensions acceptables. Le fait qu'une image déclenche ou non le rejet dépend des [limites de chaque modèle nommé dans la requête](https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates#how-claude-resizes-and-pads-images) : l'exemple de 1920×1080 ci-dessous est rejeté par un modèle du niveau standard mais respecte le niveau haute résolution :

```text wrap
messages.0.content.0: image dimensions 1920x1080 exceed the maximum image size of a model named on this request and would be downsized to 1456x819; scale the image to at most 1456x819 or set the image's oversized_image setting to "downsize"
```

Remettez à l'échelle selon la cible indiquée et renvoyez la requête : la cible est la plus grande taille, au rapport d'aspect de votre image, que chaque modèle nommé dans la requête accepte. La manière dont les images marquées interagissent avec la [bêta de repli côté serveur](https://platform.claude.com/docs/fr/build-with-claude/refusals-and-fallback#server-side-fallback) est décrite avec cette fonctionnalité ; dans tous les modes, une image marquée n'est jamais servie redimensionnée.

Le paramètre s'applique par image. `"oversized_image": "downsize"` (la valeur par défaut lorsque le champ est omis) conserve le redimensionnement automatique tel que décrit sur cette page. Chaque bloc image n'est vérifié que par rapport à son propre paramètre, de sorte qu'une même requête peut mélanger des images dont les dimensions sont déterminantes (une capture d'écran sur laquelle vous allez cliquer) et des images pour lesquelles le redimensionnement est sans conséquence (un logo). Ce que le paramètre change et ne change pas :

* Le remplissage ([qui ne supprime jamais de contenu](https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates#how-claude-resizes-and-pads-images)), la conversion de format et la correction d'orientation se déroulent comme d'habitude.
* Les limites strictes (8000 px sur le côté le plus long, et la limite par image plus stricte pour les [requêtes comportant de nombreuses images](https://platform.claude.com/docs/fr/build-with-claude/vision#request-limits)) constituent des rejets distincts ; ce paramètre ne permet jamais à une image de les franchir.
* Les images fournies par URL ou par ID de fichier sont vérifiées une fois leurs octets récupérés ; ces rejets portent le même message sans la position en tête, de sorte qu'ils n'identifient pas quelle image a échoué ; seules les images base64 intégrées sont désignées par leur position dans l'erreur.
* Les [pages PDF](https://platform.claude.com/docs/fr/build-with-claude/pdf-support) sont rastérisées côté serveur à des dimensions que vous ne contrôlez pas ; le bloc `document` n'accepte pas ce champ (un bloc image imbriqué dans le contenu d'un document l'accepte comme n'importe quel autre).
* Une image marquée dont les dimensions ne peuvent pas être déterminées est rejetée plutôt que transmise : ce rejet indique que les dimensions source de l'image n'ont pas pu être déterminées, et non le message de redimensionnement cité ci-dessus. Aucune image définissant `"error"` n'atteint le modèle redimensionnée.

Le point de terminaison de [comptage des tokens](https://platform.claude.com/docs/fr/build-with-claude/token-counting) prend également en compte `transformations`, en rejetant une image intégrée exactement comme le ferait l'API Messages ; vous pouvez ainsi vérifier si une image intégrée est acceptée sans redimensionnement, avant d'exécuter l'inférence. Le comptage rejette les images fournies par URL ou par identifiant de fichier au lieu de les récupérer ; une image marquée provenant de ces sources n'est donc vérifiée qu'au moment de l'appel à Messages.

## Remettre à l'échelle les coordonnées lorsque vous ne pouvez pas pré-redimensionner

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 la fonction utilitaire de redimensionnement de [Redimensionner votre image avant de la téléverser](https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates#resize-your-image-before-uploading) pour retrouver les dimensions que Claude a vues, puis convertissez les coordonnées renvoyées par Claude en coordonnées normalisées ou reportez-les sur votre image d'origine. À moins qu'une image n'[opte pour une erreur à la place](https://platform.claude.com/docs/fr/build-with-claude/vision-coordinates#oversized-image-error), Claude redimensionne les images trop grandes plutôt que de les rejeter, jusqu'aux [limites de requête](https://platform.claude.com/docs/fr/build-with-claude/vision#request-limits) de l'API. Au-delà de ces limites, la requête échoue avec une erreur de validation. Passez les limites de niveau correspondant au modèle que vous avez appelé : les limites du mauvais niveau retrouvent de mauvaises dimensions redimensionnées et décalent silencieusement chaque coordonnée. 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.

Les captures d'écran et les images de zoom que vous renvoyez aux ensembles d'outils d'[utilisation de l'ordinateur](https://platform.claude.com/docs/fr/agents-and-tools/tool-use/computer-use-tool#handle-coordinate-scaling-for-higher-resolutions) et d'[utilisation du navigateur](https://platform.claude.com/docs/fr/agents-and-tools/tool-use/browser-use-tool#targets-and-coordinates) constituent une exception au redimensionnement automatique. L'API rejette une image `tool_result` qui dépasse les limites du modèle avec une erreur de validation au lieu de la redimensionner. Redimensionnez ces images dans votre application avant de les renvoyer, puis remettez à l'échelle les coordonnées renvoyées par Claude selon les dimensions de votre écran.

<CodeGroup exclude="shell">
  <CodeGroupItem language="cURL">
    Convertissez les coordonnées dans le code.
  </CodeGroupItem>

  <CodeGroupItem language="CLI">
    Convertissez les coordonnées dans le code.
  </CodeGroupItem>

  ```python Python
  # Cet utilitaire appelle resized_size de l'exemple de redimensionnement sur cette page.
  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 high-resolution-tier
      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)


  # Un coin de tableau que Claude renvoie en (462, 653.5) sur la page A4 redimensionnée
  # se reporte sur l'original 1075x1520 comme suit :
  rel_x, rel_y = to_relative_coordinates(462, 653.5, 1075, 1520)
  print((rel_x * 1075, rel_y * 1520))  # (537.5, 760.0)
  ```

  ```typescript TypeScript
  // Cette fonction appelle resizedSize de l'exemple de redimensionnement sur cette page.
  /**
   * Map a pixel coordinate returned by Claude to relative coordinates in [0, 1].
   *
   * Pass the dimensions of the image you uploaded. For high-resolution-tier
   * models, use maxEdge = 2576 and maxTokens = 4784.
   */
  function toRelativeCoordinates(
    x: number,
    y: number,
    originalWidth: number,
    originalHeight: number,
    maxEdge = 1568,
    maxTokens = 1568
  ): [number, number] {
    const [resizedW, resizedH] = resizedSize(originalWidth, originalHeight, maxEdge, maxTokens);
    return [x / resizedW, y / resizedH];
  }

  // Un coin de tableau que Claude renvoie à (462, 653.5) sur la page A4 redimensionnée
  // se reporte sur l'original 1075x1520 comme suit :
  const [relX, relY] = toRelativeCoordinates(462, 653.5, 1075, 1520);
  console.log([relX * 1075, relY * 1520]); // [ 537.5, 760 ]
  ```

  ```csharp C#
  // Cet utilitaire appelle ResizedSize de l'exemple de redimensionnement sur cette page.
  // Convertit une coordonnée en pixels renvoyée par Claude en coordonnées relatives dans
  // [0, 1]. Passez les dimensions de l'image téléversée, et les mêmes limites
  // de niveau que pour ResizedSize.
  static (double X, double Y) ToRelativeCoordinates(
      double x, double y, int originalWidth, int originalHeight,
      int maxEdge = 1568, int maxTokens = 1568)
  {
      (int resizedW, int resizedH) =
          ResizedSize(originalWidth, originalHeight, maxEdge, maxTokens);
      return (x / resizedW, y / resizedH);
  }

  // Un coin de tableau que Claude renvoie à (462, 653.5) sur la page A4 redimensionnée se
  // reporte sur l'original 1075x1520 comme suit :
  (double relX, double relY) = ToRelativeCoordinates(462, 653.5, 1075, 1520);
  Console.WriteLine((relX * 1075, relY * 1520)); // (537.5, 760)
  ```

  ```go Go
  // Cet utilitaire appelle resizedSize de l'exemple de redimensionnement sur cette page.

  // toRelativeCoordinates convertit une coordonnée en pixels renvoyée par Claude en
  // coordonnées relatives dans [0, 1]. Passez les dimensions de l'image que vous avez
  // téléversée, et les mêmes limites de niveau que celles utilisées pour resizedSize.
  func toRelativeCoordinates(
  	x, y float64,
  	originalWidth, originalHeight, maxEdge, maxTokens int,
  ) (float64, float64) {
  	resizedW, resizedH := resizedSize(originalWidth, originalHeight, maxEdge, maxTokens)
  	return x / float64(resizedW), y / float64(resizedH)
  }

  // Pour revenir à l'espace de pixels de votre image d'origine, multipliez par les dimensions
  // d'origine : un coin de tableau renvoyé à (462, 653.5) sur la page A4 redimensionnée
  // est (relX*1075, relY*1520) = (537.5, 760) sur l'original 1075x1520.
  ```

  ```java Java
  // Cette fonction appelle resizedSize de l'exemple de redimensionnement sur cette page.
  /** A coordinate scaled into the [0, 1] range on both axes. */
  record RelativeCoordinate(double x, double y) {}

  /**
   * Map a pixel coordinate returned by Claude to relative coordinates in
   * [0, 1]. Pass the dimensions of the image you uploaded, and the same tier
   * limits used for resizedSize.
   */
  static RelativeCoordinate toRelativeCoordinates(
          double x, double y, int originalWidth, int originalHeight, int maxEdge, int maxTokens) {
      Size resized = resizedSize(originalWidth, originalHeight, maxEdge, maxTokens);
      return new RelativeCoordinate(x / resized.width(), y / resized.height());
  }

  // Pour revenir à l'espace de pixels de votre image d'origine, multipliez par les
  // dimensions d'origine : un coin de tableau renvoyé à (462, 653.5) sur la page A4 redim.
  // vaut (relative.x() * 1075, relative.y() * 1520) = (537.5, 760) sur
  // l'original 1075x1520.
  ```

  ```php PHP
  // Cette fonction appelle resizedSize() de l'exemple de redimensionnement de cette page.
  /**
   * Map a pixel coordinate returned by Claude to relative coordinates in
   * [0, 1], as [x, y]. Pass the dimensions of the image you uploaded, and the
   * same tier limits used for resizedSize.
   */
  function toRelativeCoordinates(
      float $x,
      float $y,
      int $originalWidth,
      int $originalHeight,
      int $maxEdge = 1568,
      int $maxTokens = 1568,
  ): array {
      [$resizedW, $resizedH] = resizedSize($originalWidth, $originalHeight, $maxEdge, $maxTokens);

      return [$x / $resizedW, $y / $resizedH];
  }

  // Un coin de tableau que Claude renvoie à (462, 653.5) sur la page A4 redimensionnée
  // se reporte sur l'original 1075x1520 comme suit :
  [$relX, $relY] = toRelativeCoordinates(462, 653.5, 1075, 1520);
  echo '(' . $relX * 1075 . ', ' . $relY * 1520 . ")\n"; // (537.5, 760)
  ```

  ```ruby Ruby
  # Cette fonction appelle resized_size de l'exemple de redimensionnement sur cette page.
  # Convertit une coordonnée en pixels renvoyée par Claude en coordonnées relatives dans
  # [0, 1], sous forme [x, y]. Passez les dimensions de l'image téléversée, et les
  # mêmes limites de niveau que celles utilisées pour resized_size.
  def to_relative_coordinates(
    x, y, original_width, original_height, max_edge = 1568, max_tokens = 1568
  )
    resized_w, resized_h = resized_size(original_width, original_height, max_edge, max_tokens)
    [x.fdiv(resized_w), y.fdiv(resized_h)]
  end

  # Un coin de tableau que Claude renvoie à (462, 653.5) sur la page A4 redimensionnée
  # se reporte sur l'original 1075x1520 comme suit :
  rel_x, rel_y = to_relative_coordinates(462, 653.5, 1075, 1520)
  p [rel_x * 1075, rel_y * 1520] # => [537.5, 760.0]
  ```
</CodeGroup>

Le remplissage n'est appliqué que sur les bords inférieur et droit, de sorte que l'origine ne se décale pas et qu'une remise à l'échelle linéaire par axe suffit. Bornez les coordonnées renvoyées aux dimensions redimensionnées avant de les remettre à l'échelle, afin qu'un point légèrement en dehors de l'image ne puisse pas être reporté en dehors de votre original.

Les coordonnées relatives se multiplient par la surface sur laquelle vous agissez, quelle qu'elle soit : l'image d'origine, une numérisation en pleine résolution ou un écran. Lorsque vous agissez sur un écran et que les pixels de la capture d'écran diffèrent des coordonnées logiques (écrans HiDPI), divisez également par le facteur d'échelle de l'affichage. Les [recommandations de mise à l'échelle de l'outil d'utilisation de l'ordinateur](https://platform.claude.com/docs/fr/agents-and-tools/tool-use/computer-use-tool#handle-coordinate-scaling-for-higher-resolutions) couvrent ce cas.

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Agent Skills" icon="stack" href="https://platform.claude.com/docs/fr/agents-and-tools/agent-skills/overview">
    Les Agent Skills sont des capacités modulaires qui étendent les fonctionnalités de Claude. Chaque Skill regroupe des instructions, des métadonnées et des ressources facultatives (scripts, modèles) que Claude utilise automatiquement lorsque c'est pertinent.
  </Card>

  <Card title="Outil d'utilisation de l'ordinateur" icon="computer" href="https://platform.claude.com/docs/fr/agents-and-tools/tool-use/computer-use-tool">
    Donnez à Claude le contrôle des captures d'écran, de la souris et du clavier d'un environnement de bureau avec l'outil d'utilisation de l'ordinateur.
  </Card>

  <Card title="Prise en charge des PDF" icon="file" href="https://platform.claude.com/docs/fr/build-with-claude/pdf-support">
    Traitez des PDF avec Claude. Extrayez du texte, analysez des graphiques et comprenez le contenu visuel de vos documents.
  </Card>

  <Card title="Comptage des tokens" icon="calculator" href="https://platform.claude.com/docs/fr/build-with-claude/token-counting">
    Comptez les tokens d'un message avant de l'envoyer à Claude. Utilisez les comptages de tokens pour gérer les limites de débit et les coûts, prendre des décisions de routage de modèle et ajuster les prompts à une longueur cible.
  </Card>
</CardGroup>
