신규 무료로 가입하고 10회 호출해 보세요. 최대 $1, 카드 등록 불필요.

PDF는 몇 token일까? 업체별 4가지 규칙, 페이지당 15-2,100

목차
  1. 문서를 모델에 보내는 방법은?
  2. 모델이 실제로 파일을 읽었는지 확인하려면?
  3. 업체별로 PDF 파일의 token 수를 어떻게 계산하나?
  4. 추출한 텍스트만으로 답할 수 없는 경우는?
  5. 문서 처리 비용을 줄이려면?
  6. Word 파일은 어떻게 처리하나?
  7. 측정 방법
  8. 자주 묻는 질문
  9. PDF 한 페이지는 몇 token인가?
  10. PDF와 추출한 텍스트 중 어느 쪽이 저렴한가?
  11. LLM은 스캔한 PDF를 읽을 수 있나?
  12. PDF 파일을 직접 받는 모델은?
  13. 긴 PDF의 비용을 줄이려면?
  14. 함께 읽을 글

PDF를 파일로 모델에 보내면 업체마다 다른 규칙으로 과금한다. GPT-6는 페이지의 텍스트 token 수에 페이지당 약 15 token을 더한다. Claude는 텍스트 token 수에 페이지당 1,558 token을 더한다. Gemini는 페이지당 515 token을 계산하고 텍스트에는 과금하지 않는다. Qwen 3.8은 텍스트 token 수에 페이지당 2,098 token을 더한다. 같은 페이지에 텍스트를 점점 늘려 가며 전송해 이 규칙을 측정했다. 이어서 문서 10개를 모델 15개에 보내, 문서 종류별로 정답을 유지하면서 가장 저렴하게 전송하는 방법을 찾았다.

TL;DR

  • PDF를 파일로 보내면 GPT-6는 텍스트에 페이지당 15 token, Claude는 1,558 token, Qwen 3.8은 2,098 token을 더한다. Gemini는 페이지당 515 token으로 고정이며 텍스트는 무료다.
  • 추출한 텍스트로는 차트 질문 150개 중 0개, 스캔 문서 질문 105개 중 0개를 맞혔다.
  • 페이지별로 전송 방식을 선택하자 Claude Sonnet 5.5에서 혼합 문서의 입력이 17,228 token에서 6,543 token으로 줄었다. 질문 12개는 모두 맞혔다.
  • 120페이지 PDF에서 필요한 4페이지만 보내자 Claude Sonnet 5.5의 입력이 253,822 token에서 8,758 token으로 줄었다.

문서를 모델에 보내는 방법은?

파일로 보내거나, 페이지별 이미지로 보내거나, 먼저 텍스트를 추출해서 보내는 세 가지 방법이 있다.

import base64
import pymupdf  # pip install pymupdf

doc = pymupdf.open("report.pdf")
b64 = lambda data: base64.b64encode(data).decode()   # binary written as text, so it fits in JSON

# 1. As a file. The vendor decides how to read it.
as_file = [{"type": "file", "file": {"filename": "report.pdf",                # OpenAI-compatible chat
            "file_data": "data:application/pdf;base64," + b64(open("report.pdf", "rb").read())}}]
as_document = [{"type": "document", "source": {"type": "base64",              # Anthropic Messages API
                "media_type": "application/pdf", "data": b64(open("report.pdf", "rb").read())}}]

# 2. As page images. You render each page; any model that accepts images takes these.
as_images = [{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64," +
              b64(page.get_pixmap(dpi=72).tobytes("jpeg"))}} for page in doc]

# 3. As text. The text layer is the selectable text stored in a PDF. A scan has none.
as_text = "\n\n".join(page.get_text() for page in doc)

chat 엔드포인트에서 모델 15개가 지원한 입력 형식은 다음과 같다.

모델PDF 파일페이지 이미지텍스트
GPT-6.1 Sol, GPT-6 Luna지원지원, 요청당 최대 50개지원
Claude Opus 5.5, Sonnet 5.5, Haiku 5.5지원지원지원
Gemini 3.1 Pro, Gemini 3.8 Flash지원지원지원
Qwen 3.8 Max, Qwen 3.8 Flash지원지원지원
Qwen 3.6 35B (가중치 공개), DeepSeek V4.1 Flash, GLM 5.3 Flash, Kimi K3미지원지원지원
GLM 5.3, DeepSeek V4 Pro미지원미지원지원

페이지 이미지는 모든 비전 모델이 지원하는 전송 방식이다. 가중치를 공개했지만 파일 입력은 받지 않는 모델 4개도 여기에 포함된다. 이번에 사용한 엔드포인트에서 Gemini 모델은 이미지 파트에 넣은 data URL 형식으로 PDF를 받았다. Google 자체 API에서는 인라인 데이터로 받는다.

모델이 실제로 파일을 읽었는지 확인하려면?

파일에만 있는 내용을 질문하고 입력 token 수를 확인하면 된다. 지원하지 않는 입력을 보내면 400 오류가 반환되기도 하지만, 입력이 버려진 채 모델이 답변하는 경우도 있다. 확인 테스트에서 비전 기능이 없는 모델 2개는 이미지 파트를 무시했다. 2페이지 문서를 보냈는데 입력 token 수는 각각 27과 98이었다. 파일 대신 URL을 받은 모델 하나는 내용을 지어내 답했다.

r = client.chat.completions.create(model=model, messages=[{"role": "user", "content": as_file + [question]}])
read_it = "MF-OPS-2291" in r.choices[0].message.content   # a string found only in the document
plausible = r.usage.prompt_tokens > 200 * len(doc)        # a dropped file leaves a few dozen tokens

페이지 종류는 모델 없이도 판별할 수 있다. 뒤에서 설명할 페이지별 라우팅도 이 분류를 사용한다.

def kind(page) -> str:
    if len(page.get_text().strip()) < 40:
        return "scan"        # no text layer: needs OCR or an image
    if page.get_images() or len(page.get_drawings()) > 60:
        return "visual"      # a picture or a chart drawn on the page
    return "text"

업체별로 PDF 파일의 token 수를 어떻게 계산하나?

계산 규칙은 네 가지다. 페이지마다 단어 수가 각각 0, 80, 250, 500, 약 670인 6페이지 PDF를 만들었다. 각 페이지에 차트를 추가한 버전도 만들고, 각각 파일과 추출한 텍스트로 전송했다.

PDF 페이지의 단어 수에 따른 페이지당 입력 token 수 선 그래프. Qwen 3.8은 2,098, Claude는 1,558에서 시작하며 텍스트가 늘수록 증가한다. GPT-6는 14에서 시작해 추출한 텍스트를 나타내는 점선을 따라간다. Gemini는 515로 일정하다

업체PDF를 파일로 보낼 때의 token 수
GPT-6텍스트 token 수에 페이지당 14.5를 더한다. 그림이 있는 페이지는 약 650-1,700이 추가된다
Claude텍스트 token 수에 페이지당 정확히 1,558을 더한다. 차트가 있어도 추가되지 않는다
Gemini페이지 내용과 관계없이 페이지당 515. 텍스트는 계산하지 않는다
Qwen 3.8텍스트 token 수의 약 0.94배에 페이지당 2,098을 더한다. 차트가 있으면 약 770이 추가된다

token은 모델 과금의 단위로, 대략 영어 단어의 4분의 3에 해당한다. 같은 계열의 모델끼리는 계산 결과가 몇 token 이내로 일치했다.

이번에 측정한 전송 경로에서는 두 업체의 규칙이 공개 문서와 달랐다. Google 문서에는 페이지당 258 token이며 PDF 자체의 텍스트에는 과금하지 않는다고 나온다. 실측값은 페이지당 515였고, 텍스트는 문서 설명대로 무료였다. OpenAI 문서에는 PDF를 추출한 텍스트와 페이지 이미지로 모델에 전달한다고 나온다. 하지만 이번 테스트에서 일반 텍스트 페이지에는 이미지 비용이 붙지 않았다. Anthropic은 페이지마다 텍스트와 이미지로 처리하며 보통 1,500-3,000 token이 든다고 설명하는데, 실측 결과와 일치한다.

이 규칙에서 다음을 알 수 있다.

  • Claude와 Qwen에서는 내용이 적은 페이지가 비싸다. 한 줄만 있는 페이지도 파일로 보내면 1,558 또는 2,098 token이 들지만, 텍스트로 보내면 12 token 정도다.
  • Gemini에서는 내용이 많은 페이지가 저렴하다. 약 670단어가 있는 페이지도 빈 페이지와 똑같이 515 token이 든다. 텍스트만 보내면 약 800 token이다.
  • GPT-6에서는 그림이 없는 한 파일과 텍스트 비용이 같다. 페이지 전체가 이미지인 스캔 페이지는 2,868 token으로 측정됐다.

