광고
~ / posts / developer
smith@lab:~/posts$ cat developer/multimodal-llm-image-token-cost-selection-guide.md

멀티모달 LLM 이미지 토큰 비용 비교, 해상도별 API 요금과 고르는 법

스크린샷을 받아 에러를 설명해 주는 기능이나 영수증을 읽는 기능을 붙이려면 "이미지를 그대로 보낼지, 줄여서 보낼지, 글자만 뽑아서 보낼지"를 먼저 정해야 해요. 결론부터 말하면 비전 API 비용은 단가보다 이미지가 몇 토큰으로 바뀌느냐가 더 크게 좌우해요. 대부분의 서비스는 긴 변 1280px 안팎으로 줄여 보내는 것을 기본값으로 두고, 작은 글씨나 좌표가 중요한 화면만 원본 해상도로, 숫자 몇 개만 필요한 일은 싼 모델로 추출한 뒤 텍스트로 넘기는 편이 맞아요.

같은 1920×1080 스크린샷이라도 설정에 따라 173토큰부터 2,691토큰까지 15배 넘게 벌어져요. 세 회사의 공식 규칙과 2026년 10월 27일 가격표로 직접 계산한 숫자로 방식별 비용·지연·품질을 비교해요.

광고

이미지 토큰 계산 규칙 — 회사별로 무엇이 다른가

비전 API는 이미지를 그대로 받지 않고 정해진 크기의 칸(패치)으로 나눠 그 수만큼 입력 토큰으로 청구해요. 규칙이 회사마다 달라서 같은 그림이 다른 값이 돼요.

Claude·OpenAI·Gemini·오픈 모델이 1920×1080 스크린샷을 각각 2,691·2,448·1,120·576~2,691토큰으로 바꾸는 계산을 나란히 보여 주는 카드
같은 스크린샷이라도 계산 규칙에 따라 토큰 수가 2배 넘게 달라요

Claude 와 Qwen2-VL 이 같은 2,691인 건 둘 다 28px 칸 하나를 토큰 하나로 쓰기 때문이에요. Gemini 는 크기가 커져도 토큰이 늘지 않는 대신, 큰 이미지를 얼마나 줄여 보는지 공개하지 않아요.

1920×1080 한 장은 몇 토큰 — 설정별 직접 계산

Claude 는 문서의 참조 구현을 그대로 돌렸고, OpenAI 는 2048px·2,500칸 한도 안이라 줄지 않는 경우만 넣었어요.

1920×1080 스크린샷 한 장의 입력 토큰 수 (설정별)
Claude 원본Claude 원본 · 2,691토큰2,691토큰Qwen2-VL 기본Qwen2-VL 기본 · 2,691토큰2,691토큰OpenAI highOpenAI high · 2,448토큰2,448토큰Qwen2-VL 상한 지정Qwen2-VL 상한 지정 · 1,222토큰1,222토큰Claude 1280 리사이즈Claude 1280 리사이즈 · 1,196토큰1,196토큰Gemini 기본Gemini 기본 · 1,120토큰1,120토큰OpenAI 1280 리사이즈OpenAI 1280 리사이즈 · 1,104토큰1,104토큰LLaVA-1.5LLaVA-1.5 · 576토큰576토큰Claude 800×400 크롭Claude 800×400 크롭 · 435토큰435토큰Gemini lowGemini low · 280토큰280토큰OpenAI lowOpenAI low · 173토큰173토큰

Qwen2-VL 상한 지정은 max_pixels=1280×28×28, 크롭은 에러 영역 800×400만 잘라 원본 해상도로 보낸 경우

단위: 토큰 · 자료: Anthropic·OpenAI·Google 공식 문서 규칙과 transformers smart_resize로 직접 계산 (2026-10-27)
표로 보기
구분토큰
Claude 원본2,691
Qwen2-VL 기본2,691
OpenAI high2,448
Qwen2-VL 상한 지정1,222
Claude 1280 리사이즈1,196
Gemini 기본1,120
OpenAI 1280 리사이즈1,104
LLaVA-1.5576
Claude 800×400 크롭435
Gemini low280
OpenAI low173

긴 변을 1920에서 1280으로 줄이면 Claude·OpenAI 모두 토큰이 55% 줄어요. 변 길이가 2/3이면 칸 수는 (2/3)² ≈ 44%만 남거든요. 필요한 영역만 잘라 보내면 원본 해상도를 유지하면서 84% 줄어요. 에러 팝업이나 영수증 합계 칸처럼 위치가 정해진 일이면 크롭이 품질·비용 모두 유리해요.

이미지 1,000장 비용 — 2026년 10월 가격표로 계산

이미지 토큰에 각 회사 표준 입력 단가를 곱한 값이에요. 단가는 Anthropic 가격표, OpenAI 가격표, Gemini API 가격표에서 2026-10-27에 확인했어요.

모델입력 단가($/100만)출력 단가($/100만)원본 1,000장줄였을 때 1,000장
Claude Sonnet 5.52.0010.00$5.38$2.39 (1280px)
gpt-5.6-terra2.0012.00$4.90$2.21 (1280px)
Gemini 3.8 Flash0.753.75$0.84$0.21 (low)
Claude Haiku 5.50.100.50$0.27$0.12 (1280px)
gpt-5.6-luna0.201.20$0.49$0.22 (1280px)
Gemini 3.5 Flash-Lite0.302.50$0.34$0.08 (low)
1920×1080 이미지 1000장의 입력 비용 (이미지 토큰만)
원본·기본 설정1280 리사이즈 또는 low
0123456Claude Sonnet 5.5 · 원본·기본 설정 5.4달러Claude Sonnet 5.5 · 1280 리사이즈 또는 low 2.4달러Claude Sonnet 5.5gpt-5.6-terra · 원본·기본 설정 4.9달러gpt-5.6-terra · 1280 리사이즈 또는 low 2.2달러gpt-5.6-terraGemini 3.8 Flash · 원본·기본 설정 0.84달러Gemini 3.8 Flash · 1280 리사이즈 또는 low 0.21달러Gemini 3.8 FlashClaude Haiku 5.5 · 원본·기본 설정 0.27달러Claude Haiku 5.5 · 1280 리사이즈 또는 low 0.12달러Claude Haiku 5.5gpt-5.6-luna · 원본·기본 설정 0.49달러gpt-5.6-luna · 1280 리사이즈 또는 low 0.22달러gpt-5.6-lunaGemini 3.5 Flash-Lite · 원본·기본 설정 0.34달러Gemini 3.5 Flash-Lite · 1280 리사이즈 또는 low 0.08달러Gemini 3.5 Flash-Lite

Gemini 는 리사이즈해도 토큰이 같아서 low 설정 값을 넣었어요

단위: 달러 · 자료: 각 사 공식 가격표(2026-10-27 확인) × 직접 계산한 이미지 토큰 수
표로 보기
구분원본·기본 설정1280 리사이즈 또는 low
Claude Sonnet 5.55.42.4
gpt-5.6-terra4.92.2
Gemini 3.8 Flash0.840.21
Claude Haiku 5.50.270.12
gpt-5.6-luna0.490.22
Gemini 3.5 Flash-Lite0.340.08

가격에는 기한이 붙은 것도 있어요. Gemini 3.8 Flash 는 2026년 12월 31일까지 입력 $0.75·출력 $3.75이고 2027년 1월 1일부터 두 배($1.50·$7.50)라고 가격표에 적혀 있어요. 그러면 원본 1,000장 비용도 $0.84에서 $1.68이 돼요. Claude Haiku 5.5 는 프롬프트가 10만 토큰을 넘으면 단가가 5배($0.50)로 올라가니, 이미지를 수십 장 한 번에 넣는 요청은 따로 계산해야 해요. 세 회사 모두 Batch API 로 보내면 입력·출력이 50% 할인돼요.

방식별 비교 — 원본·리사이즈·크롭·2단계 추출·자체 호스팅

실제 요청에는 이미지 외에 지시문과 답변이 붙어요. 아래는 지시문 200토큰, 답변 300토큰(생각 토큰 포함)을 가정하고 요청 10만 건의 총비용을 계산한 예시예요. 토크나이저마다 같은 글이 다른 토큰 수가 되니 이 가정은 비교용이에요. 한국어 지시문이 몇 토큰인지는 한국어 LLM 토큰 비용 비교에서 직접 세는 법을 볼 수 있어요.

스크린샷 질문 10만 건 총비용 (지시문 200 + 답변 300토큰 가정)
gpt-5.6-terra 원본gpt-5.6-terra 원본 · 890달러890달러Claude Sonnet 5.5 원본Claude Sonnet 5.5 원본 · 878달러878달러Claude Sonnet 5.5 1280pxClaude Sonnet 5.5 1280px · 579달러579달러Haiku 추출 후 Sonnet 텍스트Haiku 추출 후 Sonnet 텍스트 · 468달러468달러gpt-5.6-terra lowgpt-5.6-terra low · 435달러435달러Gemini 3.8 Flash 기본Gemini 3.8 Flash 기본 · 212달러212달러Gemini 3.5 Flash-Lite 기본Gemini 3.5 Flash-Lite 기본 · 115달러115달러gpt-5.6-luna 원본gpt-5.6-luna 원본 · 89달러89달러Claude Haiku 5.5 원본Claude Haiku 5.5 원본 · 43.9달러43.9달러
단위: 달러 · 자료: 공식 가격표(2026-10-27) 기준 직접 계산, 토큰 수 가정은 본문 참고
표로 보기
구분비용
gpt-5.6-terra 원본890
Claude Sonnet 5.5 원본878
Claude Sonnet 5.5 1280px579
Haiku 추출 후 Sonnet 텍스트468
gpt-5.6-terra low435
Gemini 3.8 Flash 기본212
Gemini 3.5 Flash-Lite 기본115
gpt-5.6-luna 원본89
Claude Haiku 5.5 원본43.9

2단계 추출은 Claude Haiku 5.5 에 이미지와 짧은 지시(100토큰)를 주고 글자 400토큰을 뽑게 한 뒤, Sonnet 5.5 에는 그 텍스트와 질문(600토큰)만 넘겨 300토큰 답을 받는 구성이에요. 건당 $0.00048 + $0.0042 = $0.00468로, Sonnet 에 원본 이미지를 바로 보내는 $0.00878보다 47% 싸요.

방식비용첫 응답 지연품질잘 맞는 일
원본 해상도 그대로가장 높음이미지 토큰만큼 프리필이 길어짐작은 글씨·좌표에 가장 유리화면 조작, 빽빽한 문서
긴 변 1280px 리사이즈원본의 약 45%짧아짐일반 글씨는 대개 충분범용 기본값
필요한 영역만 크롭원본의 약 16%가장 짧음잘린 영역 밖은 못 봄고정 양식, 특정 패널
low 설정(OpenAI·Gemini)원본의 7~25%짧아짐글씨가 뭉개짐분류·태깅·장면 설명
2단계 추출큰 모델 직접 대비 약 53%호출 두 번이 이어져 늘어남추출 단계에서 빠진 정보는 복구 불가금액·코드·번호 읽기
자체 호스팅GPU 시간 단가에 좌우하드웨어에 좌우모델에 따라 차이 큼외부 전송 불가 데이터

지연은 직접 재지 않았지만, 입력이 길수록 첫 토큰이 늦어지는 프리필 구조는 같아서 이미지 토큰이 줄면 그 몫의 처리 시간도 줄어요. Anthropic 문서도 지연을 줄이려면 업로드 전에 직접 리사이즈하라고 권해요. 전송 크기도 지연에 들어가요. base64 로 넣으면 원본 바이트보다 약 33% 커지는데, 이유는 Base64 용도와 33% 증가 원리에 정리돼 있어요. 실제 크기는 Base64 인코더에 넣어 보면 바로 나와요.

품질은 무엇으로 가늠하나 — 줄였을 때 글자 높이

품질 점수는 작업마다 달라 남의 벤치마크를 그대로 믿기 어려워요. 대신 계산할 수 있는 지표가 하나 있어요. 원본에서 16px 높이였던 글자가 모델이 보는 이미지에서 몇 px이 되는가예요.

설정축소 비율16px 글자의 높이
Claude 고해상도 등급·OpenAI high 원본1.0016px
Claude 표준 등급(1456×819로 축소)0.7612.1px
Qwen2-VL max_pixels 상한 지정(1316×728)0.6911.0px
긴 변 1280px 리사이즈0.6710.7px
LLaVA-1.5(짧은 변 336)0.315.0px, 가로 44% 잘림
OpenAI detail low(512×288)0.274.3px

글자가 몇 px 남아야 읽히는지는 글꼴·압축·모델마다 달라서 정해진 기준은 없어요. 다만 4~5px까지 줄어드는 low 설정은 "무엇이 찍혔나"에는 충분해도 에러 코드나 금액 읽기에는 위험해요. 표는 감을 잡는 기준이니, 서비스 이미지 50~100장으로 설정별 정답률을 재서 정해요.

광고
광고

상황별 추천 — 어떤 방식을 고를까

외부 전송 불가, 글자 몇 개만 필요, 영역이 정해짐, 작은 글씨 중요 순서로 물어 자체 호스팅·2단계 추출·크롭·원본 해상도·1280px 리사이즈로 이어지는 순서도
위에서부터 답하고 처음 '예'가 나오는 칸을 기본안으로 삼아요

흔한 실수 — 비용이 예상보다 커지는 이유

단가만 비교한다. 입력 단가가 같은 $2여도 같은 이미지가 Claude 2,691, OpenAI 2,448토큰이라 이미지 비용이 10% 달라요. 비교는 "단가 × 내 이미지의 토큰 수"로 해요.

OpenAI 의 low 가 항상 싸다고 생각한다. OpenAI 문서에 따르면 gpt-5.4 계열의 low 는 2048px·6,144칸 예산을 써서 high(2,500칸)보다 비쌀 수 있어요. gpt-5.2·gpt-4.1-mini 도 low·high·auto 가 같은 예산을 써요. 모델을 바꿀 때마다 그 모델의 detail 규칙을 다시 확인해요.

대화가 길어질 때 이미지가 매 턴 다시 청구된다는 걸 놓친다. API 는 매 요청에 대화 전체를 다시 보내니, 첫 턴의 이미지도 매 턴 입력 토큰으로 잡혀요. Sonnet 5.5 에서 2,691토큰 이미지 하나로 5턴 대화를 하면 이미지 몫만 13,455토큰, $0.027이에요. 프롬프트 캐싱을 켜면 첫 기록(1.25배)과 네 번의 캐시 적중(0.05배)으로 $0.0078까지 내려가 71% 줄어요.

서버 리사이즈에 맡기고 좌표를 원본 기준으로 쓴다. Claude 표준 등급은 1920×1080을 1456×819로 줄여 보고 그 좌표로 답해요. Claude 좌표 문서는 업로드 전에 직접 줄이거나, 이미지 블록에 "oversized_image": "error" 를 넣어 몰래 줄어드는 일을 오류로 바꾸라고 안내해요.

모델을 바꾸면 비용이 조용히 바뀐다. Claude 를 표준 등급 모델에서 4.7 이후 모델로 올리면 같은 1920×1080이 1,560토큰에서 2,691토큰으로 늘어요. 3840×2160은 1,560에서 4,784토큰, 약 3배예요. 모델 업그레이드 PR 에는 이미지 토큰 수 비교를 같이 넣어요.

도입 체크리스트

  1. 서비스에 실제로 들어오는 이미지 해상도 분포를 뽑아요. 평균이 아니라 상위 10%까지 봐요.
  2. 후보 모델마다 그 분포로 이미지 토큰 수를 계산해요. 아래 함수가 공식 규칙 그대로예요.
  3. 이미지 50~100장과 정답을 만들어 원본·1280px·크롭·low 설정별 정답률을 재요.
  4. 정답률이 허용 범위 안인 가장 싼 설정을 고르고, 기본 리사이즈를 클라이언트나 서버 앞단에 넣어요.
  5. 같은 이미지를 여러 번 묻는 흐름이면 캐싱, 실시간이 아니면 Batch API 를 켜요.
  6. 응답의 usage 로 실제 입력 토큰을 기록해 계산값과 맞는지 매주 확인해요.
import math

def claude_tokens(w, h, max_edge=2576, max_tokens=4784):
    # 28px 칸 하나 = 1토큰, 한도를 넘으면 비율을 지키며 줄임 (고해상도 등급 기본값)
    t = lambda a, b: math.ceil(a / 28) * math.ceil(b / 28)
    fits = lambda a, b: math.ceil(a/28)*28 <= max_edge and math.ceil(b/28)*28 <= max_edge and t(a, b) <= max_tokens
    if fits(w, h):
        return t(w, h)
    lo, hi, r = 1, w, w / h
    while lo + 1 < hi:
        mid = (lo + hi) // 2
        lo, hi = (mid, hi) if fits(mid, max(round(mid / r), 1)) else (lo, mid)
    return t(lo, max(round(lo / r), 1))

