Claude 可以定位並標記影像中的區域(例如,為表格、表單欄位、圖表元素或 UI 元件回傳邊界框)。本指南涵蓋 Claude 在處理影像之前如何調整其大小,以及如何使用它回傳的像素座標,使框和點與您的原始影像對齊。
您在 OCR 管線、表單擷取、圖表解析、UI 元素定位,以及任何需要對影像特定區域採取行動的任務中都會需要這些知識。關於傳送影像、支援的格式和各模型的解析度限制,請參閱視覺。
Claude 在使用絕對像素座標時表現最佳。 請在您的提示中明確要求。例如:「以像素座標回傳每個表格的邊界框,格式為 [x1, y1, x2, y2](左上角和右下角)。」 當您要求正規化座標時,Claude 的表現不佳,例如:「回傳介於 0 和 1000 之間的邊界框座標。」 請務必要求像素座標,如有需要再在您自己的程式碼中進行正規化。若要以機器可讀的 JSON 而非散文形式取得座標,請使用結構化輸出定義結構描述,例如每個偵測到的元素都有一個 [x1, y1, x2, y2] 陣列的物件。
座標遵循標準影像慣例:原點 (0, 0) 是影像的左上角,x 向右遞增,y 向下遞增。Claude 回傳的座標是 Claude 所看到的影像中的像素位置:也就是 Claude 將您的影像調整大小以符合模型原生解析度之後的影像(請參閱 Claude 如何調整影像大小與填充)。若要取得可直接使用的座標,您可以預先調整影像大小,使座標與您手上的影像一一對應(請參閱在上傳前調整影像大小),或者重新縮放 Claude 回傳的座標(請參閱無法預先調整大小時重新縮放座標)。
Claude 會找出同時滿足模型兩項影像限制的最大保持長寬比尺寸:
⌈width / 28⌉ × ⌈height / 28⌉ 不超過模型的視覺 token 預算(標準層級為 1568 個 token,高解析度層級為 4784 個)。關於哪些模型屬於哪個層級,請參閱解析度與 token 成本。
對於幾乎所有的照片和螢幕截圖,視覺 token 限制才是決定最終尺寸的因素。邊長限制只有在細長的影像(例如全景圖或長型手機螢幕截圖)時才會起作用。請使用參考實作來計算尺寸,而不是手動縮放到邊長:一張 1920×1080 的螢幕截圖會調整為 1456×819,而不是 1568×882,假設以邊長限制計算會讓每個座標明顯偏離目標。
即使任一邊都未超過邊長限制,token 限制也可能觸發調整大小。忽略這一點是座標錯位最常見的原因。例如,以 130 DPI 掃描的 A4 頁面為 1075×1520 像素:兩邊都低於 1568 px,但它的成本為 39 × 55 = 2145 個視覺 token,因此 Claude 會將其調整為 924×1307。
此範例假設模型屬於標準解析度層級。高解析度層級的模型不會調整同一份掃描的大小:2145 個 token 在其 4784 個 token 的預算之內,因此它回傳的座標會直接對應到 1075×1520 的原始影像。模型層級列於解析度與 token 成本。
接著,Claude 會將每張影像(無論是否經過調整大小)在底部和右側邊緣填充至下一個 28 像素的倍數(在此範例中 924×1307 變成 924×1316)。填充不包含任何內容:Claude 會感知填充後的影像,但頁面內容只會佔據未填充的調整後區域。請務必以調整後的尺寸(而非填充後的尺寸)進行正規化或重新縮放;除以填充後的尺寸會使每個座標產生些微的縮放偏差。
最可靠的方法是在上傳前自行調整影像大小,這樣您手上的影像就正是 Claude 看到的影像,而 Claude 回傳的座標也不需要任何轉換。
首先確認您的模型屬於哪個解析度層級(請參閱解析度與 token 成本),並傳入相符的邊長和 token 限制。以下參考實作會計算出 Claude 將影像調整到的確切尺寸:
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)
# 沿長邊進行二分搜尋,找出保持長寬比且能容納的
# 最大尺寸。
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))
# 「Claude 如何調整大小與填補影像」中的 A4 範例:
print(resized_size(1075, 1520)) # (924, 1307)
# 若要套用調整大小,請使用您的影像函式庫,例如 Pillow:
# image.resize(resized_size(*image.size))[x, y]。」如果您無法預先調整大小(例如,影像來自您無法修改的上游系統),請使用在上傳前調整影像大小中的調整大小輔助函式來還原 Claude 所看到的尺寸,然後將 Claude 回傳的座標對應為正規化座標或對應回您的原始影像。Claude 會調整過大影像的大小而不是拒絕它們,直到 API 的請求限制為止。超過這些限制時,請求會以驗證錯誤失敗。請傳入與您呼叫的模型相符的層級限制:錯誤層級的限制會還原出錯誤的調整後尺寸,並悄悄地使每個座標偏移。此方法需要知道您上傳的影像的像素尺寸,因此不適用於 PDF 上傳。
# 此輔助函式呼叫本頁調整大小範例中的 resized_size。
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)
# Claude 在調整大小後的 A4 頁面上回傳位於 (462, 653.5) 的表格角落,
# 對應回 1075x1520 原圖的方式如下:
rel_x, rel_y = to_relative_coordinates(462, 653.5, 1075, 1520)
print((rel_x * 1075, rel_y * 1520)) # (537.5, 760.0)填充只套用於底部和右側邊緣,因此原點不會移動,每個軸的線性重新縮放就已足夠。在重新縮放之前,請將回傳的座標限制在調整後的尺寸範圍內,這樣稍微超出影像的點就不會對應到您原始影像之外。
相對座標可以乘上您要操作的任何表面:原始影像、全解析度掃描或螢幕。當您在螢幕上操作,且螢幕截圖像素與邏輯座標不同時(HiDPI 顯示器),還需要除以顯示縮放係數。電腦使用工具的縮放指南涵蓋了該模式。
Agent Skills 是擴展 Claude 功能的模組化能力。每個 Skill 都封裝了指令、中繼資料和選用資源(指令碼、範本),Claude 會在相關時自動使用。
透過電腦使用工具,讓 Claude 擁有桌面環境的螢幕截圖、滑鼠和鍵盤控制能力。
使用 Claude 處理 PDF。從您的文件中擷取文字、分析圖表並理解視覺內容。
在將訊息傳送給 Claude 之前計算其中的 token 數量。使用 token 計數來管理速率限制和成本、做出模型路由決策,並使提示符合目標長度。
Was this page helpful?