본문으로 건너뛰기

Baidu Unlimited-OCR의 장문서 처리 방식

DeepSeek OCR의 입력 압축에 R-SWA를 더해 장문서 전사 중 KV 캐시 증가를 억제하는 Baidu의 Unlimited-OCR 구조와 실행법을 정리합니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

장문서 OCR은 페이지를 시각 토큰으로 바꾸는 입력 비용과 생성 결과가 누적되며 커지는 출력 메모리라는 두 병목을 동시에 안고 있습니다. DeepSeek OCR은 문서 패치를 광학 압축해 입력 토큰을 줄이고, Baidu의 Unlimited-OCR은 문서 시각 토큰과 프롬프트를 정적 참조 영역으로 유지하면서 최근 출력 토큰만 약 128토큰의 창에 남기는 R-SWA를 적용합니다. 이 구조에서 KV 캐시는 정적 영역 m과 최근 출력 영역 n의 합으로 유지되므로 500토큰이나 30,000토큰을 생성해도 메모리 사용량이 대체로 일정합니다. 모델은 Transformers, vLLM, SGLang에서 실행할 수 있지만 ‘Unlimited’는 무한한 처리량을 뜻하는 것이 아니라 장문서 디코딩 메모리 증가를 제한한다는 의미입니다.

섹션별 상세

