Claude pode localizar e rotular regiões de uma imagem (por exemplo, retornando "bounding boxes" (caixas delimitadoras) para tabelas, campos de formulário, elementos de gráficos ou componentes de UI). Este guia cobre como Claude redimensiona imagens antes de processá-las e como trabalhar com as coordenadas de pixel que ele retorna, para que caixas e pontos fiquem alinhados com sua imagem original.
Você precisará disso para pipelines de OCR, extração de formulários, análise de gráficos, localização de elementos de UI e qualquer tarefa em que você atue sobre uma região específica de uma imagem. Para envio de imagens, formatos suportados e limites de resolução por modelo, consulte Visão.
Claude funciona melhor com coordenadas de pixel absolutas. Peça por elas explicitamente no seu prompt. Por exemplo: "Retorne a bounding box de cada tabela como [x1, y1, x2, y2] (cantos superior esquerdo e inferior direito) em coordenadas de pixel." Claude não funciona bem quando você pede coordenadas normalizadas, por exemplo: "Retorne as coordenadas da bounding box entre 0 e 1000." Sempre peça coordenadas de pixel e normalize no seu próprio código se precisar. Para obter coordenadas como JSON legível por máquina em vez de prosa, defina um esquema com saídas estruturadas, por exemplo um objeto com um array [x1, y1, x2, y2] por elemento detectado.
As coordenadas seguem a convenção padrão de imagens: a origem (0, 0) é o canto superior esquerdo da imagem, com x aumentando para a direita e y aumentando para baixo. As coordenadas que Claude retorna são posições de pixel na imagem que Claude vê: sua imagem depois que Claude a redimensiona para caber na resolução nativa do modelo (consulte Como Claude redimensiona e preenche imagens). Para obter coordenadas que você possa usar diretamente, redimensione previamente sua imagem para que as coordenadas correspondam um a um à imagem que você tem (consulte Redimensione sua imagem antes de fazer upload), ou reescale as coordenadas que Claude retorna (consulte Reescale coordenadas quando não puder redimensionar previamente).
O raciocínio espacial de Claude tem limites (consulte Limitações). A precisão das coordenadas é melhor quando você declara o formato de coordenadas esperado no seu prompt e verifica visualmente os resultados por amostragem antes de processar em escala. Elementos pequenos perdem precisão quando uma imagem é reduzida: para alvos finos, recorte a região de interesse e envie o recorte (desloque as coordenadas retornadas pela origem do recorte), ou use um modelo do nível de alta resolução. Para suporte a PDF, as páginas são rasterizadas em imagens no lado do servidor em dimensões que você não controla, então as coordenadas retornadas não podem ser mapeadas de volta para a página de forma confiável. Para trabalhar com coordenadas em conteúdo de PDF, rasterize as páginas em imagens você mesmo e use a abordagem de redimensionamento prévio.
Claude encontra o maior tamanho que preserva a proporção e satisfaz ambos os limites de imagem do modelo:
⌈width / 28⌉ × ⌈height / 28⌉ não excede o orçamento de tokens visuais do modelo (1568 tokens no nível padrão, 4784 no nível de alta resolução).Consulte Resolução e custo de tokens para saber quais modelos estão em qual nível.
Para quase todas as fotos e capturas de tela, o limite de tokens visuais é o que determina o tamanho final. O limite de borda assume o controle apenas para imagens alongadas, como panoramas ou capturas de tela altas de celular. Calcule o tamanho com a implementação de referência em vez de escalar para o comprimento de borda manualmente: uma captura de tela de 1920×1080 é redimensionada para 1456×819, não 1568×882, e assumir o limite de borda deixa cada coordenada visivelmente fora do alvo.
O limite de tokens também pode acionar um redimensionamento quando nenhum dos lados excede o limite de borda. Ignorar isso é a causa mais comum de coordenadas desalinhadas. Por exemplo, uma página A4 digitalizada a 130 DPI tem 1075×1520 pixels: ambos os lados estão abaixo de 1568 px, mas ela custa 39 × 55 = 2145 tokens visuais, então Claude a redimensiona para 924×1307.
Este exemplo assume um modelo no nível de resolução padrão. Um modelo do nível de alta resolução não redimensiona a mesma digitalização: 2145 tokens está dentro do seu orçamento de 4784 tokens, então as coordenadas que ele retorna mapeiam diretamente para o original de 1075×1520. Os níveis dos modelos estão listados em Resolução e custo de tokens.
Claude então preenche toda imagem, redimensionada ou não, até o próximo múltiplo de 28 pixels nas bordas inferior e direita (924×1307 se torna 924×1316 no exemplo). O preenchimento não contém conteúdo: Claude percebe a imagem preenchida, mas o conteúdo da página só ocupa a região redimensionada sem preenchimento. Sempre normalize ou reescale pelas dimensões redimensionadas, não pelas dimensões preenchidas; dividir pelas dimensões preenchidas escala cada coordenada por uma pequena quantidade.
A abordagem mais confiável é redimensionar sua imagem você mesmo antes de fazer upload, para que a imagem que você tem seja exatamente a imagem que Claude vê e as coordenadas que Claude retorna não precisem de conversão.
Primeiro verifique em qual nível de resolução seu modelo está (consulte Resolução e custo de tokens) e passe os limites de borda e de tokens correspondentes. A seguinte implementação de referência calcula o tamanho exato para o qual Claude redimensiona uma imagem:
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)
# Busca binária ao longo da borda maior pelo maior tamanho que preserva
# a proporção e cabe no limite.
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))
# O exemplo A4 de "Como o Claude redimensiona e preenche imagens":
print(resized_size(1075, 1520)) # (924, 1307)
# Para aplicar o redimensionamento, use sua biblioteca de imagens, por exemplo Pillow:
# image.resize(resized_size(*image.size))[x, y] em coordenadas de pixel."O endpoint de Contagem de tokens estima o custo em tokens de uma imagem a partir de suas dimensões sem processá-la completamente, então uma contagem bem-sucedida não significa que a imagem está dentro dos limites de requisição da Messages API. Uma imagem pode ser contada com sucesso e ainda assim ser rejeitada quando você a enviar.
Se você não puder redimensionar previamente (por exemplo, quando a imagem vem de um sistema upstream que você não pode modificar), use o helper de redimensionamento de Redimensione sua imagem antes de fazer upload para recuperar as dimensões que Claude viu, e então mapeie as coordenadas que Claude retorna para coordenadas normalizadas ou de volta para sua imagem original. Claude redimensiona imagens grandes demais em vez de rejeitá-las, até os limites de requisição da API. Além desses limites, a requisição falha com um erro de validação. Passe os limites do nível que correspondem ao modelo que você chamou: os limites do nível errado recuperam as dimensões redimensionadas erradas e deslocam silenciosamente cada coordenada. Essa abordagem requer conhecer as dimensões em pixels da imagem que você enviou, então ela não se aplica a uploads de PDF.
# Este helper chama resized_size do exemplo de redimensionamento nesta página.
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)
# Um canto de tabela que o Claude retorna em (462, 653.5) na página A4 redimensionada
# é mapeado de volta para o original 1075x1520 assim:
rel_x, rel_y = to_relative_coordinates(462, 653.5, 1075, 1520)
print((rel_x * 1075, rel_y * 1520)) # (537.5, 760.0)O preenchimento é aplicado apenas às bordas inferior e direita, então a origem não se desloca e um reescalonamento linear por eixo é suficiente. Limite (clamp) as coordenadas retornadas às dimensões redimensionadas antes de reescalar, para que um ponto ligeiramente fora da imagem não possa ser mapeado para fora da sua original.
As coordenadas relativas se multiplicam contra qualquer superfície sobre a qual você atue: a imagem original, uma digitalização em resolução completa ou uma tela. Quando você atua sobre uma tela e os pixels da captura de tela diferem das coordenadas lógicas (displays HiDPI), divida também pelo fator de escala do display. A orientação de escalonamento da ferramenta de uso do computador cobre esse padrão.
Agent Skills são capacidades modulares que estendem a funcionalidade de Claude. Cada Skill empacota instruções, metadados e recursos opcionais (scripts, templates) que Claude usa automaticamente quando relevante.
Dê a Claude controle de captura de tela, mouse e teclado de um ambiente de desktop com a ferramenta de uso do computador.
Processe PDFs com Claude. Extraia texto, analise gráficos e compreenda conteúdo visual dos seus documentos.
Conte os tokens em uma mensagem antes de enviá-la para Claude. Use contagens de tokens para gerenciar limites de taxa e custos, tomar decisões de roteamento de modelos e ajustar prompts a um comprimento alvo.
Was this page helpful?