이제 제공하는 PDF의 모든 텍스트, 그림, 차트, 표에 대해 Claude에게 질문할 수 있습니다. 몇 가지 사용 사례 예시:

  • 재무 보고서 분석 및 차트/표 이해
  • 법률 문서에서 핵심 정보 추출
  • 문서 번역 지원
  • 문서 정보를 구조화된 형식으로 변환

시작하기 전에

PDF 요구사항 확인

Claude는 모든 표준 PDF와 작동합니다. 그러나 PDF 지원을 사용할 때 요청 크기가 다음 요구사항을 충족하는지 확인해야 합니다:

요구사항제한
최대 요청 크기32MB
요청당 최대 페이지 수100
형식표준 PDF (비밀번호/암호화 없음)

두 제한 모두 PDF와 함께 전송되는 다른 콘텐츠를 포함한 전체 요청 페이로드에 적용됩니다.

PDF 지원은 Claude의 비전 기능에 의존하므로, 다른 비전 작업과 동일한 제한사항 및 고려사항이 적용됩니다.

지원되는 플랫폼 및 모델

PDF 지원은 현재 직접 API 액세스 및 Google Vertex AI를 통해 다음에서 지원됩니다:

  • Claude Opus 4 (claude-opus-4-20250514)
  • Claude Sonnet 4 (claude-sonnet-4-20250514)
  • Claude Sonnet 3.7 (claude-3-7-sonnet-20250219)
  • Claude Sonnet 3.5 모델 (claude-3-5-sonnet-20241022, claude-3-5-sonnet-20240620)
  • Claude Haiku 3.5 (claude-3-5-haiku-20241022)

이 기능은 곧 Amazon Bedrock에서도 지원될 예정입니다.

.csv, .xlsx, .docx, .md, .txt 파일과 같은 비PDF 파일의 경우 다른 파일 형식 작업을 참조하세요.


Claude로 PDF 처리하기

첫 번째 PDF 요청 보내기

Messages API를 사용한 간단한 예제부터 시작해보겠습니다. Claude에게 PDF를 제공하는 방법은 세 가지입니다:

  1. 온라인에 호스팅된 PDF에 대한 URL 참조로
  2. document 콘텐츠 블록에서 base64로 인코딩된 PDF로
  3. Files APIfile_id

옵션 1: URL 기반 PDF 문서

가장 간단한 방법은 URL에서 직접 PDF를 참조하는 것입니다:

 curl https://api.anthropic.com/v1/messages \
   -H "content-type: application/json" \
   -H "x-api-key: $ANTHROPIC_API_KEY" \
   -H "anthropic-version: 2023-06-01" \
   -d '{
     "model": "claude-opus-4-20250514",
     "max_tokens": 1024,
     "messages": [{
         "role": "user",
         "content": [{
             "type": "document",
             "source": {
                 "type": "url",
                 "url": "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf"
             }
         },
         {
             "type": "text",
             "text": "What are the key findings in this document?"
         }]
     }]
 }'

옵션 2: Base64로 인코딩된 PDF 문서

로컬 시스템에서 PDF를 보내거나 URL을 사용할 수 없는 경우:

# 방법 1: 원격 PDF를 가져와서 인코딩
curl -s "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf" | base64 | tr -d '\n' > pdf_base64.txt

# 방법 2: 로컬 PDF 파일 인코딩
# base64 document.pdf | tr -d '\n' > pdf_base64.txt

# pdf_base64.txt 내용을 사용하여 JSON 요청 파일 생성
jq -n --rawfile PDF_BASE64 pdf_base64.txt '{
    "model": "claude-opus-4-20250514",
    "max_tokens": 1024,
    "messages": [{
        "role": "user",
        "content": [{
            "type": "document",
            "source": {
                "type": "base64",
                "media_type": "application/pdf",
                "data": $PDF_BASE64
            }
        },
        {
            "type": "text",
            "text": "What are the key findings in this document?"
        }]
    }]
}' > request.json

# JSON 파일을 사용하여 API 요청 보내기
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d @request.json

옵션 3: Files API

반복적으로 사용할 PDF나 인코딩 오버헤드를 피하고 싶을 때는 Files API를 사용하세요:

# 먼저 PDF를 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 "file=@document.pdf"

# 그런 다음 반환된 file_id를 메시지에서 사용
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: files-api-2025-04-14" \
  -d '{
    "model": "claude-opus-4-20250514", 
    "max_tokens": 1024,
    "messages": [{
      "role": "user",
      "content": [{
        "type": "document",
        "source": {
          "type": "file",
          "file_id": "file_abc123"
        }
      },
      {
        "type": "text",
        "text": "What are the key findings in this document?"
      }]
    }]
  }'

PDF 지원 작동 방식

