DeepSeek-OCR: DeepSeek AI가 공개한 LLM 중심의 통합형 광학 문자 인식(OCR) 모델

DeepSeek-OCR 소개

DeepSeek-OCR은 딥러닝 연구 그룹 DeepSeek AI가 공개한 새로운 OCR(Optical Character Recognition, 광학 문자 인식) 모델로, 기존의 OCR 기술과 달리 대형 언어 모델(LLM) 관점에서 시각 인코더(vision encoder)의 역할을 탐구하기 위해 개발된 점이 가장 큰 특징입니다.

2025년 10월에 첫 릴리스된 이 모델은 단순히 이미지를 텍스트로 변환하는 수준을 넘어서, 시각 정보와 언어적 의미를 효율적으로 결합하는 데 초점을 맞추고 있습니다. 이는 LLM이 이미지의 문맥을 이해하고 구조화된 형태(예: Markdown, LaTeX 등)로 결과를 생성하도록 설계된 새로운 접근법입니다.

DeepSeek-OCR은 이미지, 문서, PDF 등 다양한 입력 형태를 처리할 수 있으며, 시각적-텍스트 압축(Contexts Optical Compression) 이라는 새로운 개념을 중심으로 개발되었습니다. 이 모델은 GPU 메모리 효율을 높이면서도, 시각적 정보의 의미를 최대한 보존하기 위해 토큰 기반 비전 인코딩 기법을 사용합니다. 특히, 시각 토큰을 ‘동적 해상도(Dynamic Resolution)’ 방식으로 관리하여, 이미지의 세부 정보를 효율적으로 다룰 수 있습니다.

OCR 분야는 전통적으로 Tesseract, PaddleOCR, EasyOCR 등 규칙 기반 또는 CNN 기반 모델들이 주도해왔지만, DeepSeek-OCR은 LLM 중심의 통합형 비전-언어 모델(Vision-Language Model) 로서 새로운 패러다임을 제시하고 있습니다. 즉, 단순한 문자 추출이 아니라, 문서의 레이아웃, 구조, 의미를 함께 이해하는 지능형 OCR 모델이라 할 수 있습니다.

기존 OCR 기술과의 비교

기존의 OCR 시스템은 대부분 텍스트 검출(detection)인식(recognition)후처리(post-processing) 단계를 거치는 파이프라인 형태로 구성되어 있습니다. 이러한 방식은 빠르고 효율적이지만, 문서의 레이아웃 구조나 의미론적 관계를 보존하기 어렵다는 단점이 있습니다.

반면 DeepSeek-OCR은 Transformer 기반의 통합 인코더-디코더 구조를 채택하여, 이미지 내의 텍스트와 비시각적 요소(도표, 수식, 제목 등)를 함께 학습합니다. 이를 통해 “문서를 마크다운 형태로 변환”하거나, “그림의 내용을 자세히 설명”하는 등 고차원적 문맥 이해가 가능합니다.

또한, DeepSeek-OCR은 GOT-OCR 2.0, MinerU, PaddleOCR, OneChart 등의 기존 모델로부터 아이디어를 발전시켜, 보다 효율적인 시각 토큰 압축과 추론 속도를 달성했습니다.

특히 vLLM 프레임워크를 기반으로 한 추론은 A100 GPU 기준 초당 약 2,500 토큰 처리 속도를 기록하며, 대규모 문서 OCR 작업에도 적합합니다.

DeepSeek-OCR 설치

아래 설치 및 초기 설정은 CUDA 11.8 및 PyTorch 2.6.0 환경을 기준으로 진행되었습니다. 먼저, DeepSeek-OCR 저장소를 복제합니다:

# 저장소 복제
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
cd DeepSeek-OCR

이후, 가상 환경을 생성합니다. 여기에서는 conda를 사용합니다:

conda create -n deepseek-ocr python=3.12.9 -y
conda activate deepseek-ocr

가상 환경에서 vllm 0.85( whl)를 비롯하여 필요 패키지들을 설치합니다:

pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
pip install vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
pip install -r requirements.txt
pip install flash-attn==2.7.3 --no-build-isolation

설치 후에는 vLLM과 Hugging Face Transformers 환경을 동시에 사용할 수 있으며, 최신 버전의 transformers (4.51.1 이상)가 필요합니다.

DeepSeek-OCR 사용법

vLLM 기반 추론

vLLM 환경에서 OCR 추론을 수행하려면, DeepSeek-OCR-vllm/config.py 파일을 열어 적절히 설정을 수정한 후 아래 명령어를 실행합니다:

python run_dpsk_ocr_image.py       # 이미지 OCR
python run_dpsk_ocr_pdf.py         # PDF OCR (A100-40G 기준 2500 tokens/s)
python run_dpsk_ocr_eval_batch.py  # 벤치마크 배치 평가

이 접근법은 고성능 GPU를 활용한 스트리밍 출력을 지원하며, 대규모 문서 변환 작업에 적합합니다.

Transformers 기반 추론

아래와 같은 방식으로 Hugging Face Transformers를 통해서도 간단히 추론이 가능합니다:

from transformers import AutoModel, AutoTokenizer
import torch, os

os.environ["CUDA_VISIBLE_DEVICES"] = '0'
model_name = 'deepseek-ai/DeepSeek-OCR'

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(model_name, _attn_implementation='flash_attention_2', trust_remote_code=True, use_safetensors=True)
model = model.eval().cuda().to(torch.bfloat16)

prompt = "<image>\n<|grounding|>Convert the document to markdown."
image_file = 'your_image.jpg'
output_path = 'your/output/dir'

res = model.infer(
    tokenizer, prompt=prompt, image_file=image_file,
    output_path=output_path, base_size=1024, image_size=640,
    crop_mode=True, save_results=True, test_compress=True
)

이 방식은 이미지 내 문서를 마크다운 형식으로 변환하거나, 이미지의 내용 설명, 객체 위치 인식 등 다양한 태스크를 수행할 수 있습니다. 예시 코드는 DeepSeek-OCR-hf/run_dpsk_ocr.py을 참고해주세요.

지원 모드 및 시각 인코딩 해상도

DeepSeek-OCR은 아래와 같은 다중 해상도 비전 토큰 입력 모드를 지원합니다:

  • Tiny: 512×512 (64 vision tokens)
  • Small: 640×640 (100 vision tokens)
  • Base: 1024×1024 (256 vision tokens)
  • Large: 1280×1280 (400 vision tokens)
  • Gundam (Dynamic Resolution): n×640×640 + 1×1024×1024

이러한 구조는 입력 이미지의 크기와 복잡도에 따라 동적으로 토큰을 조정함으로써, 효율성과 정확도를 모두 향상시킵니다.

프롬프트 예시

DeepSeek-OCR은 명시적인 프롬프트를 사용하여 다양한 OCR 태스크를 수행할 수 있습니다.

# 문서 전체를 Markdown으로 변환
<image>\n<|grounding|>Convert the document to markdown.

# 단순 OCR
<image>\nFree OCR.

# 이미지 설명
<image>\nDescribe this image in detail.

# 특정 텍스트 위치 인식
<image>\nLocate <|ref|>title<|/ref|> in the image.

이처럼 LLM 기반 프롬프트 구조를 지원함으로써, 사용자는 단순 인식 이상의 문맥 이해 기반 문서 분석을 수행할 수 있습니다.

:github: DeepSeek-OCR 프로젝트 GitHub 저장소

:hugs: DeepSeek-OCR 모델 다운로드

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: