Добавить в корзинуПозвонить
Найти в Дзене
Экспансия ИИ ботов

Как распознать текст из отсканированных PDF: DeepSeek OCR.

DeepSeek OCR: Как запустить мощную модель распознавания текста на своем сервере Отсканированные документы, PDF-файлы без текстового слоя, изображения с текстом — все это можно распознать с помощью искусственного интеллекта. Сегодня расскажу про DeepSeek OCR — одну из самых мощных vision-моделей для распознавания текста, которая показывает отличные результаты, особенно на русском языке. Что такое DeepSeek OCR и почему он хорош? DeepSeek OCR — это vision-language модель от компании DeepSeek с 3 миллиардами параметров. Она специально создана для оптического распознавания символов (OCR) и понимания документов. Модель использует инновационную технику "оптического сжатия контекста", которая позволяет эффективно обрабатывать 2D-макеты документов. Ключевые преимущества: - Высокая точность: до 97% точности распознавания - Эффективность: использует в 10 раз меньше vision токенов, чем текстовые LLM-модели, что делает её в 10 раз более эффективной - Поддержка сложных форматов: отлично справляется

DeepSeek OCR: Как запустить мощную модель распознавания текста на своем сервере

Отсканированные документы, PDF-файлы без текстового слоя, изображения с текстом — все это можно распознать с помощью искусственного интеллекта. Сегодня расскажу про DeepSeek OCR — одну из самых мощных vision-моделей для распознавания текста, которая показывает отличные результаты, особенно на русском языке.

Что такое DeepSeek OCR и почему он хорош?

DeepSeek OCR — это vision-language модель от компании DeepSeek с 3 миллиардами параметров. Она специально создана для оптического распознавания символов (OCR) и понимания документов. Модель использует инновационную технику "оптического сжатия контекста", которая позволяет эффективно обрабатывать 2D-макеты документов.

Ключевые преимущества:

- Высокая точность: до 97% точности распознавания

- Эффективность: использует в 10 раз меньше vision токенов, чем текстовые LLM-модели, что делает её в 10 раз более эффективной

- Поддержка сложных форматов: отлично справляется с таблицами, научными статьями и даже рукописным текстом

- Многоязычность: поддерживает почти 100 языков в одной модели

- Качество русского языка: по нашим тестам, качество распознавания русского языка заметно лучше, чем у других vision-моделей

- Сохранение структуры: восстанавливает структуру документа (заголовки, списки, таблицы) и выдает результат в формате Markdown

Как работает DeepSeek OCR?

Модель принимает на вход только изображение — это vision-модель, которая "читает" картинки и понимает, что там написано. Вам не нужны текстовые слои в PDF, не нужна предварительная обработка — просто отправляете изображение, получаете распознанный текст.

Для PDF-файлов мы используем специальный пайплайн:

1. Предобработка через ocrmypdf — исправляет ориентацию, выравнивает таблицы и текст, убирает артефакты сканирования

2. Разбивка на изображения — каждая страница PDF конвертируется в картинку

3. Распознавание через DeepSeek OCR — модель обрабатывает каждое изображение

4. Сборка документа обратно — все распознанные страницы объединяются в единый документ

Требования к железу для запуска DeepSeek OCR

Для запуска модели нужно довольно мощное железо, особенно если планируете обрабатывать большие объемы документов.

Минимальные требования:

- Видеокарта: NVIDIA GPU с поддержкой CUDA (минимум 8GB VRAM, рекомендуется 16GB+)

- Процессор: современный многоядерный процессор (AMD или Intel)

- Оперативная память: минимум 16GB RAM, рекомендуется 32GB+

- Дисковое пространство: минимум 20GB свободного места (для модели, библиотек и временных файлов)

- Операционная система: Linux (Ubuntu 20.04+ или Ubuntu Server 24.04)

Рекомендуемая конфигурация:

- Видеокарта: NVIDIA RTX 5090 (32GB VRAM) или RTX 4090/4080

- Процессор: AMD Ryzen 9 или Intel Core i9

- Оперативная память: 64GB RAM

- Диск: NVMe SSD с объемом 100GB+

Почему нужна мощная видеокарта? Модель DeepSeek OCR весит около 6-7GB в формате float16 и требует значительных вычислительных ресурсов для обработки изображений. Чем больше VRAM, тем больше страниц можно обрабатывать пакетно, что ускоряет работу.

Необходимые компоненты системы

Для запуска DeepSeek OCR должны быть установлены:

- Python 3.8+

- CUDA Toolkit 12.x (для RTX 5090)

- vLLM (для запуска модели)

- PyTorch с поддержкой CUDA

- poppler-utils (для работы с PDF)

- ocrmypdf (для предобработки PDF)

- pdf2image или PyMuPDF (для конвертации PDF в изображения)

Базовая документация по установке: https://docs.unsloth.ai/models/deepseek-ocr-how-to-run-and-fine-tune

Загрузка и запуск модели

Для запуска модели используем vLLM с моделью unsloth/DeepSeek-OCR. Вот как это реализовано:

```python

from vllm import LLM, SamplingParams

from vllm.model_executor.models.deepseek_ocr import NGramPerReqLogitsProcessor

from PIL import Image

# Загрузка модели (загружается один раз)

llm = LLM(

model="unsloth/DeepSeek-OCR",

enable_prefix_caching=False,

mm_processor_cache_gb=0,

logits_processors=[NGramPerReqLogitsProcessor],

gpu_memory_utilization=0.9,

max_model_len=8192,

)

# Настройки для обработки

sampling_params = SamplingParams(

temperature=0.0,

max_tokens=8192,

extra_args=dict(

ngram_size=30,

window_size=90,

whitelist_token_ids={128821, 128822}, # whitelist: <td>, </td>

),

skip_special_tokens=False,

)

# Обработка одного изображения

prompt = "<image>\nFree OCR."

image = Image.open("your_image.jpg").convert("RGB")

outputs = llm.generate([{

"prompt": prompt,

"multi_modal_data": {"image": image}

}], sampling_params)

text = outputs[0].outputs[0].text

print(text)

```

При первом запуске модель загрузится с Hugging Face (это может занять 5-10 минут в зависимости от скорости интернета). Модель весит около 6-7GB.

Оптимизация для RTX 5090

RTX 5090 имеет 32GB VRAM, что позволяет работать с моделью в полной точности (float16) без необходимости квантизации. С таким объемом памяти можно обрабатывать несколько изображений одновременно в пакетном режиме.

Пакетная обработка PDF-файлов

Для обработки PDF используется пайплайн: предобработка через ocrmypdf → конвертация в изображения → распознавание через DeepSeek OCR → сборка обратно.

```python

from pdf2image import convert_from_path

import subprocess

from pathlib import Path

import tempfile

def process_pdf(pdf_path, output_path, llm):

# Шаг 1: Предобработка через ocrmypdf (исправление ориентации)

with tempfile.NamedTemporaryFile(suffix='.pdf', delete=False) as tmp:

temp_pdf = tmp.name

subprocess.run([

'ocrmypdf',

'--rotate-pages', # Автоматическое исправление ориентации

'--skip-text', # Пропускать страницы с текстом

'-l', 'rus+eng', # Языки для определения ориентации

pdf_path,

temp_pdf

])

# Шаг 2: Конвертация PDF в изображения

images = convert_from_path(temp_pdf, dpi=300)

# Шаг 3: OCR через DeepSeek OCR

results = []

for i, image in enumerate(images, 1):

outputs = llm.generate([{

"prompt": "<image>\nFree OCR.",

"multi_modal_data": {"image": image}

}], sampling_params)

text = outputs[0].outputs[0].text

results.append(f"## Страница {i}\n\n{text}\n\n")

# Шаг 4: Сохранение результата

with open(output_path, 'w', encoding='utf-8') as f:

f.write(''.join(results))

# Удаление временного файла

os.unlink(temp_pdf)

# Использование

llm = LLM(model="unsloth/DeepSeek-OCR", ...) # Загружаем модель один раз

process_pdf("input.pdf", "output.md", llm)

```

Ключевые настройки:

- **ocrmypdf**: `--rotate-pages` для исправления ориентации, `--skip-text` для ускорения, `-l rus+eng` для русских и английских документов

- **vLLM**: `temperature=0.0` для детерминированных результатов, `max_tokens=8192` для длинных документов

- **ngram_size=30, window_size=90** — параметры для улучшения качества распознавания таблиц

Результаты работы

По нашим тестам, DeepSeek OCR показывает отличные результаты на русском языке. Качество распознавания заметно лучше, чем у других vision-моделей, особенно на сложных документах с таблицами, формулами и смешанным форматированием.

Модель отлично справляется с:

- Отсканированными документами

- PDF-файлами без текстового слоя

- Документами с таблицами

- Научными статьями с формулами

- Документами с рукописными заметками

Возможные проблемы и решения

1. Нехватка памяти GPU: Уменьшите `gpu_memory_utilization` в настройках vLLM (например, до 0.7-0.8). Для RTX 5090 с 32GB VRAM это обычно не требуется

2. Медленная загрузка модели: При первом запуске модель скачивается с Hugging Face. Последующие запуски будут быстрее, так как модель кэшируется локально

3. Ошибки с CUDA: Убедитесь, что версия PyTorch совместима с вашей версией CUDA. Для RTX 5090 нужна CUDA 12.1+

4. Проблемы с poppler: Если возникают ошибки при работе с PDF, убедитесь, что poppler-utils установлен

5. Ошибки ocrmypdf: Проверьте, что ocrmypdf установлен и доступен в PATH

Выводы

DeepSeek OCR — это мощный инструмент для распознавания текста из изображений и документов. При правильной настройке и достаточных ресурсах (особенно VRAM на GPU) модель показывает отличные результаты, особенно на русском языке.

Для запуска на Ubuntu Server 24.04 с RTX 5090 достаточно следовать инструкциям выше. Главное — иметь достаточно VRAM (32GB на RTX 5090 более чем достаточно) и правильно настроить окружение.

Если у вас есть опыт работы с OCR или вопросы по установке — делитесь в комментариях!