Repository navigation
Performance and GPU RU
🌐 English · Русский
Установите 0.5.1 и скачайте примеры.
Сначала обработайте несколько типичных страниц. Первый запуск включает подготовку моделей, поэтому измеряйте и последующие запуски.
Если приложение обрабатывает много изображений, создайте конвейер один раз:
from occular import OCRPipeline
reader = OCRPipeline()
for filename in ["page1.png", "page2.png"]:
print(reader.get_text(filename))Здесь измеряется второй вызов после явного прогрева на чеке из примера:
from time import perf_counter
from occular import OCRPipeline
reader = OCRPipeline()
reader.get_text("receipt.jpg") # warm up the models
started = perf_counter()
text = reader.get_text("receipt.jpg")
seconds = perf_counter() - started
print("Seconds for this page:", round(seconds, 2))
print("Recognized lines:", len(text.splitlines()))Фактический вывод одного запуска на CPU:
Seconds for this page: 12.23
Recognized lines: 43
Это воспроизводимый способ измерения, а не обещание скорости или сравнение с GPU. Время зависит от документа, оборудования и кеша моделей.
Открыть настоящий запуск в Jupyter: весь код виден

ocr document.pdf --workers 2Попробуйте 1, 2 и 4 обработчика. Большее число требует больше памяти, поэтому иногда только мешает. Использование обработчиков из Python →
Установите зависимости CUDA:
python -m pip install "occular-ocr[gpu]==0.5.1"Затем запросите выполнение на GPU:
from occular import ocr
text = ocr("scan.png", gpu=True)Для этой полной проверки используйте окружение с поддержкой GPU:
import onnxruntime as ort
print("Installed runtime providers:")
print(ort.get_available_providers())from occular import ocr
text = ocr("receipt.jpg", gpu=True)
print("\n".join(text.splitlines()[:5]))Выбранные фактические сообщения запуска из показанного примера:
Loaded DBNet detector (GPU/CUDA, threads=8)
Loaded SVTR recognizer (vocab=185 chars, GPU/CUDA, threads=8)
И детектор, и распознаватель сообщили GPU/CUDA. Одного списка доступных провайдеров недостаточно, чтобы подтвердить запуск сессий на CUDA. На другом компьютере может появиться сообщение о переходе на CPU.
Открыть настоящий запуск в Jupyter: весь код виден

Нужны совместимые драйвер NVIDIA и платформа. Читайте сообщения запуска: если CUDA не загрузится, Occular может перейти на CPU.
Что ещё можно настроить?
-
num_threadsуправляет работой внутри страницы;workers— параллельными задачами. - По умолчанию используется лёгкий распознаватель
svtr_lcnet. Для сравнения точности попробуйтеrecognizer="svtr_t", но его выполнение требует больше ресурсов. -
reading_order=Falseпропускает упорядочивание по макету, если оно не нужно приложению. -
lm=Falseотключает декодирование с языковой моделью. Проверьте качество, прежде чем оставлять её выключенной. - Для обработки PDF на GPU начните с одного обработчика и следите за видеопамятью.
Occular-OCR 0.5.1 · English · Русский · Report a problem / Сообщить о проблеме