01
Vision-Language Model은 문서 페이지를 원시 픽셀로 직접 읽지 않고 작은 정사각형 패치의 격자로 나눈 뒤 각 패치를 수치 임베딩인 시각 토큰으로 바꿉니다. 패치 수가 늘면 작은 글꼴과 표, 손글씨의 세부 정보가 더 잘 보존되지만 입력 토큰과 계산량, GPU 메모리 사용량도 함께 증가합니다. 따라서 장문서 OCR은 입력 정보를 유지하면서 토큰 수를 줄이는 문제와 생성 중 메모리가 계속 커지는 문제를 동시에 해결해야 합니다.
문서 페이지를 패치로 분할하고 각 패치를 임베딩과 시각 토큰으로 변환해 Language Model에 입력하는 과정을 나타낸 도식입니다.
Diagram도식은 한 페이지가 4×6 격자의 24개 패치로 나뉘고 각 패치가 고차원 벡터로 변환된 뒤 T₁부터 Tₙ까지의 시각 토큰 시퀀스를 이루는 흐름을 보여줍니다. 본문의 입력 토큰 설명처럼 패치 수가 시각 토큰 수를 결정하므로 해상도와 OCR 세부 정보, 계산 비용 사이에 직접적인 trade-off가 생깁니다.
02
DeepSeek OCR은 문서 페이지를 시각 토큰으로 압축해 장문서 처리의 입력 측 비용을 낮췄습니다. 원문이 약 1,000개의 텍스트 토큰에 해당하는 페이지를 16배 압축하면 약 128개의 시각 토큰으로 전달할 수 있으며, 논문 기준 10배 압축에서는 약 97%의 정확도를 유지합니다. 다만 압축률을 더 높이면 정확도가 급격히 떨어지고, 제공되는 해상도 모드에 따라 세부 정보와 추론 속도 사이의 선택이 필요합니다.
SAM, Conv 다운샘플링, CLIP 기반 시각 임베딩을 거쳐 DeepSeek-3B 디코더로 연결되는 DeepSeek OCR 아키텍처입니다.
Diagram도식은 입력 문서의 n×16×16 패치가 SAM ViTDET 80M과 Conv 16x 다운샘플링을 거쳐 시각 토큰으로 압축되고, CLIP ViT 300M 임베딩 레이어와 DeepSeek-3B 디코더로 전달되는 구조를 나타냅니다. 이는 DeepSeek OCR이 문서 이미지를 그대로 처리하기보다 시각 Encoder에서 입력 토큰 수를 줄인다는 본문의 광학 압축 설명과 연결됩니다.
Native Resolution과 Dynamic Resolution 모드별 해상도, 시각 토큰 수, resize 또는 padding 처리 방식을 비교한 표입니다.
Chart표는 Tiny, Small, Base, Large 모드에서 해상도 512부터 1280까지와 토큰 수 64부터 400까지가 달라지는 모습을 보여줍니다. Dynamic Resolution의 Gundam과 Gundam-M 모드는 여러 해상도의 토큰을 결합하며 resize와 padding을 함께 사용해 입력 세부 정보와 토큰 예산을 조절합니다.
03
DeepSeek OCR로 입력 페이지를 압축해도 디코더는 긴 문서의 전사를 토큰 단위로 생성하므로 출력 측 병목이 남습니다. 기존 Transformer는 생성한 모든 토큰의 Key와 Value를 KV 캐시에 저장해 다음 토큰이 과거 문맥을 재사용하도록 하지만, 100토큰에서 1,000토큰, 10,000토큰으로 출력이 늘수록 메모리와 Attention 계산량이 계속 증가합니다. Baidu의 Unlimited-OCR은 이 누적 구조가 충분히 긴 문서에서 메모리 부족과 지연 증가를 일으킨다는 점을 핵심 문제로 삼습니다.
Query와 Key의 전치 행렬을 곱해 Attention 점수를 계산하고 Value와 다시 곱해 출력 표현을 만드는 과정을 나타낸 그림입니다.
Diagram그림은 4개의 토큰이 각각 임베딩 차원의 Query와 Key를 사용해 4×4 Attention 점수 행렬을 만들고, 이 점수로 Value를 결합하는 흐름을 보여줍니다. 본문에서 KV 캐시가 생성된 토큰의 Key와 Value를 저장하는 이유와 연결되며, 과거 토큰이 늘어날수록 Attention 계산과 메모리 부담이 커지는 구조를 시각화합니다.
04
Reference Sliding Window Attention은 문서 시각 토큰과 시스템 프롬프트로 구성된 정적 참조 영역을 계속 유지하고, 최근 생성된 출력 토큰만 약 128토큰 규모의 슬라이딩 창에 남깁니다. 오래된 출력 토큰은 창에서 밀려나지만 모든 생성 토큰은 전체 문서와 최근 출력 문맥에 접근할 수 있으므로 전사에 필요한 원문 정보가 사라지지 않습니다. 정적 영역 크기를 m, 최근 출력 영역 크기를 n이라고 하면 KV 캐시는 m+n으로 고정되어 500토큰과 30,000토큰을 생성할 때도 대체로 같은 메모리 사용량을 유지합니다.
책을 옮겨 적는 사람이 원문 전체와 최근 작성 내용에 집중하는 모습을 R-SWA의 정적 참조 영역과 최근 출력 창에 대응시킨 도식입니다.
Diagram왼쪽 그림은 사람이 원문 책을 계속 확인하면서 최근 작성 내용만 작업 기억에 유지하고 오래된 내용을 부드럽게 잊는 비유를 사용합니다. 오른쪽 구조에서는 DeepEncoder가 만든 시각 토큰과 프롬프트를 KV 캐시에 보존하고, 출력 토큰은 고정 용량 큐에서 오래된 항목을 제거하므로 생성 길이가 늘어도 메모리와 계산 비용이 계속 증가하지 않습니다.
Vanilla Attention과 R-SWA의 Attention 범위 및 KV 캐시 구성을 비교한 행렬 도식입니다.
DiagramVanilla Attention은 생성 과정에서 참조 토큰과 누적된 작업 기억을 넓게 유지하는 반면, R-SWA는 참조 영역을 고정하고 최근 출력 영역만 제한된 창으로 관리합니다. 색상으로 표시된 참조와 작업 기억, 다음 토큰 위치는 R-SWA가 문서 접근권을 보존하면서 오래된 출력 토큰을 KV 캐시에서 제외하는 방식을 보여줍니다.
05
Unlimited-OCR은 Baidu가 모델 가중치와 추론 코드를 공개했으며 Hugging Face Transformers, vLLM, SGLang 환경에서 실행할 수 있습니다. Transformers에서는 AutoModel과 AutoTokenizer를 사용하고, 여러 페이지 PDF는 페이지를 이미지로 변환한 뒤 추론하며, vLLM에서는 `vllm serve "baidu/Unlimited-OCR"` 명령으로 OpenAI 호환 API를 열 수 있습니다. 입력 광학 압축과 출력 R-SWA를 함께 적용하는 구조는 장문서 OCR을 단순한 모델 크기 확장이 아니라 정보가 메모리에 남는 방식을 제어하는 문제로 전환합니다.
bash
pip install torch torchvision transformers Pillow matplotlib einops addict easydict pymupdf psutil

Transformers 기반 Unlimited-OCR 실행에 필요한 Python 패키지를 설치합니다.

python
import torch
from transformers import AutoModel, AutoTokenizer
model_name = "baidu/Unlimited-OCR"
tokenizer = AutoTokenizer.from_pretrained(
    model_name,
    trust_remote_code=True
)
model = AutoModel.from_pretrained(
    model_name,
    trust_remote_code=True,
    use_safetensors=True,
    device_map="auto"
)

Hugging Face에서 Unlimited-OCR의 Tokenizer와 모델을 불러와 자동으로 사용 가능한 장치에 배치합니다.

python
from transformers import pipeline
pipe = pipeline(
    "image-text-to-text",
    model="baidu/Unlimited-OCR",
    trust_remote_code=True
)

Transformers의 고수준 pipeline으로 이미지 입력과 텍스트 출력을 연결합니다.

용어 해설

시각 토큰(Visual Token)
문서 이미지를 작은 패치로 나눈 뒤 각 패치를 수치 벡터로 변환한 표현입니다. Vision-Language Model은 이 벡터 시퀀스를 텍스트 토큰과 비슷한 입력으로 처리하며, 패치 수가 많을수록 세부 정보는 늘지만 계산량과 GPU 메모리 사용량도 증가합니다.
KV 캐시(KV Cache)
Transformer가 이미 생성한 토큰의 Key와 Value 표현을 저장해 다음 토큰 생성 때 전체 시퀀스를 다시 계산하지 않도록 하는 메모리 구조입니다. 긴 문서에서는 출력 토큰이 늘어날수록 캐시가 계속 커져 GPU 메모리와 Attention 계산 비용이 증가합니다.
광학 압축(Optical Compression)
문서 페이지를 텍스트로 변환하기 전에 시각 패치와 임베딩으로 압축하는 방식입니다. DeepSeek OCR은 페이지의 시각 정보를 더 적은 입력 토큰으로 전달해 처리 비용을 낮추지만, 압축률이 높아지면 세부 정보와 OCR 정확도가 함께 떨어집니다.
슬라이딩 윈도 Attention(Sliding Window Attention)
각 생성 토큰이 전체 과거 토큰 대신 최근 토큰으로 구성된 고정 크기 창에 주의를 기울이도록 제한하는 Attention 방식입니다. Unlimited-OCR은 여기에 문서 시각 토큰을 영구적으로 유지하는 Reference Sliding Window Attention을 결합해 출력 길이에 따른 KV 캐시 증가를 막습니다.
자기회귀 디코딩(Autoregressive Decoding)
모델이 앞서 생성한 토큰을 조건으로 다음 토큰을 하나씩 예측하는 생성 방식입니다. 장문서 OCR에서는 출력 토큰이 순차적으로 누적되므로 KV 캐시와 디코딩 비용이 문서 길이에 따라 증가하는 문제가 생깁니다.

기술

  • Baidu
  • Unlimited-OCR
  • DeepSeek OCR
  • Hugging Face
  • Transformers
  • vLLM
  • SGLang
  • AutoModel
  • AutoTokenizer
  • PyTorch
  • NVIDIA GPUs

활용 사례

  • 다중 페이지 문서 전사
  • PDF 문서 파싱
  • 장문서 OCR API
  • 문서 처리 파이프라인
  • RAG 파이프라인용 문서 추출
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 13.수집 2026. 08. 13.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.