시각적 압축을 기반으로 한 효율적인 OCR 모델로, 문서 이미지를 Markdown 형식으로 변환하며, 다양한 해상도와 다국어 인식을 지원합니다.
DeepSeek-OCR 프로젝트 상세 소개
프로젝트 개요
DeepSeek-OCR은 DeepSeek AI 팀이 개발한 혁신적인 오픈소스 광학 문자 인식(OCR) 모델로, 시각적 텍스트 압축의 한계를 탐구하는 데 중점을 둡니다. 이 프로젝트는 대규모 언어 모델(LLM) 중심의 관점에서 시각적 인코더의 역할을 연구하며, 시각적 인식을 정보 압축 매개체로 활용하여 훨씬 적은 토큰으로 크고 복잡한 문서를 처리할 수 있게 합니다.
핵심 특징
- 효율적인 압축: 7-20배의 토큰 압축률을 달성하며, 10배 압축 시 약 97%의 디코딩 정확도를 유지합니다.
- 다중 해상도 지원: 512×512부터 1280×1280까지 다양한 기본 해상도를 지원합니다.
- 고성능 처리: 단일 A100-40G GPU로 하루 20만 페이지 이상의 훈련 데이터를 생성할 수 있습니다.
- 다국어 지원: 약 100개 언어의 텍스트 인식을 지원합니다.
- 다기능성: 텍스트 추출뿐만 아니라 차트, 화학 분자식, 간단한 그래픽도 이해할 수 있습니다.
기술 아키텍처
모델 구성
DeepSeek-OCR은 두 가지 핵심 구성 요소로 이루어져 있습니다:
DeepEncoder (시각적 인코더)
- 매개변수 수: 약 3억 8천만 개
- 아키텍처 조합:
- SAM-ViTDet (Meta의 8천만 매개변수 분할 모델)을 사용하여 로컬 이미지 인식
- 16배 토큰 다운샘플링을 위한 2계층 컨볼루션 압축기
- CLIP ViT-300M (OpenAI의 3억 매개변수 모델)을 사용하여 전역 시각적 지식 집약
DeepSeek3B-MoE 디코더
- 활성 매개변수: 약 5억 7천만 개
- 총 매개변수: 3B (혼합 전문가(MoE) 모델 아키텍처)
- 기능: 이미지 토큰과 프롬프트 정보를 기반으로 결과 생성
작동 원리
이미지 처리 흐름:
- 1024×1024 픽셀 이미지는 초기 4096개의 토큰을 생성합니다.
- SAM 모듈이 윈도우 어텐션 처리를 수행합니다.
- 압축기가 토큰을 256개로 줄입니다 (16배 압축).
- CLIP 모듈이 전역 어텐션 처리를 수행합니다.
- 최종적으로 압축된 시각적 토큰을 출력합니다.
해상도 모드:
기본 해상도 모드:
- 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."
실제 응용
- 문서 디지털화: 학술 논문, 서적, 보고서 등 문서의 효율적인 처리
- 데이터셋 생성: 대규모 언어 모델 및 시각 언어 모델을 위한 방대한 훈련 데이터 생성
- 챗봇 컨텍스트 압축: 해상도를 낮춰 오래된 대화 기록 저장 (인간 기억 감퇴와 유사)
- 구조화된 데이터 추출:
- 재무 차트를 구조화된 데이터로 변환
- 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 시스템을 근본적으로 단순화합니다.
자료 링크
- GitHub 저장소: https://github.com/deepseek-ai/DeepSeek-OCR
- Hugging Face 모델: https://huggingface.co/deepseek-ai/DeepSeek-OCR
- 기술 논문: DeepSeek_OCR_paper.pdf
- 라이선스: MIT License
감사
DeepSeek-OCR 프로젝트는 다음 오픈소스 프로젝트의 기여에 감사드립니다:
- Vary
- GOT-OCR2.0
- MinerU
- PaddleOCR
- OneChart
- Slow Perception
그리고 벤치마크 데이터셋: Fox 및 OmniDocBench.
요약
DeepSeek-OCR은 시각적 압축 패러다임을 통해 대규모 언어 모델의 긴 컨텍스트 처리 문제를 해결하며 OCR 기술의 중요한 혁신을 대표합니다. 효율적인 토큰 압축 능력 (7-20배), 뛰어난 정확도 (10배 압축 시 97% 정확도), 강력한 처리 능력 (단일 GPU로 하루 20만 페이지 처리)은 문서 디지털화, AI 훈련 데이터 생성 및 멀티모달 응용 분야에 이상적인 선택이 됩니다.
이 프로젝트의 오픈소스 특성과 완벽한 문서는 다양한 응용 시나리오에 쉽게 통합될 수 있도록 하며, 연구원과 개발자에게 시각적 텍스트 압축의 한계를 탐구할 강력한 도구를 제공합니다.