Открыть сервис

PaddleOCR

PaddleOCR — это библиотека для оптического распознавания символов (OCR) с открытым исходным кодом, разработанная компанией Baidu (организация, осуществляющая деятельность на территории РФ, подлежащая регулированию). Инструмент предназначен для извлечения текста из изображений и документов, поддерживает множество языков, различные типы текстовых данных (печатный, рукописный, вертикальный, текст на искривлённых поверхностях) и входит в состав экосистемы глубокого обучения PaddlePaddle.

История и разработка

PaddleOCR был впервые выпущен в 2020 году как часть проекта PaddlePaddle, который является альтернативой таким фреймворкам, как TensorFlow и PyTorch. Разработкой занимается отдел искусственного интеллекта компании Baidu. Основной целью создания PaddleOCR было предоставление исследователям и разработчикам высокопроизводительного, но при этом лёгкого решения для задач распознавания текста, которое можно было бы легко развернуть в промышленных средах.

С момента релиза библиотека активно обновляется. Ключевые версии включают:

  • PaddleOCR 1.0 (2020): Базовая поддержка распознавания и детекции текста на основе стандартных моделей (CRNN, DB).
  • PaddleOCR 2.0 (2021): Добавлена поддержка более 80 языков, улучшены алгоритмы детекции (SAST, PSE) и распознавания (Transformer), появилась возможность обучения собственных моделей.
  • PaddleOCR 2.6 (2022) и выше: Интеграция с PaddleOCR-Web, улучшенная обработка снимков документов, распознавание формул и таблиц, а также внедрение модели шумоподавления и улучшения качества изображения.

На 2024 год библиотека остаётся одной из самых популярных OCR-систем в репозиториях GitHub (более 40 000 звёзд), что обусловлено её высокой точностью и скоростью работы.

Архитектура и компоненты

PaddleOCR реализует классическую конвейерную архитектуру для оптического распознавания символов, состоящую из трёх основных модулей:

1. Детекция текста (Text Detection)

Этот модуль отвечает за поиск областей, содержащих текст, на исходном изображении. PaddleOCR использует нейросетевые модели для детекции, наиболее известные из которых:

  • DB (Differentiable Binarization): Быстрая и точная модель для обнаружения произвольно ориентированного текста. Она предсказывает карту вероятности текста, а затем пороговым значением отделяет текстовые области от фона.
  • SAST (Single Shot Arbitrarily-Shaped Text Detector): Модель, предназначенная для обнаружения текста сложной формы, например, изогнутого или сильно деформированного.
  • PSE (Progressive Scale Expansion): Метод, основанный на расширении масок текстовых областей, который особенно эффективен для текстов с большим межсимвольным расстоянием.

2. Распознавание текста (Text Recognition)

После детекции каждая найденная область подаётся на вход модуля распознавания, который переводит изображение текста в строку символов. Основные подходы:

  • CRNN (Convolutional Recurrent Neural Network): Классическая архитектура, сочетающая свёрточные слои для извлечения признаков и рекуррентные слои (LSTM/GRU) для моделирования последовательности символов.
  • Transformer-based: Более современные модели, основанные на архитектуре Transformer с механизмом внимания, которые позволяют распознавать текст высокой плотности, с вариативным шрифтом или рукописные записи.
  • SVTR (Single Vision Text Recognizer): Модель, использующая исключительно архитектуру трансформера для работы с визуальными признаками, что повышает точность распознавания.

3. Структурный анализ документа (Document Analysis) (Опционально)

Начиная с версии 2.6, в PaddleOCR появился модуль для анализа структуры документа, который может:

  • Распознавать таблицы: Определяет границы ячеек и восстанавливает структуру таблицы.
  • Распознавать формулы: Использует специализированные модели (например, на базе Transformer) для преобразования математических формул в LaTeX-код.
  • Сегментировать блоки: Делит страницу на логические зоны (заголовок, основной текст, сноска, колонтитул).

4. Постобработка (Post-processing)

Включает в себя коррекцию ошибок, фильтрацию шумов, сортировку и объединение результатов. Например, алгоритм CTPN или DBPostProcess восстанавливают порядок чтения и склеивают строки, относящиеся к одному абзацу.

Классификация и поддерживаемые функции

PaddleOCR предлагает широкий спектр конфигураций и моделей, которые делятся по следующим признакам:

По типу модели

  • Предобученные модели (Pre-trained): Наиболее популярные и сбалансированные по точности и скорости. Доступны для английского, китайского, русского, арабского и других языков.
  • Лёгкие модели (Lightweight): Оптимизированные для работы на мобильных устройствах (ARM, Android) и встраиваемых системах с ограниченными ресурсами. Размер моделей составляет от 1 до 5 МБ.
  • Тяжёлые модели (Large/Ultra): Обеспечивают максимальную точность, но требуют значительных вычислительных мощностей (GPU).

По способу применения

  • PaddleOCR CLI: Утилита командной строки для быстрого запуска OCR на одном файле или папке с изображениями.
  • PaddleOCR Python API: Функция paddleocr.PaddleOCR() для программной интеграции в скрипты и веб-сервисы.
  • PaddleOCR-Web: Веб-интерфейс для визуального тестирования и демонстрации работы OCR.
  • Серверный вариант (Serving): Поддержка микросервисной архитектуры для развёртывания в кластерной среде.

