비전
이 가이드는 Claude에서 이미지를 사용하는 방법, 모범 사례, 코드 예제 및 주의할 제한 사항을 설명합니다.
비전 사용 방법
Claude의 비전 기능을 다음을 통해 사용하세요:
- claude.ai. 파일처럼 이미지를 업로드하거나 이미지를 채팅 창에 직접 드래그 앤 드롭하세요.
- Console Workbench. 이미지를 허용하는 모델(Claude 3 및 4 모델만)을 선택하면 모든 사용자 메시지 블록의 오른쪽 상단에 이미지를 추가하는 버튼이 나타납니다.
- API 요청. 이 가이드의 예제를 참조하세요.
업로드 전에
기본 사항 및 제한
단일 요청에 여러 이미지를 포함할 수 있습니다(claude.ai의 경우 최대 20개, API 요청의 경우 100개). Claude는 응답을 작성할 때 제공된 모든 이미지를 분석합니다. 이는 이미지를 비교하거나 대조하는 데 도움이 될 수 있습니다.
8000x8000 px보다 큰 이미지를 제출하면 거부됩니다. 한 번의 API 요청에서 20개 이상의 이미지를 제출하면 이 제한은 2000x2000 px입니다.
API는 요청당 100개의 이미지를 지원하지만 표준 엔드포인트에 대한 32MB 요청 크기 제한이 있습니다.
이미지 크기 평가
최적의 성능을 위해 이미지가 너무 크면 업로드 전에 크기를 조정하는 것이 좋습니다. 이미지의 긴 가장자리가 1568픽셀보다 크거나 이미지가 약 1,600토큰보다 크면 먼저 종횡비를 유지하면서 크기 제한 내에 들어올 때까지 축소됩니다.
입력 이미지가 너무 크고 크기를 조정해야 하는 경우 추가 모델 성능을 제공하지 않으면서 첫 토큰까지의 시간의 지연 시간이 증가합니다. 어느 한 가장자리에서 200픽셀 미만의 매우 작은 이미지는 성능을 저하시킬 수 있습니다.
첫 토큰까지의 시간을 개선하려면 이미지를 최대 1.15메가픽셀(두 차원 모두 1568픽셀 이내)로 크기를 조정하는 것이 좋습니다.
다음은 일반적인 종횡비에 대해 API에서 허용하고 크기를 조정하지 않을 최대 이미지 크기 표입니다. Claude Sonnet 3.7 모델을 사용하면 이러한 이미지는 약 1,600토큰을 사용하고 약 $4.80/1K 이미지입니다.
| 종횡비 | 이미지 크기 |
|---|---|
| 1 | 1092x1092 px |
| 3 | 951x1268 px |
| 2 | 896x1344 px |
| 9 | 819x1456 px |
| 1 | 784x1568 px |
이미지 비용 계산
Claude에 대한 요청에 포함하는 각 이미지는 토큰 사용량에 포함됩니다. 대략적인 비용을 계산하려면 대략적인 이미지 토큰 수에 사용 중인 모델의 토큰당 가격을 곱하세요.
이미지를 크기 조정할 필요가 없으면 이 알고리즘을 통해 사용된 토큰 수를 추정할 수 있습니다: tokens = (width px * height px)/750
다음은 Claude Sonnet 3.7의 토큰당 가격 $3/백만 입력 토큰을 기반으로 API의 크기 제약 내에서 다양한 이미지 크기에 대한 대략적인 토큰화 및 비용의 예입니다:
| 이미지 크기 | 토큰 수 | 이미지당 비용 | 1K 이미지당 비용 |
|---|---|---|---|
| 200x200 px(0.04 메가픽셀) | ~54 | ~$0.00016 | ~$0.16 |
| 1000x1000 px(1 메가픽셀) | ~1334 | ~$0.004 | ~$4.00 |
| 1092x1092 px(1.19 메가픽셀) | ~1590 | ~$0.0048 | ~$4.80 |
이미지 품질 보장
Claude에 이미지를 제공할 때 최상의 결과를 위해 다음을 염두에 두세요:
- 이미지 형식: 지원되는 이미지 형식을 사용하세요: JPEG, PNG, GIF 또는 WebP.
- 이미지 선명도: 이미지가 명확하고 너무 흐릿하거나 픽셀화되지 않았는지 확인하세요.
- 텍스트: 이미지에 중요한 텍스트가 포함되어 있으면 읽을 수 있고 너무 작지 않은지 확인하세요. 텍스트를 확대하기 위해 주요 시각적 컨텍스트를 자르지 마세요.
프롬프트 예제
Claude와의 텍스트 기반 상호작용에 잘 작동하는 많은 프롬프팅 기법을 이미지 기반 프롬프트에도 적용할 수 있습니다.
이 예제들은 이미지를 포함하는 모범 사례 프롬프트 구조를 보여줍니다.
문서-쿼리 배치와 마찬가지로 Claude는 이미지가 텍스트 앞에 올 때 가장 잘 작동합니다. 텍스트 뒤에 배치되거나 텍스트와 섞인 이미지도 잘 작동하지만, 사용 사례가 허락한다면 이미지-텍스트 구조를 권장합니다.
프롬프트 예제 정보
다음 예제들은 다양한 프로그래밍 언어와 접근 방식을 사용하여 Claude의 비전 기능을 사용하는 방법을 보여줍니다. Claude에 이미지를 제공하는 방법은 세 가지입니다:
image콘텐츠 블록에서 base64 인코딩된 이미지로- 온라인에서 호스팅되는 이미지에 대한 URL 참조로
- Files API 사용(한 번 업로드, 여러 번 사용)
base64 예제 프롬프트는 이 변수들을 사용합니다:
# URL 기반 이미지의 경우 JSON 요청에서 URL을 직접 사용할 수 있습니다
# base64 인코딩된 이미지의 경우 먼저 이미지를 인코딩해야 합니다
# bash에서 이미지를 base64로 인코딩하는 방법의 예:
BASE64_IMAGE_DATA=$(curl -s "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg" | base64)
# 인코딩된 데이터를 이제 API 호출에서 사용할 수 있습니다import base64
import httpx
# base64 인코딩된 이미지의 경우
image1_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image1_media_type = "image/jpeg"
image1_data = base64.standard_b64encode(httpx.get(image1_url).content).decode("utf-8")
image2_url = "https://upload.wikimedia.org/wikipedia/commons/b/b5/Iridescent.green.sweat.bee1.jpg"
image2_media_type = "image/jpeg"
image2_data = base64.standard_b64encode(httpx.get(image2_url).content).decode("utf-8")
# URL 기반 이미지의 경우 요청에서 URL을 직접 사용할 수 있습니다import axios from 'axios';
// base64 인코딩된 이미지의 경우
async function getBase64Image(url: string): Promise<string> {
const response = await axios.get(url, { responseType: 'arraybuffer' });
return Buffer.from(response.data, 'binary').toString('base64');
}
// 사용법
async function prepareImages() {
const imageData = await getBase64Image('https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg');
// 이제 API 호출에서 imageData를 사용할 수 있습니다
}
// URL 기반 이미지의 경우 요청에서 URL을 직접 사용할 수 있습니다import java.io.IOException;
import java.util.Base64;
import java.io.InputStream;
import java.net.URL;
public class ImageHandlingExample {
public static void main(String[] args) throws IOException, InterruptedException {
// base64 인코딩된 이미지의 경우
String image1Url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg";
String image1MediaType = "image/jpeg";
String image1Data = downloadAndEncodeImage(image1Url);
String image2Url = "https://upload.wikimedia.org/wikipedia/commons/b/b5/Iridescent.green.sweat.bee1.jpg";
String image2MediaType = "image/jpeg";
String image2Data = downloadAndEncodeImage(image2Url);
// URL 기반 이미지의 경우 요청에서 URL을 직접 사용할 수 있습니다
}
private static String downloadAndEncodeImage(String imageUrl) throws IOException {
try (InputStream inputStream = new URL(imageUrl).openStream()) {
return Base64.getEncoder().encodeToString(inputStream.readAllBytes());
}
}
}다음은 base64 인코딩된 이미지와 URL 참조를 사용하여 Messages API 요청에 이미지를 포함하는 방법의 예입니다:
Base64 인코딩된 이미지 예제
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "'"$BASE64_IMAGE_DATA"'"
}
},
{
"type": "text",
"text": "이 이미지를 설명하세요."
}
]
}
]
}'URL 기반 이미지 예제
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-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": "이 이미지를 설명하세요."
}
]
}
]
}'Files API 이미지 예제
반복적으로 사용할 이미지나 인코딩 오버헤드를 피하고 싶을 때는 Files API를 사용하세요:
# 먼저 이미지를 Files API에 업로드하세요
curl -X POST https://api.anthropic.com/v1/files \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: files-api-2025-04-14" \
-F "[email protected]"
# 그런 다음 반환된 file_id를 메시지에서 사용하세요
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: files-api-2025-04-14" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "file",
"file_id": "file_abc123"
}
},
{
"type": "text",
"text": "이 이미지를 설명하세요."
}
]
}
]
}'더 많은 예제 코드 및 매개변수 세부 정보는 Messages API 예제를 참조하세요.
제한 사항
Claude의 이미지 이해 기능은 최첨단이지만 주의해야 할 몇 가지 제한 사항이 있습니다:
- 사람 식별: Claude는 이미지의 사람을 식별(즉, 이름 지정)하는 데 사용할 수 없으며 그렇게 하기를 거부합니다.
- 정확도: Claude는 저품질, 회전되거나 200픽셀 미만의 매우 작은 이미지를 해석할 때 환각하거나 실수할 수 있습니다.
- 공간 추론: Claude의 공간 추론 능력은 제한적입니다. 아날로그 시계 판을 읽거나 체스 말의 정확한 위치를 설명하는 것처럼 정확한 위치 지정이나 레이아웃이 필요한 작업에서 어려움을 겪을 수 있습니다.
- 계산: Claude는 이미지의 객체 대략적인 개수를 제공할 수 있지만 특히 많은 수의 작은 객체의 경우 항상 정확하지 않을 수 있습니다.
- AI 생성 이미지: Claude는 이미지가 AI 생성인지 알 수 없으며 물어볼 경우 잘못될 수 있습니다. 가짜 또는 합성 이미지를 감지하는 데 의존하지 마세요.
- 부적절한 콘텐츠: Claude는 허용 가능한 사용 정책을 위반하는 부적절하거나 명시적인 이미지를 처리하지 않습니다.
- 의료 응용: Claude는 일반적인 의료 이미지를 분석할 수 있지만 CT 또는 MRI와 같은 복잡한 진단 스캔을 해석하도록 설계되지 않았습니다. Claude의 출력은 전문적인 의료 조언이나 진단의 대체물로 간주되어서는 안 됩니다.
Claude의 이미지 해석을 항상 신중하게 검토하고 확인하세요. 특히 높은 위험도의 사용 사례에서는 그렇습니다. 완벽한 정확도가 필요하거나 인간의 감독 없이 민감한 이미지 분석이 필요한 작업에는 Claude를 사용하지 마세요.
FAQ
비전을 더 깊이 있게 탐색하세요
Claude를 사용하여 이미지로 구축을 시작할 준비가 되셨습니까? 다음은 몇 가지 유용한 리소스입니다:
- 멀티모달 요리책: 이 요리책에는 이미지 시작하기 및 비전 모범 사례 기법에 대한 팁이 있어 이미지로 최고 품질의 성능을 보장합니다. Claude를 이미지로 효과적으로 프롬프트하여 차트 해석 및 분석 또는 양식에서 콘텐츠 추출과 같은 작업을 수행하는 방법을 확인하세요.
- API 참조: 이미지를 포함하는 API 호출의 예를 포함하여 Messages API에 대한 설명서를 방문하세요.
다른 질문이 있으시면 지원팀에 문의하세요. 개발자 커뮤니티에 참여하여 다른 제작자와 연결하고 Anthropic 전문가로부터 도움을 받을 수도 있습니다.