페이지당 약 250단어가 있는 일반 텍스트 보고서 12페이지를 파일로 보내니 GPT-6.1 Sol은 6,028 token, Gemini 3.8 Flash는 6,441 token, Claude Sonnet 5.5는 27,297 token, Qwen 3.8 Flash는 30,934 token이었다. 추출한 텍스트는 모델 15개 전체에서 5,924-8,716 token이었다.

추출한 텍스트만으로 답할 수 없는 경우는?

텍스트 레이어에 없는 정보가 필요한 경우다. 각 질문을 답변에 필요한 정보 유형으로 분류했고, 모델 15개의 결과를 합산했다.

전송 방식본문 텍스트표 셀차트스캔 페이지
추출한 텍스트300개 중 297개170개 중 168개150개 중 0개105개 중 0개
OCR 후 텍스트105개 중 104개
PDF 파일186개 중 186개103개 중 103개90개 중 90개63개 중 62개
페이지 이미지, 110 dpi260개 중 258개148개 중 148개130개 중 130개91개 중 89개
페이지 이미지, 72 dpi260개 중 257개148개 중 142개130개 중 130개91개 중 88개

dpi는 페이지를 렌더링할 때의 해상도로, 인치당 점 수를 뜻한다. US Letter 페이지를 72 dpi로 렌더링하면 612 x 792픽셀이 된다. OCR은 이미지에서 텍스트를 읽어내는 광학 문자 인식 기술이다. 이번 테스트에서는 오픈 소스 Tesseract를 로컬에서 실행했다.

추출한 텍스트는 모든 모델에서 차트와 스캔 문서 질문을 하나도 맞히지 못했다. 필요한 숫자가 텍스트에 없기 때문이다. OCR을 사용하면 스캔 보고서의 내용을 복원해 텍스트 비용으로 보낼 수 있었지만, 차트는 그렇지 않았다. 차트 슬라이드 15개를 OCR로 처리한 결과를 모델 2개에 보냈고, 둘 다 7개 중 0개를 맞혔다. 이번 테스트의 표는 단순한 격자 형태라 텍스트 추출 후에도 정보가 유지됐다. 병합된 셀이나 열 안에서 줄바꿈된 텍스트는 더 까다로우므로 실제 문서로 테스트해야 한다.

문서 처리 비용을 줄이려면?

방법은 일곱 가지이며, 그중 여섯 가지를 측정했다.

1. token 계산 규칙에 맞춰 전송 방식을 선택한다. 텍스트만 있는 페이지는 텍스트로 보낸다. 그 외에는 Gemini에 파일로, 다른 모델에는 72 dpi 페이지 이미지로 보낸다. 페이지 이미지의 비용은 그 안에 얼마나 많은 내용이 인쇄되어 있든 같다. 내용이 빽빽한 IRS 양식 6페이지는 Claude Sonnet 5.5에서 텍스트로 13,635 token, 파일로 22,871 token, 72 dpi 이미지로 4,015 token이었다. 세 방식 모두 질문 3개를 전부 맞혔다.

2. 페이지별로 전송 방식을 선택한다. 실제 문서에는 여러 종류의 페이지가 섞여 있다. 위의 kind 함수로 분류한 뒤 텍스트 페이지는 텍스트로, 그림이 있는 페이지는 72 dpi 이미지로, 스캔 페이지는 OCR을 거쳐 보낸다. 9페이지 문서(텍스트 4페이지, 차트 3페이지, 스캔 2페이지)에 질문 12개를 테스트한 결과다.

모델파일페이지별 라우팅모든 페이지를 72 dpi 이미지로 전송
GPT-6 Luna15,106, 12개 정답5,140, 12개 정답5,750, 9개 정답
Claude Sonnet 5.517,228, 12개 정답6,543, 12개 정답6,257, 12개 정답
Qwen 3.8 Flash25,036, 12개 정답5,313, 12개 정답4,710, 12개 정답
Gemini 3.8 Flash5,043, 12개 정답7,110, 12개 정답10,278, 12개 정답

업체 3곳에서는 페이지별 라우팅으로 파일 대비 입력을 62%-79% 줄였고 모든 정답을 유지했다. Gemini에서는 파일이 이미 가장 저렴하다.