def openai_patch_tokens(w, h, mult=1.2):
    # gpt-5.x high 기준, 2048px·2,500칸 안에 들어오는 이미지만
    return math.ceil(math.ceil(w / 32) * math.ceil(h / 32) * mult)

GEMINI = {"low": 280, "medium": 560, "high": 1120, "ultra_high": 2240}

for w, h in [(1920, 1080), (1280, 720), (800, 400)]:
    print(f"{w}x{h}: Claude {claude_tokens(w, h)} / OpenAI {openai_patch_tokens(w, h)} / Gemini 기본 {GEMINI['high']}")
1920x1080: Claude 2691 / OpenAI 2448 / Gemini 기본 1120
1280x720: Claude 1196 / OpenAI 1104 / Gemini 기본 1120
800x400: Claude 435 / OpenAI 390 / Gemini 기본 1120

표준 등급 Claude 모델이면 max_edge=1568, max_tokens=1568 을 넘겨요. 월 전송량은 데이터 용량 변환기로 어림해요.

광고
광고

자주 묻는 질문

이미지 한 장은 보통 몇 토큰인가요?

규칙에 따라 달라요. 1920×1080 스크린샷 기준으로 Claude 4.7 이후 모델은 2,691, OpenAI gpt-5.6 high 는 2,448, Gemini 3·4 기본 설정은 약 1,120토큰이에요. 1000×1000 사진은 Claude 에서 1,296토큰이에요.

이미지를 줄이면 정확도가 얼마나 떨어지나요?

작업에 따라 달라서 일률적인 숫자는 없어요. 긴 변 1280px로 줄이면 16px 글자가 10.7px이 돼 일반 글씨는 대개 읽히지만, 아주 작은 글씨나 좌표가 중요한 일에서는 차이가 날 수 있어요. 서비스 이미지 50~100장으로 직접 비교하는 게 가장 확실해요.

Gemini 는 큰 이미지를 보내도 토큰이 늘지 않나요?

Gemini 3·4 모델은 media_resolution 단계별 근삿값(low 280, medium 560, high 1,120, ultra_high 2,240)을 써서 이미지가 커져도 토큰은 거의 그대로예요. 대신 큰 이미지를 얼마나 줄여서 보는지 공개하지 않으니, 작은 글씨가 중요하면 high 와 ultra_high 를 직접 비교해 봐요.

OCR 을 먼저 돌리고 텍스트만 보내는 게 늘 싼가요?

글자 몇 개만 필요할 때는 싸요. 이 글의 예시 가정에서는 Sonnet 에 원본을 보내는 것보다 47% 쌌어요. 하지만 그림의 배치나 색, 추출 단계가 놓친 정보는 다음 단계에서 다시 볼 수 없고, 호출이 두 번이라 응답이 늦어져요.

오픈 모델을 직접 띄우면 이미지 비용이 0인가요?

토큰 요금 대신 GPU 메모리와 시간이 들어요. Qwen2-VL-7B 에서 1920×1080 한 장은 KV 캐시 147MiB를 차지해요. max_pixels 로 이미지 토큰 상한을 거는 게 첫 번째 조정이에요.

정리

더 깊이 읽기

이 글은 실무에서 판단할 때 필요한 것 위주로 정리했어요. 같은 주제의 내부 동작 원리는 devboi 기술 블로그의 멀티모달 LLM 원리 — 이미지가 토큰이 되는 과정(LLaVA·ViT)에서 도식과 코드로 단계별로 풀었어요.

참고한 자료

#멀티모달 LLM 비용#이미지 토큰 계산#비전 API 요금 비교#스크린샷 토큰 수#Claude 이미지 토큰#OpenAI detail low high#Gemini media_resolution#Qwen2-VL max_pixels
← 이전 글MCP 도입 판단표, stdio·HTTP·직접 호출 비용과 지연 비교다음 글 →프롬프트 캐싱 비용 계산, TTL 고르는 법과 API·vLLM 비교
광고

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →