Пошаговое руководство по локальному развертыванию olmOCR: упрощаем обработку PDF!

Пошаговое руководство по локальному развертыванию olmOCR: упрощаем обработку PDF!

Author

OLMOCR Team

1 марта 2025 г.

Пошаговое руководство по локальному развертыванию olmOCR: упрощаем обработку PDF!

olmOCR Logo

Внимание всем, кто работает с PDF-документами! Сегодня я хочу порекомендовать вам полезный инструмент — olmOCR, который позволяет языковым моделям легко читать PDF-файлы с самым разным форматированием! Он справится с любыми задачами: от научных статей до сложных таблиц. И самое главное — он поддерживает локальное развертывание, обеспечивая безопасность данных! Ниже я шаг за шагом проведу вас через процесс установки и использования 👇


🛠️ Подготовка: установка зависимостей

Для начала установим несколько системных зависимостей (на примере Ubuntu):

# Установка всего необходимого в один клик
sudo apt-get update
sudo apt-get install poppler-utils ttf-mscorefonts-installer msttcorefonts fonts-crosextra-caladea fonts-crosextra-carlito gsfonts lcdf-typetools

💡 Подсказка: Если во время установки появится запрос на принятие лицензионного соглашения для шрифтов, нажмите клавишу TAB, выберите <Yes> и подтвердите!


🌱 Создание среды Python

Рекомендуется использовать conda для управления средой:

conda create -n olmocr python=3.11
conda activate olmocr

# Клонирование репозитория и установка
git clone https://github.com/allenai/olmocr.git
cd olmocr
pip install -e .

⚡ Установка компонентов для ускорения

Хотите использовать GPU для ускорения? Тогда эти две команды обязательны:

pip install sgl-kernel==0.0.3.post1 --force-reinstall --no-deps
pip install "sglang[all]==0.4.2" --find-links https://flashinfer.ai/whl/cu124/torch2.4/flashinfer/

🚀 Быстрый старт: конвертация PDF на практике

Конвертация одного файла

python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/horribleocr.pdf

Пакетная обработка

python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/*.pdf

Результаты конвертации будут сохранены в файле JSONL в каталоге ./localworkspace/results. Просмотреть их можно с помощью этой команды:

cat localworkspace/results/output_*.jsonl

👀 Инструмент визуального сравнения

Хотите наглядно сравнить исходный PDF-файл и результат конвертации? Попробуйте это:

python -m olmocr.viewer.dolmaviewer localworkspace/results/output_*.jsonl

Откройте HTML-файл в сгенерированном каталоге dolma_previews, и вы увидите интерфейс сравнения, подобный этому 👇

Пример визуального сравнения


🧰 Продвинутые возможности

Обработка миллионов PDF-файлов

Для обработки больших объемов PDF-файлов на уровне предприятия можно использовать кластер AWS:

# Инициализация на первом узле
python -m olmocr.pipeline s3://my_bucket/workspace --pdfs s3://my_bucket/pdfs/*.pdf

# Присоединение других узлов к кластеру
python -m olmocr.pipeline s3://my_bucket/workspace

Просмотр всех параметров

python -m olmocr.pipeline --help

💻 Специально для пользователей Docker

Официально предоставляется готовый Dockerfile, что упрощает задачу — просто скачайте образ:

FROM allenai/olmocr-inference:latest
# Подробности использования см. в документации проекта
# Ссылка:
https://github.com/allenai/olmocr/blob/main/scripts/beaker/Dockerfile-inference

❓ Часто задаваемые вопросы

  1. Что делать, если возникает ошибка, связанная с GPU?
    Убедитесь, что драйвер видеокарты и версия CUDA соответствуют требованиям. Рекомендуется использовать новые видеокарты, такие как RTX 4090/L40S/A100/H100.

  2. Поддерживаются ли PDF-файлы на русском языке?
    В настоящее время основное внимание уделяется оптимизации для документов на английском языке, но вы можете попробовать использовать другие языки с помощью параметра --apply_filter.

  3. Недостаточно места на диске?
    Зарезервируйте не менее 30 ГБ свободного места. Для обработки больших файлов рекомендуется использовать SSD.


👏 Благодарности

olmOCR разработан Институтом искусственного интеллекта Аллена (AI2) и распространяется по лицензии Apache 2.0. Особая благодарность команде разработчиков (полный список участников).

Попробуйте прямо сейчас! Если у вас возникнут вопросы, присоединяйтесь к сообществу Discord ~🎉