DeepSeek-OCR localmente: ler seus PDFs escaneados
DeepSeek-OCR é um modelo de visão com cerca de 3 bilhões de parâmetros, publicado sob a licença MIT, projetado para transformar a imagem de uma página em texto estruturado, incluindo Markdown. Este guia mostra como executar o deepseek ocr localmente com Ollama: qual versão do runtime usar, quanta memória reservar, como dividir um PDF digitalizado em páginas e obter um Markdown aproveitável por um RAG. Ele termina com os casos em que uma ferramenta mais simples funciona melhor.
#Por que DeepSeek-OCR em vez de um OCR clássico
Um PDF digitalizado não contém texto, apenas imagens de texto. Um mecanismo clássico de OCR, como o Tesseract, extrai linhas brutas: não sabe que um bloco é um título, quebra as tabelas e perde a ordem de leitura de uma página com duas colunas. DeepSeek-OCR aborda o problema de outra forma. É um modelo de visão e linguagem: ele observa a página inteira e gera diretamente Markdown com seus títulos, listas, tabelas e fórmulas.
O modelo foi publicado por DeepSeek no outono de 2025 com um artigo intitulado « Contexts Optical Compression ». A ideia central é representar uma página por um pequeno número de tokens visuais, entre 64 e 400 conforme o modo de resolução, em vez dos milhares de tokens de texto que ela conteria. A editora anuncia uma precisão de decodificação de aproximadamente 97% quando a taxa de compressão permanece abaixo de dez. Esse é o número dela, medido em seus próprios conjuntos de dados, não o nosso: o mais importante é que o modelo é leve e rápido para o que faz.
Para uso local, três coisas importam. O modelo cabe em uma placa de vídeo de entrada. Ele gera Markdown que pode ser indexado diretamente em uma cadeia de RAG. E está disponível na biblioteca Ollama, o que evita instalar PyTorch, Flash Attention e vLLM, como exige o repositório oficial. As especificações completas estão na ficha do modelo: https://quelllm.fr/modele/deepseek-ocr
#Pré-requisitos e memória a considerar
Seus documentos, sua IA: um RAG local confiável para seus PDFs, notas e e-mails — sem enviar nada para a nuvem.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
A página do modelo no site fornece as referências de VRAM por precisão: aproximadamente 2 GB em Q4, 4 GB em Q8 e 6 GB em FP16, para um contexto de 8 192 tokens. O peso real a ser baixado depende do que Ollama empacotou na tag; a página de tags da biblioteca exibe o tamanho do arquivo, e é ela que vale. Além disso, considere a memória do contexto: uma página densa convertida em Markdown pode produzir vários milhares de tokens de saída.
- GPU NVIDIA
- Qualquer placa de 8 GB ou mais oferece uma margem confortável. Uma RTX 3060 de 12 GB ou uma RTX 4070 de 12 GB executam o modelo em FP16 com margem para o contexto.
- Mac Apple Silicon
- Ollama usa memória unificada. Um Mac com 16 GB é suficiente apenas para o modelo; reserve 24 GB se quiser manter um modelo de chat carregado ao lado para o RAG.
- Sem GPU
- É possível, mas a codificação da imagem e a geração do Markdown são feitas pelo processador. Para algumas páginas, é tolerável; para um lote de cem páginas, espere minutos por página, dependendo da máquina.
- Software
- Ollama atualizado, poppler-utils para dividir PDFs e Python 3 com a biblioteca ollama se você quiser automatizar o processamento em lote.
#Etapa 1: verificar Ollama e obter a tag correta
DeepSeek-OCR chegou à biblioteca Ollama no fim de 2025, após o lançamento do modelo. Ele se baseia em um codificador visual específico, DeepEncoder, que combina um módulo de janelas locais e um módulo de atenção global. Ollama precisou adicionar suporte a essa arquitetura em seu mecanismo: um runtime anterior baixa os pesos, mas se recusa a carregá-los, com uma mensagem indicando que o modelo exige uma versão mais recente. A página da biblioteca exibe a versão mínima exigida quando aplicável.
O comando show é a única fonte confiável para saber o que você acabou de baixar: ele informa a família do modelo, o número de parâmetros, o comprimento do contexto e o nível de quantização. Se a tag latest e a tag 3b apontarem para o mesmo digest, não importa qual você use; o guia emprega 3b para permanecer explícito.
#Etapa 2: preparar as páginas do PDF
Ollama não abre PDFs. Ele aceita imagens, PNG ou JPEG, uma por solicitação. Portanto, a primeira operação consiste em rasterizar o documento, página por página. A ferramenta mais simples é o pdftoppm, fornecido com o poppler-utils, disponível em todas as distribuições Linux e via Homebrew no macOS.
A resolução merece um minuto de reflexão. DeepSeek-OCR trabalha com resoluções fixas: 512, 640, 1024 ou 1280 pixels de lado, dependendo do modo, além de um modo dinâmico chamado Gundam, que divide a página em blocos de 640 pixels ao redor de uma visão global de 1024. Uma página A4 rasterizada a 200 pontos por polegada mede aproximadamente 1 650 por 2 340 pixels; Ollama redimensiona a página antes de enviá-la ao codificador. Aumentar para 300 pontos por polegada não traz nenhum benefício ao modelo e aumenta desnecessariamente os arquivos. Reduzir para 100 faz os caracteres pequenos das notas de rodapé desaparecerem antes mesmo que o modelo os veja.
Se o scan estiver torto ou com muito contraste, o modelo geralmente se sai melhor do que um OCR linha a linha, mas um endireitamento prévio continua sendo benéfico. O guia do Tesseract no site detalha os pré-processamentos úteis, que também se aplicam aqui: https://quelllm.fr/guide/tesseract-ocr-guide-local
#Etapa 3: obter Markdown com deepseek ocr
O repositório oficial documenta várias instruções, cada uma acionando um comportamento diferente do modelo. As duas principais são « Convert the document to markdown. » para uma conversão estruturada e « Free OCR. » para uma transcrição bruta sem formatação. As instruções estão em inglês no treinamento; mantenha-as como estão, pois o texto reconhecido sai no idioma do documento. Com o cliente de linha de comando, o caminho da imagem é inserido diretamente no prompt.
A mesma operação pela API local, que escuta por padrão em http://localhost:11434, codifica a imagem em base64 no campo images. Esse é o caminho a priorizar assim que você encadeia páginas ou chama o modelo a partir de outro programa.
Duas opções merecem ser fixadas. A temperatura em zero torna a saída reproduzível, que é o que se espera de um OCR. O contexto de 8 192 tokens corresponde ao limite do modelo; abaixo disso, uma página densa pode ser truncada no meio de uma célula de tabela. O repositório oficial também menciona instruções específicas para descrever uma figura ou localizar texto com coordenadas; elas são pouco úteis para um simples PDF a ser indexado.
#Etapa 4: processar um PDF inteiro
Para um documento de várias dezenas de páginas, um script Python de algumas linhas basta. Ele percorre as imagens na ordem numérica, chama Ollama página por página, remove as tags de localização que o modelo pode inserir e concatena tudo em um único arquivo Markdown com um marcador por página. O marcador é útil depois para encontrar a página de origem de um trecho citado pelo seu RAG.
Cada chamada é independente: o modelo não mantém nenhuma memória da página anterior. Isso é uma limitação para tabelas que se estendem por duas páginas e uma vantagem para a robustez, pois uma página que falha não contamina outra. Ollama carrega o modelo uma vez e o mantém na memória entre as chamadas, conforme o valor da variável OLLAMA_KEEP_ALIVE; você só paga o tempo de carregamento no início do lote.
Se você tiver uma placa com folga, a opção OLLAMA_NUM_PARALLEL permite processar várias páginas ao mesmo tempo, ao custo de VRAM adicional para cada contexto. Em uma placa de 12 GB, duas solicitações paralelas continuam razoáveis com um modelo desse tamanho; verifique com nvidia-smi se você não está excedendo a memória do sistema, pois a desaceleração nesse caso é brusca.
#Etapa 5: limpar e verificar a saída
O Markdown gerado é bom para ler, mas não necessariamente para indexar desse jeito. Antes de enviá-lo para uma base vetorial, revise três pontos.
- 01As tags residuaisCom a instrução de conversão, o modelo é treinado com um token de localização e pode retornar coordenadas entre as tags ref e det. O script acima as remove. Verifique também se não resta nenhuma tag de imagem nem fragmento de instrução no início do arquivo.
- 02Os números e as tabelasUm modelo de visão e linguagem gera texto; portanto, pode inventar um valor plausível em uma célula ilegível, onde um OCR clássico teria deixado um caractere estranho. Abra as tabelas financeiras ou técnicas lado a lado com o scan e compare uma linha a cada dez. Para faturas, o guia específico do site explica como conferir com totais: https://quelllm.fr/guide/extraction-factures-ocr-llm
- 03Os cabeçalhos e rodapésNúmeros de página, nome do documento, avisos legais repetidos: eles aparecem em todas as páginas e poluem a divisão em segmentos. Em geral, uma expressão regular nas linhas idênticas presentes em mais da metade das páginas basta para removê-los.
- 04Os acentos e a tipografia francesaO editor anuncia treinamento em cerca de uma centena de idiomas. Ainda assim, verifique as letras acentuadas, as aspas francesas e os espaços inseparáveis antes dos sinais duplos em uma amostra: é aí que ficam os erros discretos que depois distorcem uma busca lexical.
Depois que o arquivo está limpo, ele entra em uma cadeia de RAG como qualquer Markdown: divisão por títulos, embeddings, banco de dados vetorial. A introdução ao RAG local do site retoma essas etapas: https://quelllm.fr/guide/rag-local-introduction
#Limites e solução de problemas
- O modelo responde sem olhar para a imagem
- Ou Ollama é antigo demais para esta arquitetura, ou a imagem não foi transmitida. Na linha de comando, o caminho deve ser absoluto ou relativo ao diretório atual, sem aspas ao redor do próprio caminho. Pela API, verifique se o campo images realmente contém base64 sem quebra de linha.
- Saída truncada no meio de uma tabela
- O contexto é curto demais para a página. Defina num_ctx como 8192 se isso ainda não tiver sido feito. Se a página ainda exceder o limite, divida-a em duas imagens, superior e inferior, com uma sobreposição de algumas linhas.
- Página lida fora de ordem
- Em um layout de três colunas ou em um formulário com caixas, o modelo pode misturar os blocos. Tente a instrução Free OCR, que segue a ordem espacial de forma mais simples, ou use o Docling, cuja análise de layout é explícita.
- Lentidão anormal
- Verifique com ollama ps se o modelo está realmente carregado na GPU, e não parcialmente no processador. Um contexto grande demais ou um segundo modelo carregado podem fazer a memória do sistema transbordar.
- Texto manuscrito
- DeepSeek-OCR é treinado com documentos impressos e renderizações de páginas. Em escrita à mão, os resultados variam muito; não conte com ele sem um teste prévio.
- Documentos longos e contexto entre páginas
- Cada página é processada isoladamente. Uma tabela que continua na página seguinte perde os cabeçalhos; é preciso reinseri-los manualmente ou com uma regra de pós-processamento.
#Quando PaddleOCR, Docling ou Tesseract são suficientes
DeepSeek-OCR não é a resposta para todos os scans. Ele se destaca quando a página tem uma estrutura a preservar e você quer Markdown sem montar um pipeline. Em muitos casos comuns, uma ferramenta mais simples ou mais especializada faz tão bem quanto, usando menos recursos e com menor risco de invenção.
- Tesseract
- Texto limpo, impresso, em fundo branco, em grande quantidade, quando você precisa apenas do texto. Ele roda no processador, não gera nada e, portanto, não inventa nada. Guia: https://quelllm.fr/guide/tesseract-ocr-guide-local
- PaddleOCR
- Texto posicionado em qualquer lugar da página, scans inclinados, tabelas a serem reconstruídas com uma etapa explícita de detecção antes da leitura. Sua variante VL também é um modelo de visão, menor que DeepSeek-OCR. Guia: https://quelllm.fr/guide/paddleocr-vl-ocr-local
- Docling
- PDFs nativos, DOCX, apresentações: documentos que já contêm texto e dos quais é preciso principalmente recuperar o layout e as tabelas. O Docling pode chamar um mecanismo de OCR para páginas em imagem, mas seu núcleo é a análise estrutural. Guia: https://quelllm.fr/guide/docling-conversion-documents-ia
- DeepSeek-OCR
- Digitalizações ou fotos de páginas com títulos, listas, tabelas ou fórmulas, e a necessidade de um Markdown pronto para indexação em uma única passagem, em uma placa de vídeo modesta.
Um critério costuma decidir: se um erro em um número tiver consequências, prefira uma ferramenta que reconheça sem gerar, ou faça uma segunda leitura com outro mecanismo e compare as saídas. Se a prioridade for tornar legível e consultável um acervo de documentos heterogêneos, o Markdown de DeepSeek-OCR economiza tempo em cada etapa seguinte.
#Para se aprofundar
- Ficha do modelo DeepSeek-OCR
- Parâmetros, VRAM por precisão, licença e comando de instalação. https://quelllm.fr/modele/deepseek-ocr
- Instalar Ollama
- A instalação no Windows, macOS e Linux, os comandos básicos e a solução de problemas. https://quelllm.fr/guide/installer-ollama
- RAG local sem programar
- Conecte o Markdown obtido ao Open WebUI ou ao AnythingLLM para consultar seus documentos. https://quelllm.fr/guide/rag-local-ollama-sans-coder
- Fontes oficiais
- Repositório GitHub deepseek-ai/DeepSeek-OCR (código, instruções, scripts vLLM para PDF), página do Hugging Face deepseek-ai/DeepSeek-OCR (pesos e licença MIT), página Ollama ollama.com/library/deepseek-ocr (tags, tamanho e versão mínima).
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.