3. 이미지 해상도를 낮추되, 텍스트 페이지에는 적용하지 않는다. 페이지 이미지의 token 수는 픽셀 수가 줄면 함께 줄어든다. Gemini만 모든 크기에 같은 token 수를 부과했다. 레이블이 큰 차트 슬라이드는 36 dpi에서도 읽을 수 있었다. 테스트한 모델 6개 모두 7개 중 최소 6개를 맞혔다. 슬라이드 15개는 Claude Haiku 5.5에서 2,874 token이었고, 파일로 보내면 23,949 token이었다. 본문 텍스트에는 72 dpi가 필요했다. 50 dpi에서도 Claude Haiku 5.5와 Gemini는 7개를 모두 맞혔지만, GLM 5.3 Flash는 7개 중 2개로 떨어졌다. GPT-6 Luna는 96 dpi 미만의 모든 페이지 이미지 해상도에서 정답 수가 줄었으므로 파일이나 텍스트로 보내는 편이 낫다.

4. OpenAI에서는 그림이 있는 페이지에 detail을 low로 설정한다. Responses API는 PDF 파일에 detail 필드를 받는다. GPT-6 Luna는 low 설정으로 슬라이드 15개를 9,985 token에 읽었고, 기본 설정에서는 22,155 token이 들었다. 스캔 보고서는 11,387 token이었으며 기본값은 34,396 token이었다. 두 문서 모두 모든 질문을 맞혔다. 일반 텍스트 페이지는 변화가 없었다.

5. 필요한 페이지만 보낸다. 120페이지 매뉴얼에서 GPT-6 Luna가 추출한 텍스트(46,420 token)를 읽고 질문 4개에 각각 필요한 페이지를 골랐다. 이어서 Claude Sonnet 5.5가 8,758 token짜리 4페이지 PDF를 읽고 질문 4개를 모두 맞혔다. 전체 파일은 Claude에서 253,822 token이므로, 첫 단계 비용까지 포함한 입력 비용이 $0.508에서 $0.022로 줄었다.

6. 저렴한 모델이 내용을 옮기고 큰 모델이 추론하게 한다. 저렴한 비전 모델이 차트 슬라이드 15개를 Markdown 표로 변환하는 데 $0.002-$0.011이 들었다. 이후 Claude Opus 5.5는 약 2,000 token의 변환된 텍스트로 질문 7개를 모두 맞혔고, 비용은 $0.010이었다. 파일로 보내면 입력이 23,949 token이고 비용은 $0.096이다. 변환한 텍스트는 보관해 두고 다시 질문할 수 있다.

7. 문서를 캐싱하고 기다릴 수 있는 작업은 배치로 처리한다. PDF에 캐시 구분점(Anthropic API의 cache_control 표시)을 설정하자 Claude Sonnet 5.5에 질문 6개를 보내는 비용이 $0.461에서 $0.117로 줄었다. 첫 요청이 38,364 token을 캐시에 기록했고, 다음 다섯 요청은 각각 약 $0.004에 이를 읽었다. 배치 처리는 이번에 측정하지 않았다. OpenAI, Anthropic, Google은 모두 24시간 이내에 결과를 반환하는 batch API를 절반 가격으로 제공한다고 명시한다. Anthropic은 캐싱 할인과 중복 적용된다고 설명한다.

주의할 가격 기준도 있다. 120페이지 PDF는 Claude에서 250,000 token을 넘는다. Claude Haiku 5.5는 100,000 token을 초과하는 prompt에 5배 요금을 부과한다. 같은 매뉴얼에서 추출한 텍스트는 68,382 token이다.

Word 파일은 어떻게 처리하나?

변환해서 보낸다. 테스트한 모델 6개 중 .docx 파일을 받은 모델은 GPT-6.1 Sol과 GPT-6 Luna뿐이었다. 둘 다 텍스트만 읽었으며, 이는 PDF가 아닌 파일에 대한 OpenAI 문서 설명과 같다. 텍스트와 표는 pandoc으로 Markdown으로 변환하면 충분하다. 9페이지 계약서는 3,144 token이었고 모든 모델이 질문 7개를 전부 맞혔다. 차트가 삽입된 메모는 이 방식으로 5개 중 2개를 맞혔다. LibreOffice로 PDF로 변환한 뒤에는 5개를 모두 맞혔으며, 입력은 Gemini 3.8 Flash에서 1,217 token, Claude Sonnet 5.5에서 3,827 token이었다.

