Skip to content

Bodhi42/ocr-detection-benchmark

Repository files navigation

OCR Detection Benchmark

Инструменты для сравнения детекторов текста (Tesseract, EasyOCR, Doctr, PaddleOCR, MMOCR) на едином датасете и сохранения визуальных примеров предсказаний.

Состав

  • benchmark.py — CLI для запуска бенчмарка и расчёта метрик F1/precision/recall.
  • generate_demo_previews.py — генерация демо-картинок: для каждой модели сохраняется по 6 изображений с нарисованными bounding boxes.
  • dataset/ — набор из 113 документов (используются движками и docker-контейнерами).
  • labels/tasks_dataset.json — экспорт Label Studio с GT-боксами.
  • Dockerfile.mmocr — окружение для контейнера mmocr-bench.

HTML/Flask визуализации намеренно отсутствуют — весь функционал доступен из CLI.

Подготовка окружения

  1. Python ⩾ 3.10 с библиотеками из requirements.txt:

    python3 -m venv .venv
    source .venv/bin/activate
    pip install --upgrade pip
    pip install -r requirements.txt
  2. Docker контейнеры:

    • MMOCR: docker build -f Dockerfile.mmocr -t mmocr-bench .
    • PaddleOCR: образ paddleocr-cpu должен быть доступен локально (можно использовать официальный PaddleOCR dockerfile).
  3. Для docker-запусков скрипты могут попросить sudo. Передавайте пароль через SUDO_PASSWORD=... (либо заранее настройте доступ к сокету Docker).

Запуск бенчмарка

# все модели
./benchmark.py --images dataset/images --tasks labels/tasks_dataset.json --results results

# только отдельные движки
./benchmark.py --engines tesseract easyocr paddle

# список доступных моделей
./benchmark.py --list

Каждый запуск создаёт JSON-файл results/<engine>.json со сводными метриками. После выполнения скрипт печатает таблицу с F1/precision/recall.

Демонстрационные изображения

# полный прогон для всех движков (если docker требует sudo — прокиньте пароль)
SUDO_PASSWORD=1234 ./generate_demo_previews.py

# перегенерировать только docker-модели
DEMO_ENGINES='paddle,paddle_server,mmocr' SUDO_PASSWORD=1234 ./generate_demo_previews.py

Скрипт берёт страницы с индексами 1, 20, 40, 60, 80, 110 и сохраняет версии с боксами в demo_outputs/<engine>/.

Структура результатов

  • results/ — JSON с усреднёнными метриками.
  • demo_outputs/<engine>/img_XXXX.jpg — визуализации для каждой модели.

Примечания

  • Путь к датасету и JSON-аннотациям можно переопределять опциями --images и --tasks.
  • Для docker-моделей (paddle, paddle_server, mmocr) используется локальное кеширование (.paddle_cache).
  • Если требуется только вычисление предсказаний без метрик, имеющиеся функции можно переиспользовать как модуль.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages