시각적 압축을 기반으로 한 효율적인 OCR 모델로, 문서 이미지를 Markdown 형식으로 변환하며, 다양한 해상도와 다국어 인식을 지원합니다.

MITPythonDeepSeek-OCRdeepseek-ai 17.7k Last Updated: October 25, 2025

DeepSeek-OCR 프로젝트 상세 소개

프로젝트 개요

DeepSeek-OCR은 DeepSeek AI 팀이 개발한 혁신적인 오픈소스 광학 문자 인식(OCR) 모델로, 시각적 텍스트 압축의 한계를 탐구하는 데 중점을 둡니다. 이 프로젝트는 대규모 언어 모델(LLM) 중심의 관점에서 시각적 인코더의 역할을 연구하며, 시각적 인식을 정보 압축 매개체로 활용하여 훨씬 적은 토큰으로 크고 복잡한 문서를 처리할 수 있게 합니다.

핵심 특징

  • 효율적인 압축: 7-20배의 토큰 압축률을 달성하며, 10배 압축 시 약 97%의 디코딩 정확도를 유지합니다.
  • 다중 해상도 지원: 512×512부터 1280×1280까지 다양한 기본 해상도를 지원합니다.
  • 고성능 처리: 단일 A100-40G GPU로 하루 20만 페이지 이상의 훈련 데이터를 생성할 수 있습니다.
  • 다국어 지원: 약 100개 언어의 텍스트 인식을 지원합니다.
  • 다기능성: 텍스트 추출뿐만 아니라 차트, 화학 분자식, 간단한 그래픽도 이해할 수 있습니다.

기술 아키텍처

모델 구성

DeepSeek-OCR은 두 가지 핵심 구성 요소로 이루어져 있습니다:

  1. DeepEncoder (시각적 인코더)

    • 매개변수 수: 약 3억 8천만 개
    • 아키텍처 조합:
      • SAM-ViTDet (Meta의 8천만 매개변수 분할 모델)을 사용하여 로컬 이미지 인식
      • 16배 토큰 다운샘플링을 위한 2계층 컨볼루션 압축기
      • CLIP ViT-300M (OpenAI의 3억 매개변수 모델)을 사용하여 전역 시각적 지식 집약
  2. DeepSeek3B-MoE 디코더

    • 활성 매개변수: 약 5억 7천만 개
    • 총 매개변수: 3B (혼합 전문가(MoE) 모델 아키텍처)
    • 기능: 이미지 토큰과 프롬프트 정보를 기반으로 결과 생성

작동 원리

  1. 이미지 처리 흐름:

    • 1024×1024 픽셀 이미지는 초기 4096개의 토큰을 생성합니다.
    • SAM 모듈이 윈도우 어텐션 처리를 수행합니다.
    • 압축기가 토큰을 256개로 줄입니다 (16배 압축).
    • CLIP 모듈이 전역 어텐션 처리를 수행합니다.
    • 최종적으로 압축된 시각적 토큰을 출력합니다.
  2. 해상도 모드:

    • 기본 해상도 모드:

      • Tiny: 512×512 (64 시각적 토큰)
      • Small: 640×640 (100 시각적 토큰)
      • Base: 1024×1024 (256 시각적 토큰)
      • Large: 1280×1280 (400 시각적 토큰)
    • 동적 해상도 모드:

      • Gundam: n×640×640 + 1×1024×1024 (전역 및 로컬 시야 결합)

성능

벤치마크 테스트 결과

  • Fox 벤치마크: 10배 압축률에서 약 97%의 디코딩 정확도 달성
  • OmniDocBench 벤치마크:
    • 단 100개의 시각적 토큰만으로 GOT-OCR2.0 (페이지당 256 토큰)을 능가
    • 800개 미만의 시각적 토큰으로 MinerU2.0 (페이지당 평균 6000개 이상의 토큰)을 능가

훈련 및 추론 성능

  • 훈련 속도:
    • 순수 텍스트 데이터: 하루 90B 토큰
    • 멀티모달 데이터: 하루 70B 토큰
  • 생산 성능: 단일 A100-40G 노드에서 하루 20만 페이지 이상 처리 가능
  • 동시 처리 성능: PDF 처리 약 2500 토큰/초 (A100-40G)

응용 시나리오

주요 기능

DeepSeek-OCR은 다양한 프롬프트 모드를 지원합니다:

# 문서 Markdown 변환
prompt = "<image>\n<|grounding|>Convert the document to markdown."

# 일반 OCR
prompt = "<image>\n<|grounding|>OCR this image."

# 자유 OCR (레이아웃 없음)
prompt = "<image>\nFree OCR."

# 차트 분석
prompt = "<image>\nParse the figure."

# 상세 이미지 설명
prompt = "<image>\nDescribe this image in detail."

# 텍스트 위치 파악
prompt = "<image>\nLocate <|ref|>xxxx<|/ref|> in the image."

실제 응용

  1. 문서 디지털화: 학술 논문, 서적, 보고서 등 문서의 효율적인 처리
  2. 데이터셋 생성: 대규모 언어 모델 및 시각 언어 모델을 위한 방대한 훈련 데이터 생성
  3. 챗봇 컨텍스트 압축: 해상도를 낮춰 오래된 대화 기록 저장 (인간 기억 감퇴와 유사)
  4. 구조화된 데이터 추출:
    • 재무 차트를 구조화된 데이터로 변환
    • Markdown 테이블 및 그래픽 자동 생성
    • 화학 분자식 (SMILES 형식) 인식 지원

설치 및 사용

환경 요구사항

  • Python 3.12.9
  • CUDA 11.8
  • PyTorch 2.6.0
  • Transformers 4.46.3

설치 단계

# 저장소 복제
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

# 의존성 설치
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

사용 예시

방법 1: Transformers 사용

from transformers import AutoModel, AutoTokenizer
import torch
import 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
)

방법 2: vLLM 사용 (고성능 추론)

# 설정 파일 수정
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm
# config.py를 편집하여 INPUT_PATH/OUTPUT_PATH 설정

# 이미지 OCR 실행 (스트리밍 출력)
python run_dpsk_ocr_image.py

# PDF OCR 실행 (고동시성)
python run_dpsk_ocr_pdf.py

# 배치 평가
python run_dpsk_ocr_eval_batch.py

기술 혁신

시각적 텍스트 압축 패러다임

DeepSeek-OCR은 새로운 시각적 텍스트 압축 패러다임을 제시합니다:

  • 핵심 아이디어: 텍스트를 이미지로 변환하고 시각적 인코더를 통해 처리하며, 더 이상 텍스트 토큰 형태로 의미를 저장하지 않습니다.
  • 장점:
    • 더 적은 메모리 사용: 시각적 토큰이 더 압축적입니다.
    • 더 빠른 추론 속도: 토큰 수가 적을수록 계산량이 줄어듭니다.
    • 자연스러운 망각 메커니즘: 오래된 컨텍스트는 다운샘플링될 수 있습니다.
    • 더 쉬운 멀티모달 융합: 모델이 이미 텍스트를 이미지로 간주합니다.

기존 OCR과의 차이점

기존 OCR은 파이프라인 아키텍처(감지 → 인식 → 후처리)를 채택하는 반면, DeepSeek-OCR은 엔드투엔드 시각 언어 모델 아키텍처를 사용하여 OCR 시스템을 근본적으로 단순화합니다.

자료 링크

감사

DeepSeek-OCR 프로젝트는 다음 오픈소스 프로젝트의 기여에 감사드립니다:

  • Vary
  • GOT-OCR2.0
  • MinerU
  • PaddleOCR
  • OneChart
  • Slow Perception

그리고 벤치마크 데이터셋: Fox 및 OmniDocBench.

요약

DeepSeek-OCR은 시각적 압축 패러다임을 통해 대규모 언어 모델의 긴 컨텍스트 처리 문제를 해결하며 OCR 기술의 중요한 혁신을 대표합니다. 효율적인 토큰 압축 능력 (7-20배), 뛰어난 정확도 (10배 압축 시 97% 정확도), 강력한 처리 능력 (단일 GPU로 하루 20만 페이지 처리)은 문서 디지털화, AI 훈련 데이터 생성 및 멀티모달 응용 분야에 이상적인 선택이 됩니다.

이 프로젝트의 오픈소스 특성과 완벽한 문서는 다양한 응용 시나리오에 쉽게 통합될 수 있도록 하며, 연구원과 개발자에게 시각적 텍스트 압축의 한계를 탐구할 강력한 도구를 제공합니다.

Star History Chart