이 가이드는 Claude에 이미지를 전송하는 방법, 적용되는 제한 및 비용, 그리고 좌표 기반 워크플로우에 대한 안내를 찾을 수 있는 위치를 설명합니다.
다음 방법으로 Claude의 비전 기능을 사용할 수 있습니다:
API에서는 세 가지 소스 유형 중 하나를 사용하여 image 콘텐츠 블록으로 Claude에 이미지를 제공합니다:
file_id(한 번 업로드하고 여러 번 참조)Amazon Bedrock 및 Google Cloud에서는 현재 base64로 인코딩된 소스만 사용할 수 있습니다.
텍스트 프롬프트에서 쿼리 앞에 긴 문서를 배치하면 결과가 개선되는 것처럼, Claude는 이미지가 텍스트보다 앞에 올 때 가장 잘 작동합니다. 텍스트 뒤에 배치되거나 텍스트와 섞여 있는 이미지도 여전히 잘 작동하지만, 사용 사례가 허용한다면 이미지 다음에 텍스트가 오는 구조를 선호하세요.
image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image1_media_type = "image/png"
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
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-5",
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)반복적으로 사용할 이미지이거나 인코딩 오버헤드를 피하고 싶은 경우 Files API를 사용하세요. 이미지를 한 번 업로드한 다음, base64 데이터를 다시 전송하는 대신 이후 메시지에서 반환된 file_id를 참조합니다.
멀티턴 대화 및 에이전트 워크플로우에서는 각 요청이 전체 대화 기록을 다시 전송합니다.
이미지가 base64로 인코딩되어 있으면 매 턴마다 전체 이미지 바이트가 페이로드에
포함되어, 대화가 길어질수록 요청 크기와 latency(지연 시간)가 크게 증가할 수 있습니다.
이미지를 Files API에 업로드하고 file_id로 참조하면 대화 기록에 이미지가
얼마나 많이 누적되든 요청 페이로드를 작게 유지할 수 있습니다.
client = anthropic.Anthropic()
# 이미지 파일 업로드
with open("image.jpg", "rb") as f:
file_upload = client.beta.files.upload(file=("image.jpg", f, "image/jpeg"))
# 업로드된 파일을 메시지에서 사용
message = client.beta.messages.create(
model="claude-opus-5",
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)더 많은 예제 코드와 매개변수 세부 정보는 Messages API 예제를 참조하세요.
단일 요청에 여러 이미지를 포함할 수 있으며, Claude는 이를 함께 분석합니다. 이는 이미지를 비교하거나, 차이점에 대해 질문하거나, 문서의 페이지와 같은 시퀀스를 다룰 때 유용합니다. 여러 이미지를 전송할 때는 각 이미지 앞에 짧은 텍스트 레이블(Image 1:, Image 2: 등)을 붙여서 프롬프트와 후속 턴에서 이름으로 참조할 수 있도록 하세요.
image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image2_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYPgPAAEDAQAIicLsAAAAAElFTkSuQmCC"
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Image 1:"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image1_data,
},
},
{"type": "text", "text": "Image 2:"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image2_data,
},
},
{"type": "text", "text": "How are these images different?"},
],
}
],
)
print(message)멀티턴 대화에서는 이후의 user 턴에 같은 방식으로 새 이미지를 추가합니다. Claude는 이전 턴의 모든 이미지에 접근할 수 있으므로, "이것들이 처음 두 개와 비슷한가요?"와 같은 후속 질문은 새 턴의 콘텐츠에 이전 이미지를 다시 포함하지 않아도 작동합니다.
메시지 또는 요청당 최대 이미지 수는 다음과 같습니다:
이미지당 최대 크기는 8000x8000 px입니다.
단일 API 요청에 20개를 초과하는 이미지가 포함되면 더 엄격한 이미지당 크기 제한이 적용됩니다. Amazon Bedrock 및 Google Cloud에서는 PDF와 같은 문서 블록도 이 임계값에 포함됩니다. 더 엄격한 제한을 초과하는 이미지는 "many-image requests"를 언급하고 현재 픽셀 제한을 명시하는 메시지와 함께 invalid_request_error로 거부됩니다. 모든 플랫폼에서 제한을 준수하려면 각 이미지의 어느 쪽 크기도 2000 px를 초과하지 않도록 크기를 조정하거나, 요청을 20개 이하의 이미지 및 문서 블록으로 유지하세요.
이미지당 최대 크기는 다음과 같습니다:
API는 요청당 최대 600개의 이미지를 지원하지만, 요청 크기 제한(표준 엔드포인트의 경우 32 MB; Amazon Bedrock 및 Google Cloud와 같은 일부 파트너 운영 플랫폼에서는 더 낮음)에 먼저 도달할 수 있습니다. 많은 이미지를 사용하는 경우, Files API로 업로드하고 file_id로 참조하여 요청 페이로드를 작게 유지하는 것을 고려하세요.
Files API를 사용하더라도 큰 이미지가 많은 요청은 600개 이미지 수에 도달하기 전에 실패할 수 있습니다. 업로드하기 전에 이미지 크기나 파일 크기를 줄이세요(예: 다운샘플링)(해상도 및 토큰 비용 참조).
Claude는 JPEG, PNG, GIF, WebP 이미지(image/jpeg, image/png, image/gif, image/webp)를 지원합니다. 애니메이션은 지원되지 않으며 첫 번째 프레임만 사용됩니다.
Claude는 이미지를 픽셀이 아닌 패치 단위로 봅니다. 각 패치는 이미지의 28×28 픽셀 블록으로, 비주얼 토큰이라고 합니다. 따라서 이미지는 ⌈width / 28⌉ × ⌈height / 28⌉ 비주얼 토큰의 비용이 듭니다.
각 모델에는 긴 변 제한과 비주얼 토큰 제한으로 표현되는 최대 네이티브 이미지 해상도가 있습니다. 두 제한 중 하나라도 초과하는 이미지는 처리 전에 축소됩니다. 정확한 규칙은 Claude가 이미지를 크기 조정하고 패딩하는 방법을 참조하세요.
| 해상도 티어 | 모델 | 최대 긴 변 | 최대 비주얼 토큰 |
|---|---|---|---|
| 고해상도 | Claude 4.7 및 이후 모델 | 2576 px | 4784 |
| 표준 | 그 외 모든 모델 | 1568 px | 1568 |
고해상도 지원은 나열된 모델에서 자동으로 적용되며 베타 헤더나 클라이언트 측 옵트인이 필요하지 않습니다.
다음 표는 각 티어에서 여러 이미지 크기에 대한 축소된 해상도와 비주얼 토큰 비용을 보여줍니다:
| 이미지 크기 | 표준 티어: 축소 크기 | 표준 티어: 토큰 | 고해상도 티어: 축소 크기 | 고해상도 티어: 토큰 |
|---|---|---|---|---|
| 200x200 px (0.04 메가픽셀) | 크기 조정 없음 | 64 | 크기 조정 없음 | 64 |
| 1000x1000 px (1 메가픽셀) | 크기 조정 없음 | 1296 | 크기 조정 없음 | 1296 |
| 1092x1092 px (1.19 메가픽셀) | 크기 조정 없음 | 1521 | 크기 조정 없음 | 1521 |
| 1920x1080 px (2.07 메가픽셀) | 1456x819 px | 1560 | 크기 조정 없음 | 2691 |
| 2000x1500 px (3 메가픽셀) | 1269x952 px | 1564 | 크기 조정 없음 | 3888 |
| 3840x2160 px (8.29 메가픽셀) | 1456x819 px | 1560 | 2576x1449 px | 4784 |
이미지가 축소될 때 Claude는 가로세로 비율을 유지하면서 티어의 제한에 맞는 가장 큰 크기로 조정합니다. 이를 통해 토큰 비용에 상한이 생깁니다. 정확한 규칙과 참조 구현은 Claude가 이미지를 크기 조정하고 패딩하는 방법을 참조하세요.
비용을 추정하려면 토큰 수에 사용 중인 모델의 토큰당 가격을 곱하세요. 예를 들어, Claude Haiku 4.5의 입력 토큰 백만 개당 $1(표준 티어)에서 1000×1000 이미지는 천 개당 약 $1.30의 비용이 듭니다. Claude Opus 5의 백만 개당 $5(고해상도 티어)에서는 동일한 이미지가 천 개당 약 $6.48, 4K 이미지는 천 개당 약 $23.92의 비용이 듭니다.
고해상도 이미지는 표준 티어 모델의 동일한 이미지보다 최대 약 3배 더 많은 비주얼 토큰을 사용할 수 있습니다. 컴퓨터 사용, 스크린샷 이해, 밀도 높은 문서에 대해 고해상도가 제공하는 추가적인 정밀도가 필요하지 않다면, 토큰 비용을 제어하기 위해 전송 전에 이미지를 다운샘플링하세요. latency를 최소화하고 좌표 기반 워크플로우를 단순화하려면 업로드하기 전에 이미지 크기를 조정하는 것이 좋습니다.
Claude에 이미지를 제공할 때 최상의 결과를 위해 다음 사항을 염두에 두세요:
바운딩 박스, 포인트, 픽셀 좌표에 대해서는 좌표 및 바운딩 박스를 참조하세요. Claude는 크기 조정 후 보게 되는 이미지를 기준으로 절대 픽셀 좌표를 반환합니다. 해당 가이드는 Claude가 이미지를 크기 조정하고 패딩하는 방법과, 좌표가 원본 이미지와 일치하도록 미리 크기를 조정하거나 다시 스케일링하는 방법을 다룹니다.
Claude의 이미지 이해 기능은 최첨단이지만, 알아두어야 할 몇 가지 제한 사항이 있습니다:
특히 중요한 사용 사례의 경우 항상 Claude의 이미지 해석을 신중하게 검토하고 검증하세요. 완벽한 정밀도가 필요하거나 민감한 이미지 분석이 필요한 작업에는 사람의 감독 없이 Claude를 사용하지 마세요.
차트 해석 및 양식에서 콘텐츠 추출과 같은 작업에 대한 팁과 모범 사례 기법을 확인하세요.
이미지와 관련된 API 호출 예제를 포함한 Messages API 문서를 참조하세요.
Was this page helpful?