По типу распознаваемого текста

  • Печатный текст (Print): Стандартные шрифты, включая мелкий и крупный кегль.
  • Рукописный текст (Handwriting): Отдельные буквы, слова и предложения. Точность распознавания рукописного текста ниже, чем печатного, но решение пригодно для автоматизации ввода анкет или чеков.
  • Вертикальный текст (Vertical): Варианты, где текст написан сверху вниз (например, в традиционных китайских или японских текстах).
  • Текст на изогнутых поверхностях (Rotated/Curved): Распознавание текста на круглых предметах (бутылки, банки) или изогнутых вывесках.

Языковая поддержка

PaddleOCR поддерживает более 80 языков, включая:

  • Китайский (упрощённый и традиционный): Базовая модель, на которой обучалась система. Имеет наивысшую точность.
  • Английский, немецкий, французский, испанский: Поддержка на уровне ведущих коммерческих OCR-решений.
  • Русский: Включает распознавание кириллицы и поддержку специфических символов (ё, ь, ъ).
  • Арабский и языки с письмом справа налево (RTL): Специальные модели, учитывающие направление письма.
  • Языки Южной и Юго-Восточной Азии (японский, корейский, тайский, хинди): Поддержка большого объёма символов и сложной графики.

Применение

PaddleOCR широко применяется в коммерческих и исследовательских проектах, требующих автоматизации работы с текстом:

  • Автоматизация документооборота: Извлечение текста из отсканированных договоров, счетов-фактур, накладных, паспортов и других бланков.
  • Системы видеоаналитики: Распознавание номеров автомобилей, дорожных знаков, текста на экранах и реклпмных щитах в кадрах видеопотока.
  • Цифровая библиотека и архивация: Конвертация книг, газет и журналов в редактируемый электронный текст (в том числе с распознаванием формул).
  • Ритейл и логистика: Распознавание штрих-кодов, этикеток товаров, сроков годности на упаковке.
  • Финансовый сектор: Обработка чеков, банковских выписок, распознавание рукописных подписей и текста на банкнотах.

Сравнение с аналогами

PaddleOCR часто сравнивают с другими открытыми и коммерческими OCR-системами:

ХарактеристикаPaddleOCRTesseract (Google)EasyOCRABBYY FineReader (коммерческая)
Точность (китайский/русский)Очень высокаяНизкая (китайский) / Средняя (русский)ВысокаяВысокая (русский)
Скорость работы (CPU)ВысокаяСредняяНизкаяСредняя
Поддержка рукописного текстаДаНет (ограниченно)ДаЧастично
Распознавание таблицВстроенная модельТребует доработкиНетОтличное
Лёгкость развёртыванияВысокая (Python, Docker)Средняя (Python, CLI)Высокая (Python)Средняя (API/Win)
Гибкость настройкиВысокая (можно дообучать)СредняяНизкаяНизкая

Точность PaddleOCR на китайском тексте часто превосходит многие решения, однако на сложных полиграфических документах, особенно с вензелями или сильно деформированным шрифтом, коммерческий продукт ABBYY может обеспечивать лучший результат.

Критика и ограничения

Несмотря на популярность, PaddleOCR имеет ряд недостатков:

  • Зависимость от экосистемы Baidu: Библиотека тесно интегрирована с PaddlePaddle, что может быть неудобно для проектов, уже использующих PyTorch или TensorFlow. Требуется установка дополнительных зависимостей.
  • Проблемы с латиничными спецсимволами: Распознавание знаков препинания и цифр не всегда корректно на изображениях с плохим качеством.
  • Трудности с мелким текстом: Текст размером менее 8-10 пикселей распознаётся с низкой точностью.
  • Высокое потребление оперативной памяти при работе с тяжёлыми моделями: Некоторые конфигурации требуют более 4 ГБ ОЗУ, что исключает их использование на слабых устройствах.
  • Отсутствие полноценной поддержки некоторых редких языков, таких как вьетнамский с диакритическими знаками или амхарский.

Интересные факты

  • PaddleOCR был одним из первых проектов с открытым исходным кодом, который предложил поддержку распознавания текста с использованием архитектуры Transformer на 80 языках.
  • Библиотека активно используется в КНР для автоматизации обработки государственных документов и в системах умного города.
  • Модели PaddleOCR имеют один из самых низких показателей размера (менее 2 МБ для лёгкой модели) при сохранении высокой точности, что делает их пригодными для встраиваемых систем (Raspberry Pi, Jetson Nano).
  • В 2023 году Baidu выпустила версию PaddleOCR с поддержкой распознавания формул, которая на бенчмарках показала точность, сравнимую с платными решениями.

Источники

  1. Официальная документация PaddlePaddle: PaddleOCR Overview.
  2. Репозиторий библиотеки на GitHub: PaddlePaddle/PaddleOCR.
  3. Статья «PaddleOCR: A High-Performance OCR System» на портале arXiv (2021).
  4. Сравнение производительности OCR-систем: Бенчмарки Tesseract, EasyOCR, PaddleOCR (TechWorld, 2023).
  5. Технический блог Baidu AI: «PaddleOCR 2.6: Table and Formula Recognition».
Загружаем BFOmetr…