Un modelo OCR eficiente basado en compresión visual que convierte imágenes de documentos a formato Markdown, compatible con múltiples resoluciones e identificación de múltiples idiomas.

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

Introducción Detallada al Proyecto DeepSeek-OCR

Resumen del Proyecto

DeepSeek-OCR es un innovador modelo de reconocimiento óptico de caracteres de código abierto desarrollado por el equipo de DeepSeek AI, centrado en explorar los límites de la compresión visual de texto. Este proyecto investiga el papel de los codificadores visuales desde una perspectiva centrada en los grandes modelos de lenguaje, utilizando la percepción visual como un medio de compresión de información, lo que permite procesar documentos grandes y complejos con significativamente menos tokens.

Características Principales

  • Compresión Eficiente: Logra una tasa de compresión de tokens de 7 a 20 veces, manteniendo una precisión de decodificación de aproximadamente el 97% con una compresión de 10 veces.
  • Soporte Multirresolución: Admite múltiples resoluciones nativas, desde 512×512 hasta 1280×1280.
  • Procesamiento de Alto Rendimiento: Una sola GPU A100-40G puede generar más de 200.000 páginas de datos de entrenamiento al día.
  • Soporte Multilingüe: Admite el reconocimiento de texto en aproximadamente 100 idiomas.
  • Versatilidad: No solo admite la extracción de texto, sino que también puede comprender gráficos, fórmulas químicas y gráficos simples.

Arquitectura Técnica

Composición del Modelo

DeepSeek-OCR consta de dos componentes principales:

  1. DeepEncoder (Codificador Visual)

    • Número de parámetros: Aproximadamente 380 millones
    • Combinación de arquitectura:
      • SAM-ViTDet (modelo de segmentación de 80 millones de parámetros de Meta) para la percepción de imágenes locales.
      • Compresor convolucional de 2 capas, que logra un submuestreo de tokens de 16×.
      • CLIP ViT-300M (modelo de 300 millones de parámetros de OpenAI) para la agregación de conocimiento visual global.
  2. Decodificador DeepSeek3B-MoE

    • Parámetros activos: Aproximadamente 570 millones
    • Parámetros totales: 3B (arquitectura de modelo de mezcla de expertos)
    • Función: Genera resultados basados en tokens de imagen e información de indicaciones (prompts).

Principio de Funcionamiento

  1. Flujo de Procesamiento de Imágenes:

    • Una imagen de 1024×1024 píxeles produce inicialmente 4096 tokens.
    • El módulo SAM realiza el procesamiento de atención por ventana.
    • El compresor reduce los tokens a 256 (compresión de 16×).
    • El módulo CLIP realiza el procesamiento de atención global.
    • Finalmente, se emiten los tokens visuales comprimidos.
  2. Modos de Resolución:

    • Modo de Resolución Nativa:

      • Tiny: 512×512 (64 tokens visuales)
      • Small: 640×640 (100 tokens visuales)
      • Base: 1024×1024 (256 tokens visuales)
      • Large: 1280×1280 (400 tokens visuales)
    • Modo de Resolución Dinámica:

      • Gundam: n×640×640 + 1×1024×1024 (combina visión global y local)

Rendimiento

Resultados de Pruebas de Referencia (Benchmarks)

  • Prueba de Referencia Fox: Con una tasa de compresión de 10 veces, la precisión de decodificación alcanza aproximadamente el 97%.
  • Prueba de Referencia OmniDocBench:
    • Utilizando solo 100 tokens visuales, supera a GOT-OCR2.0 (256 tokens/página).
    • Utilizando menos de 800 tokens visuales, supera a MinerU2.0 (más de 6000 tokens/página en promedio).

Rendimiento de Entrenamiento e Inferencia

  • Velocidad de Entrenamiento:
    • Datos de texto puro: 90B tokens al día
    • Datos multimodales: 70B tokens al día
  • Rendimiento de Producción: Un solo nodo A100-40G puede procesar más de 200.000 páginas al día.
  • Rendimiento Concurrente: Procesamiento de PDF de aproximadamente 2500 tokens/s (A100-40G).

Escenarios de Aplicación

Funciones Principales

DeepSeek-OCR admite múltiples modos de indicaciones (prompts):

# Convertir documento a Markdown
prompt = "<image>\n<|grounding|>Convert the document to markdown."

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

# OCR Libre (sin diseño)
prompt = "<image>\nFree OCR."

# Análisis de gráficos
prompt = "<image>\nParse the figure."

# Descripción detallada de la imagen
prompt = "<image>\nDescribe this image in detail."

# Localización de texto
prompt = "<image>\nLocate <|ref|>xxxx<|/ref|> in the image."

Aplicaciones Prácticas

  1. Digitalización de Documentos: Procesamiento eficiente de documentos como artículos académicos, libros, informes, etc.
  2. Generación de Conjuntos de Datos: Generación de grandes volúmenes de datos de entrenamiento para grandes modelos de lenguaje y modelos de lenguaje visual.
  3. Compresión de Contexto para Chatbots: Almacenamiento de registros de conversaciones antiguas con menor resolución (similar al deterioro de la memoria humana).
  4. Extracción de Datos Estructurados:
    • Conversión de gráficos financieros a datos estructurados.
    • Generación automática de tablas y gráficos en Markdown.
    • Soporte para el reconocimiento de fórmulas químicas (formato SMILES).

Instalación y Uso

Requisitos del Entorno

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

Pasos de Instalación

# Clonar el repositorio
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
cd DeepSeek-OCR

# Crear entorno Conda
conda create -n deepseek-ocr python=3.12.9 -y
conda activate deepseek-ocr

# Instalar dependencias
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

Ejemplos de Uso

Método Uno: Usando 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)

# Configurar parámetros de inferencia
prompt = "<image>\n<|grounding|>Convert the document to markdown."
image_file = 'your_image.jpg'
output_path = 'your/output/dir'

# Ejecutar inferencia
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
)

Método Dos: Usando vLLM (Inferencia de Alto Rendimiento)

# Modificar el archivo de configuración
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm
# Editar config.py para establecer INPUT_PATH/OUTPUT_PATH

# Ejecutar OCR de imagen (salida en streaming)
python run_dpsk_ocr_image.py

# Ejecutar OCR de PDF (alta concurrencia)
python run_dpsk_ocr_pdf.py

# Evaluación por lotes
python run_dpsk_ocr_eval_batch.py

Innovación Tecnológica

Paradigma de Compresión Visual de Texto

DeepSeek-OCR propone un nuevo paradigma de compresión visual de texto:

  • Idea Central: Convertir texto en imagen y procesarlo a través de un codificador visual, dejando de almacenar la semántica en forma de tokens de texto.
  • Ventajas:
    • Menor uso de memoria: Los tokens visuales son más compactos.
    • Mayor velocidad de inferencia: Menos tokens = menos cálculos.
    • Mecanismo de olvido natural: El contexto antiguo puede ser submuestreado.
    • Fusión multimodal más sencilla: El modelo ya considera el texto como imagen.

Diferencia con el OCR Tradicional

El OCR tradicional emplea una arquitectura de tubería (detección → reconocimiento → postprocesamiento), mientras que DeepSeek-OCR utiliza una arquitectura de modelo de lenguaje visual de extremo a extremo, lo que simplifica fundamentalmente el sistema OCR.

Enlaces de Recursos

Agradecimientos

El proyecto DeepSeek-OCR agradece las contribuciones de los siguientes proyectos de código abierto:

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

Así como los conjuntos de datos de referencia: Fox y OmniDocBench.

Resumen

DeepSeek-OCR representa una innovación significativa en la tecnología OCR, abordando los desafíos del procesamiento de contextos largos en grandes modelos de lenguaje a través de un paradigma de compresión visual. Su eficiente capacidad de compresión de tokens (7-20 veces), excelente precisión (97% de precisión con 10 veces de compresión) y potente capacidad de procesamiento (200.000 páginas procesadas al día por una sola GPU) lo convierten en una opción ideal para la digitalización de documentos, la generación de datos de entrenamiento de IA y aplicaciones multimodales.

La naturaleza de código abierto del proyecto y su documentación completa facilitan su integración en diversos escenarios de aplicación, proporcionando a investigadores y desarrolladores una potente herramienta para explorar los límites de la compresión visual de texto.

Star History Chart