측정 방법

문서 10개를 사용했다. 직접 생성한 문서 7개(12페이지 보고서, 재무 표 8페이지, 차트 슬라이드 15개, 보고서의 스캔본, 120페이지 매뉴얼, Word 계약서, Word 메모)와 공개 문서 3개(논문 “Attention Is All You Need”, IRS Form W-9, NIST의 AI Risk Management Framework)다. 각 문서에는 정답을 하나로 검증할 수 있는 질문을 3-7개씩 준비했다.

본 실험에서는 문서마다 각 전송 방식으로 각 모델에 한 번의 요청을 보냈다. 2026년 10월 10일에 요청 568건을 실행했고 566건이 성공했다. GPT-6 Luna가 120개 페이지 이미지를 두 번 거부했다. token 계산 규칙과 비용 측정을 위해 같은 날 업체별 저가 모델 하나씩에 요청 176건을 추가로 보냈다. 캐싱 테스트(Messages API)와 detail 테스트(Responses API)를 제외하면 모두 Synthorai 게이트웨이의 OpenAI 호환 chat 엔드포인트를 사용했다. 달러 금액은 정가 기준이다.

token 수는 이 전송 경로에서 엔드포인트가 보고한 값이다. 같은 모델이라도 다른 서비스 제공자는 파일을 다르게 전처리할 수 있다. 특정 규칙을 적용하기 전에 자신의 전송 경로에서 6페이지 테스트를 실행해야 한다. 문서당 질문이 3-7개뿐이므로, 모두 맞힌 방식은 문서를 읽을 수 있다는 뜻이지 정보 손실이 없다고 입증된 것은 아니다.

자주 묻는 질문

PDF 한 페이지는 몇 token인가?

업체마다 다르다. 파일로 보내면 GPT-6는 텍스트에 약 15 token, Claude는 텍스트에 1,558 token을 더한다. Gemini는 텍스트가 무료이고 페이지당 515 token으로 고정이다. Qwen 3.8은 텍스트에 약 2,098 token을 더한다. 스캔 페이지는 GPT-6.1 Sol에서 2,868 token, Claude Sonnet 5.5에서 1,579 token으로 측정됐다.

PDF와 추출한 텍스트 중 어느 쪽이 저렴한가?

일반 텍스트 페이지는 Gemini를 제외한 모든 모델에서 추출한 텍스트가 더 저렴하거나 비용이 같다. Gemini는 텍스트를 계산하지 않으므로 내용이 많은 페이지를 파일로 보내면 token 수가 더 적다. GPT-6.1 Sol에서는 파일과 텍스트 비용이 거의 같다. 추출한 텍스트로는 차트나 스캔 페이지에 관한 질문에 답할 수 없다.

LLM은 스캔한 PDF를 읽을 수 있나?

페이지를 파일이나 이미지로 받으면 읽을 수 있다. 스캔본에서 추출한 텍스트는 비어 있으며, 이번 테스트에서는 질문 105개 중 0개를 맞혔다. 로컬에서 OCR을 실행해 결과를 보내면 텍스트 비용으로 105개 중 104개를 맞혔다. 인쇄된 텍스트의 스캔본에는 이 방식이 가장 저렴하다.

PDF 파일을 직접 받는 모델은?

이번 테스트에서는 GPT-6.1 Sol, GPT-6 Luna, Claude 5.5 모델 3개, Gemini 3.1 Pro, Gemini 3.8 Flash, Qwen 3.8 Max, Qwen 3.8 Flash가 지원했다. DeepSeek V4.1 Flash, GLM 5.3 Flash, Kimi K3, Qwen 3.6 35B는 페이지 이미지는 받았지만 파일은 받지 않았다.

긴 PDF의 비용을 줄이려면?

보내는 페이지 수를 줄이고, 페이지마다 가장 저렴한 방식으로 보내며, 보낸 내용을 재사용한다. 저렴한 모델이 관련 페이지를 고르게 하자 Claude Sonnet 5.5에서 120페이지 요청의 입력이 253,822 token에서 8,758 token으로 줄었다. 페이지 유형별 라우팅은 혼합 문서의 입력을 62%-79% 줄였다. 캐싱을 사용하자 문서 하나에 질문 6개를 보내는 비용이 $0.461에서 $0.117로 줄었다.

함께 읽을 글

← 블로그로 돌아가기