Um modelo OCR eficiente baseado em compressão visual que converte imagens de documentos em formato Markdown, com suporte para múltiplas resoluções e reconhecimento de múltiplos idiomas.
Detalhes do Projeto DeepSeek-OCR
Visão Geral do Projeto
DeepSeek-OCR é um modelo inovador de reconhecimento óptico de caracteres (OCR) de código aberto, desenvolvido pela equipe DeepSeek AI, focado em explorar os limites da compressão visual de texto. Este projeto investiga o papel dos codificadores visuais a partir de uma perspectiva centrada em grandes modelos de linguagem, permitindo o processamento de documentos grandes e complexos com significativamente menos tokens, ao utilizar a percepção visual como um meio de compressão de informações.
Principais Características
- Compressão Eficiente: Alcança uma taxa de compressão de tokens de 7-20x, mantendo aproximadamente 97% de precisão de decodificação com 10x de compressão.
- Suporte a Múltiplas Resoluções: Suporta várias resoluções nativas, de 512×512 a 1280×1280.
- Processamento de Alto Desempenho: Uma única GPU A100-40G pode gerar mais de 200.000 páginas de dados de treinamento por dia.
- Suporte Multilíngue: Suporta o reconhecimento de texto em aproximadamente 100 idiomas.
- Versatilidade: Não apenas suporta a extração de texto, mas também compreende gráficos, fórmulas químicas e gráficos simples.
Arquitetura Técnica
Componentes do Modelo
DeepSeek-OCR é composto por dois componentes principais:
DeepEncoder (Codificador Visual)
- Número de parâmetros: Aproximadamente 380 milhões
- Combinação de arquiteturas:
- SAM-ViTDet (modelo de segmentação de 80 milhões de parâmetros da Meta) para percepção de imagem local.
- Compressor convolucional de 2 camadas, que realiza um downsampling de tokens de 16x.
- CLIP ViT-300M (modelo de 300 milhões de parâmetros da OpenAI) para agregação de conhecimento visual global.
Decodificador DeepSeek3B-MoE
- Parâmetros ativos: Aproximadamente 570 milhões
- Parâmetros totais: 3B (arquitetura de Modelo de Mistura de Especialistas - MoE)
- Função: Gera resultados com base em tokens de imagem e informações de prompt.
Princípio de Funcionamento
Fluxo de Processamento de Imagem:
- Uma imagem de 1024×1024 pixels inicialmente gera 4096 tokens.
- O módulo SAM realiza o processamento de atenção por janela.
- O compressor reduz os tokens para 256 (compressão de 16x).
- O módulo CLIP realiza o processamento de atenção global.
- Finalmente, são produzidos tokens visuais comprimidos.
Modos de Resolução:
Modo de Resolução Nativa:
- Tiny: 512×512 (64 tokens visuais)
- Small: 640×640 (100 tokens visuais)
- Base: 1024×1024 (256 tokens visuais)
- Large: 1280×1280 (400 tokens visuais)
Modo de Resolução Dinâmica:
- Gundam: n×640×640 + 1×1024×1024 (combina visão global e local)
Desempenho
Resultados de Testes de Referência (Benchmarks)
- Benchmark Fox: Com uma taxa de compressão de 10x, a precisão de decodificação atinge aproximadamente 97%.
- Benchmark OmniDocBench:
- Supera o GOT-OCR2.0 (256 tokens/página) usando apenas 100 tokens visuais.
- Supera o MinerU2.0 (média de mais de 6000 tokens/página) usando menos de 800 tokens visuais.
Desempenho de Treinamento e Inferência
- Velocidade de Treinamento:
- Dados de texto puro: 90B tokens por dia.
- Dados multimodais: 70B tokens por dia.
- Desempenho em Produção: Um único nó A100-40G pode processar mais de 200.000 páginas por dia.
- Desempenho de Concorrência: Processamento de PDF de aproximadamente 2500 tokens/s (A100-40G).
Cenários de Aplicação
Funções Principais
DeepSeek-OCR suporta vários modos de prompt:
# Converter documento para Markdown
prompt = "<image>\n<|grounding|>Convert the document to markdown."
# OCR Geral
prompt = "<image>\n<|grounding|>OCR this image."
# OCR Livre (sem layout)
prompt = "<image>\nFree OCR."
# Análise de figura/gráfico
prompt = "<image>\nParse the figure."
# Descrição detalhada da imagem
prompt = "<image>\nDescribe this image in detail."
# Localização de texto
prompt = "<image>\nLocate <|ref|>xxxx<|/ref|> in the image."
Aplicações Práticas
- Digitalização de Documentos: Processamento eficiente de documentos como artigos acadêmicos, livros, relatórios, etc.
- Geração de Conjuntos de Dados: Geração de grandes volumes de dados de treinamento para grandes modelos de linguagem e modelos de linguagem visual.
- Compressão de Contexto para Chatbots: Armazenamento de registros de conversas antigas com resolução reduzida (semelhante à deterioração da memória humana).
- Extração de Dados Estruturados:
- Conversão de gráficos financeiros em dados estruturados.
- Geração automática de tabelas e gráficos Markdown.
- Suporte ao reconhecimento de fórmulas químicas (formato SMILES).
Instalação e Uso
Requisitos de Ambiente
- Python 3.12.9
- CUDA 11.8
- PyTorch 2.6.0
- Transformers 4.46.3
Passos de Instalação
# Clonar o repositório
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
cd DeepSeek-OCR
# Criar ambiente Conda
conda create -n deepseek-ocr python=3.12.9 -y
conda activate deepseek-ocr
# Instalar dependências
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
Exemplos de Uso
Método Um: 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 inferência
prompt = "<image>\n<|grounding|>Convert the document to markdown."
image_file = 'your_image.jpg'
output_path = 'your/output/dir'
# Executar inferência
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 Dois: Usando vLLM (Inferência de Alto Desempenho)
# Modificar arquivo de configuração
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm
# Editar config.py para definir INPUT_PATH/OUTPUT_PATH
# Executar OCR de imagem (saída em stream)
python run_dpsk_ocr_image.py
# Executar OCR de PDF (alta concorrência)
python run_dpsk_ocr_pdf.py
# Avaliação em lote
python run_dpsk_ocr_eval_batch.py
Inovações Tecnológicas
Paradigma de Compressão Visual de Texto
DeepSeek-OCR propõe um novo paradigma de compressão visual de texto:
- Ideia Central: Converter texto em imagem e processá-lo através de um codificador visual, deixando de armazenar a semântica na forma de tokens de texto.
- Vantagens:
- Menor consumo de memória: Tokens visuais são mais compactos.
- Maior velocidade de inferência: Menos tokens = Menos volume de cálculo.
- Mecanismo de esquecimento natural: Contextos antigos podem ser subamostrados (downsampled).
- Fusão multimodal mais fácil: O modelo já trata o texto como imagem.
Diferença em Relação ao OCR Tradicional
O OCR tradicional adota uma arquitetura em pipeline (detecção → reconhecimento → pós-processamento), enquanto o DeepSeek-OCR emprega uma arquitetura de modelo de linguagem visual de ponta a ponta, simplificando fundamentalmente o sistema OCR.
Links de Recursos
- Repositório GitHub: https://github.com/deepseek-ai/DeepSeek-OCR
- Modelo Hugging Face: https://huggingface.co/deepseek-ai/DeepSeek-OCR
- Artigo Técnico: DeepSeek_OCR_paper.pdf
- Licença: MIT License
Agradecimentos
O projeto DeepSeek-OCR agradece as contribuições dos seguintes projetos de código aberto:
- Vary
- GOT-OCR2.0
- MinerU
- PaddleOCR
- OneChart
- Slow Perception
E os conjuntos de dados de benchmark: Fox e OmniDocBench.
Resumo
DeepSeek-OCR representa uma inovação significativa na tecnologia OCR, abordando os desafios do processamento de contexto longo em grandes modelos de linguagem através do paradigma de compressão visual. Sua capacidade eficiente de compressão de tokens (7-20x), excelente precisão (97% de acurácia com 10x de compressão) e poderosa capacidade de processamento (200.000 páginas processadas por dia em uma única GPU) o tornam uma escolha ideal para digitalização de documentos, geração de dados de treinamento de IA e aplicações multimodais.
A natureza de código aberto do projeto e sua documentação completa facilitam a integração em diversos cenários de aplicação, fornecendo a pesquisadores e desenvolvedores uma ferramenta poderosa para explorar os limites da compressão visual de texto.