Claude puede localizar y etiquetar regiones de una imagen (por ejemplo, devolviendo "bounding boxes" (cuadros delimitadores) para tablas, campos de formulario, elementos de gráficos o componentes de interfaz de usuario). Esta guía explica cómo Claude redimensiona las imágenes antes de procesarlas y cómo trabajar con las coordenadas de píxeles que devuelve, de modo que los cuadros y puntos se alineen con tu imagen original.
Necesitarás esto para pipelines de OCR, extracción de formularios, análisis de gráficos, localización de elementos de interfaz de usuario y cualquier tarea en la que actúes sobre una región específica de una imagen. Para el envío de imágenes, los formatos compatibles y los límites de resolución por modelo, consulta Visión.
Claude funciona mejor con coordenadas de píxeles absolutas. Pídelas explícitamente en tu prompt. Por ejemplo: "Devuelve el cuadro delimitador de cada tabla como [x1, y1, x2, y2] en coordenadas de píxeles." Claude no funciona bien cuando le pides coordenadas normalizadas, por ejemplo: "Devuelve las coordenadas del cuadro delimitador entre 0 y 1000." Pide siempre coordenadas de píxeles y normalízalas en tu propio código si lo necesitas.
Las coordenadas siguen la convención estándar de imágenes: el origen (0, 0) es la esquina superior izquierda de la imagen, con x aumentando hacia la derecha e y aumentando hacia abajo. Las coordenadas que Claude devuelve son posiciones de píxeles en la imagen que Claude ve: tu imagen después de que Claude la redimensiona para ajustarse a la resolución nativa del modelo (consulta Cómo Claude redimensiona y rellena las imágenes). Para obtener coordenadas que puedas usar directamente, redimensiona previamente tu imagen para que las coordenadas se correspondan uno a uno con la imagen que tienes (consulta Redimensiona tu imagen antes de subirla), o reescala las coordenadas que Claude devuelve (consulta Reescala las coordenadas cuando no puedas redimensionar previamente).
El razonamiento espacial de Claude tiene límites (consulta Limitaciones). La precisión de las coordenadas es mejor cuando indicas el formato de coordenadas esperado en tu prompt y verificas visualmente los resultados antes de procesar a gran escala. Para el soporte de PDF, las páginas se rasterizan a imágenes en el servidor con dimensiones que no controlas, por lo que las coordenadas devueltas no se pueden mapear de forma fiable de vuelta a la página. Para trabajar con coordenadas en contenido PDF, rasteriza las páginas a imágenes tú mismo y usa el enfoque de redimensionamiento previo.
Claude encuentra el tamaño más grande que preserva la relación de aspecto y que satisface ambos límites de imagen del modelo:
⌈width / 28⌉ × ⌈height / 28⌉ no excede el presupuesto de tokens visuales del modelo (1568 tokens en el nivel estándar, 4784 en el nivel de alta resolución).Consulta Resolución y costo en tokens para saber qué modelos están en cada nivel.
Para la mayoría de las fotos y capturas de pantalla, el límite de borde es lo que desencadena un redimensionamiento. Para documentos en formato vertical, el límite de tokens visuales suele activarse primero, y pasarlo por alto es la causa más común de coordenadas desalineadas. Por ejemplo, una página A4 escaneada a 130 DPI tiene 1075×1520 píxeles: ambos lados están por debajo de 1568 px, pero cuesta 39 × 55 = 2145 tokens visuales, por lo que Claude la redimensiona a 924×1307.
Luego, Claude rellena cada imagen, redimensionada o no, hasta el siguiente múltiplo de 28 píxeles en los bordes inferior y derecho (924×1307 se convierte en 924×1316 en el ejemplo). El relleno no contiene contenido: Claude percibe la imagen rellenada, pero el contenido de la página solo ocupa la región redimensionada sin relleno. Normaliza o reescala siempre usando las dimensiones redimensionadas, no las dimensiones con relleno; dividir por las dimensiones con relleno escala cada coordenada por una pequeña cantidad.
El enfoque más fiable es redimensionar tu imagen tú mismo antes de subirla, de modo que la imagen que tienes sea exactamente la imagen que Claude ve y las coordenadas que Claude devuelve no necesiten conversión.
La siguiente implementación de referencia calcula el tamaño exacto al que Claude redimensiona una imagen:
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)
# Búsqueda binaria a lo largo del borde largo para hallar el mayor tamaño
# que conserve la relación de aspecto y quepa.
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))
# El ejemplo A4 de "Cómo Claude redimensiona y rellena imágenes":
print(resized_size(1075, 1520)) # (924, 1307)resized_size. Si la imagen ya cabe dentro de los límites del modelo, resized_size devuelve sus dimensiones sin cambios y no se necesita redimensionar.[x1, y1, x2, y2] en coordenadas de píxeles."Si no puedes redimensionar previamente (por ejemplo, cuando la imagen proviene de un sistema externo que no puedes modificar), usa resized_size de Redimensiona tu imagen antes de subirla para recuperar las dimensiones que Claude vio, y luego mapea las coordenadas que Claude devuelve a coordenadas normalizadas o de vuelta a tu imagen original. Este enfoque requiere conocer las dimensiones en píxeles de la imagen que subiste, por lo que no aplica a cargas 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 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)
# Para expresar la coordenada en el espacio de píxeles de tu imagen original, multiplica la
# coordenada relativa por tus dimensiones originales:
# (rel_x * ancho_original, rel_y * alto_original)El relleno se aplica solo a los bordes inferior y derecho, por lo que el origen no se desplaza y un reescalado lineal por eje es suficiente.
Was this page helpful?