Claude에게 PDF를 보내면 다음 단계가 수행됩니다:

1

시스템이 문서의 내용을 추출합니다.

  • 시스템이 문서의 각 페이지를 이미지로 변환합니다.
  • 각 페이지에서 텍스트를 추출하여 각 페이지의 이미지와 함께 제공합니다.
2

Claude가 텍스트와 이미지를 모두 분석하여 문서를 더 잘 이해합니다.

  • 문서는 분석을 위해 텍스트와 이미지의 조합으로 제공됩니다.
  • 이를 통해 사용자는 차트, 다이어그램 및 기타 비텍스트 콘텐츠와 같은 PDF의 시각적 요소에 대한 인사이트를 요청할 수 있습니다.
3

Claude가 관련이 있는 경우 PDF의 내용을 참조하여 응답합니다.

Claude는 응답할 때 텍스트 및 시각적 콘텐츠를 모두 참조할 수 있습니다. PDF 지원을 다음과 통합하여 성능을 더욱 향상시킬 수 있습니다:

  • 프롬프트 캐싱: 반복 분석의 성능을 향상시키기 위해.
  • 배치 처리: 대용량 문서 처리를 위해.
  • 도구 사용: 문서에서 특정 정보를 추출하여 도구 입력으로 사용하기 위해.

비용 추정

PDF 파일의 토큰 수는 문서에서 추출된 총 텍스트와 페이지 수에 따라 달라집니다:

  • 텍스트 토큰 비용: 각 페이지는 일반적으로 콘텐츠 밀도에 따라 페이지당 1,500-3,000 토큰을 사용합니다. 추가 PDF 수수료 없이 표준 API 가격이 적용됩니다.
  • 이미지 토큰 비용: 각 페이지가 이미지로 변환되므로 동일한 이미지 기반 비용 계산이 적용됩니다.

특정 PDF의 비용을 추정하려면 토큰 계산을 사용할 수 있습니다.


PDF 처리 최적화

성능 향상

최적의 결과를 위해 다음 모범 사례를 따르세요:

  • 요청에서 PDF를 텍스트보다 앞에 배치
  • 표준 글꼴 사용
  • 텍스트가 명확하고 읽기 쉬운지 확인
  • 페이지를 적절한 세로 방향으로 회전
  • 프롬프트에서 논리적 페이지 번호(PDF 뷰어에서) 사용
  • 필요시 큰 PDF를 청크로 분할
  • 반복 분석을 위해 프롬프트 캐싱 활성화

구현 확장

대용량 처리를 위해 다음 접근 방식을 고려하세요:

프롬프트 캐싱 사용

반복 쿼리에서 성능을 향상시키기 위해 PDF를 캐시하세요:

# pdf_base64.txt 내용을 사용하여 JSON 요청 파일 생성
jq -n --rawfile PDF_BASE64 pdf_base64.txt '{
    "model": "claude-opus-4-20250514",
    "max_tokens": 1024,
    "messages": [{
        "role": "user",
        "content": [{
            "type": "document",
            "source": {
                "type": "base64",
                "media_type": "application/pdf",
                "data": $PDF_BASE64
            },
            "cache_control": {
              "type": "ephemeral"
            }
        },
        {
            "type": "text",
            "text": "Which model has the highest human preference win rates across each use-case?"
        }]
    }]
}' > request.json

# 그런 다음 JSON 파일을 사용하여 API 호출
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d @request.json

문서 배치 처리

대용량 워크플로우에는 Message Batches API를 사용하세요:

# pdf_base64.txt 내용을 사용하여 JSON 요청 파일 생성
jq -n --rawfile PDF_BASE64 pdf_base64.txt '
{
  "requests": [
      {
          "custom_id": "my-first-request",
          "params": {
              "model": "claude-opus-4-20250514",
              "max_tokens": 1024,
              "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "document",
                            "source": {
 "type": "base64",
 "media_type": "application/pdf",
 "data": $PDF_BASE64
                            }
                        },
                        {
                            "type": "text",
                            "text": "Which model has the highest human preference win rates across each use-case?"
                        }
                    ]
                }
              ]
          }
      },
      {
          "custom_id": "my-second-request",
          "params": {
              "model": "claude-opus-4-20250514",
              "max_tokens": 1024,
              "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "document",
                            "source": {
 "type": "base64",
 "media_type": "application/pdf",
 "data": $PDF_BASE64
                            }
                        },
                        {
                            "type": "text",
                            "text": "Extract 5 key insights from this document."
                        }
                    ]
                }
              ]
          }
      }
  ]
}
' > request.json

# 그런 다음 JSON 파일을 사용하여 API 호출
curl https://api.anthropic.com/v1/messages/batches \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d @request.json

다음 단계