Покрокова інструкція з локального розгортання 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 для обговорення! 🎉