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-системами:
| Характеристика | PaddleOCR | Tesseract (Google) | EasyOCR | ABBYY 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 с поддержкой распознавания формул, которая на бенчмарках показала точность, сравнимую с платными решениями.
Источники
- Официальная документация PaddlePaddle: PaddleOCR Overview.
- Репозиторий библиотеки на GitHub: PaddlePaddle/PaddleOCR.
- Статья «PaddleOCR: A High-Performance OCR System» на портале arXiv (2021).
- Сравнение производительности OCR-систем: Бенчмарки Tesseract, EasyOCR, PaddleOCR (TechWorld, 2023).
- Технический блог Baidu AI: «PaddleOCR 2.6: Table and Formula Recognition».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →