Найти статью
OpenALPR
OpenALPR (от англ. Open Automatic License Plate Recognition — «открытое автоматическое распознавание автомобильных номеров») — открытая библиотека автоматического распознавания автомобильных номеров, написанная на C++ и распространяемая по лицензии Affero GPLv3 вместе с коммерческой версией того же продукта[1]. Библиотека анализирует изображения и видеопотоки и выдаёт текстовое представление символов номерного знака с оценкой уверенности каждого варианта[1]. Ядро сопровождается привязками для языков C#, Java, Node.js, Go и Python, утилитой командной строки alpr и фоновым демоном, принимающим потоки с камер[1].
Проект появился как самостоятельная разработка Мэттью Хилла и небольшой команды, а к 2019 году вошёл в состав американской компании Rekor: открытая библиотека осталась доступной для разработчиков, коммерческие продукты получили собственные имена и продолжили развиваться[2]. Техническая основа — проверенные библиотеки OpenCV и Tesseract OCR, что позволило собрать рабочий конвейер распознавания без глубоких нейронных сетей и запускать его даже на недорогом оборудовании[1][3]. В обзорах литературы проект упоминается как характерный пример классического подхода к распознаванию номеров[4].
Автоматическое распознавание номеров относят к классическим задачам компьютерного зрения: последовательность «поиск пластины, выравнивание, чтение символов» описана в обзорных работах задолго до появления OpenALPR[3]. Значение проекта в том, что он собрал эту последовательность в готовый продукт с открытым кодом, образцами для десятков стран и простым интерфейсом, и сделал распознавание номеров доступным вне специализированных лабораторий[1][5].
Общие сведения
Что важно знать
| OpenALPR | |
|---|---|
| Область использования | автоматическое распознавание автомобильных номеров, контроль проездов, парковочные и охранные системы |
| Дата появления | 2014 |
| Место появления | США |
| Автор понятия | Мэттью Хилл |
| Ключевые слова | распознавание номеров, компьютерное зрение, OpenCV, Tesseract OCR, лицензия AGPL |
| Базовые понятия | компьютерное зрение, оптическое распознавание символов, машинное обучение, видеонаблюдение |
История
Репозиторий проекта размещён на GitHub под именем openalpr; первая пронумерованная версия 1.1.0 с многопоточным поиском пластин доступна с мая 2014 года, а 20 августа вышла 1.2.0 с демоном для Linux и поддержкой видеопотоков MJPEG[1][6]. Уже ранние выпуски включали утилиту командной строки, позволявшую проверить распознавание на одиночном снимке без написания кода[1]. По воспоминаниям самой компании, как бесплатная загрузка продукт стал доступен в конце 2015 года, когда автор перевёл библиотеку в статус открытого программного обеспечения[2]. Лицензией выбрана Affero GPLv3 — производная от GPL с обязанностью публиковать исходный код сетевых служб; параллельно предлагалась коммерческая лицензия для случаев, когда условия Affero не подходят[1].
Проект с самого начала опирался на сообщество. Вопросы разбирались в группе рассылки, руководства по сборке собирались в вики репозитория, а для пополнения обучающих данных автор приглашал присылать снимки пластин на сервер загрузки проекта и помогать с разметкой[7][1]. Такая модель повторяла практику открытых библиотек компьютерного зрения: ядро развивает небольшая команда, а образы и конфигурации стран пополняются пользователями со всего мира[8].
В 2015 году вышли три выпуска второй ветки: 2.0.1 в марте, 2.1.0 в июне и 2.2.0 в октябре[6]. 17 июля 2016 года опубликована версия 2.3.0 — последний открытый релиз проекта: после него готовые сборки появлялись только в коммерческих продуктах, хотя репозиторий продолжал принимать отдельные правки[6].
Каждый выпуск второй ветки приносил заметные шаги. Версия 2.0.1 добавила биндинги для Java, C# и Python и поддержку вычислений на ускорителях Nvidia через CUDA. Версия 2.1.0 принесла подробности по каждому распознанному символу, детектор движения для видеофреймов и шаблоны южнокорейских и австралийских пластин. Версия 2.2.0 добавила обучающие данные для Сингапура и Великобритании, поддержку двухстрочных пластин и ускорение через OpenCL. Наконец, версия 2.3.0 принесла поддержку Python 3 и опцию маски зоны поиска[6].
Компания OpenALPR Technology, основанная автором библиотеки, параллельно развивала платный облачный интерфейс распознавания и агентов для сетевых камер[2]; сайт проекта позиционировал связку локальной библиотеки и облачной службы как единый продукт с раннего этапа[8].
Широкую известность проект получил в 2017 году. Австралийский разработчик Тейт Браун показал, что связка из открытой библиотеки и открытых данных полиции штата Виктория воспроизводит ключевые функции номерной системы, оценивавшейся полицейскому ведомству в 86 миллионов австралийских долларов. На это ему потребовалось 57 строк кода[5]. В октябре того же года автор эксперимента описал и практический результат. Система на открытой версии помогла вернуть угнанный автомобиль. Сравнение выявило разрыв между открытой библиотекой и облачным сервисом: последний читал пластины на кадрах, где локальная версия не находила номер вовсе[9].
В 2019 году OpenALPR Technology вошла в состав компании Rekor из Колумбии (Мэриленд, США), торгующейся на бирже Nasdaq; Мэттью Хилл занял в объединённой компании пост главного научного сотрудника[2]. Сразу после объединения облачная платформа Rekor на базе OpenALPR была выбрана Nokia для предложений в составе городских решений интернета вещей[10]. В июле 2019 года компания объявила об обновлении движка: скорость обработки на центральных процессорах выросла до двух раз, что позволило подключать вдвое больше камер на том же оборудовании, а точность на открытом бенчмарке американских пластин достигла 99,02 %[11].
После присоединения открытая библиотека сохранила имя OpenALPR, а коммерческая линейка получила собственные названия — Rekor Scout для правоприменения, Rekor CarCheck для парковок и проездов, набор средств разработки для встраивания[2]. Выпускался и готовый уличный комплекс Edge Max, переносящий вычисления на край сети: прибор крепится рядом с дорогой и отправляет наружу только результаты распознавания[2]. Сама компания описывает приобретение 2019 года как поворотный эпизод своей истории, ускоривший превращение небольшого проекта в коммерческую платформу распознавания[2]. Для парковых и уличных камер выпускался программный агент, превращавший сетевые устройства наблюдения в самостоятельные точки распознавания без отдельного сервера[8].
Устройство
Комплект открытой версии собирается из ядра на C++, подключаемых модулей привязки и служебных программ[1]. Привязки дают одинаковый программный интерфейс для C#, Java, Node.js, Go и Python, поэтому конвейер распознавания встраивается как в настольные приложения, так и в серверные службы[1]. Утилита alpr принимает путь к изображению и параметры: код страны (us или eu), число возвращаемых кандидатов, шаблон региона, ключи выдачи результата в JSON и позицию в видеофайле[1]. Демон openalpr-daemon принимает кадры с камер и выстраивает очередь распознавания, а пакет openalpr-utils служит для обучения и настройки[1].
Свои конфигурационные файлы описывают правила номерных знаков конкретной страны или штата: допустимые символы, порядок букв и цифр, ширина пластины[1]. Шаблоны для штатов США задаются двухбуквенными кодами — например, md для Мэриленда или ca для Калифорнии[1]. Настройка под регион заметно повышает точность — постобработка отсекает невозможные комбинации и восстанавливает похожие символы по шаблону[12]. Зависимости сведены к двум библиотекам: OpenCV версии не ниже 2.4.8 для работы с изображениями и Tesseract OCR версии 3.0.4 для распознавания символов[1][13].
Обработка построена как конвейер: входное изображение проходит последовательность стадий, каждая из которых реализована отдельным классом[12]. Стадия поиска находит в кадре области, похожие на номерной знак; бинаризация переводит найденную область в чёрно-белое изображение методом Вольфа; анализ отбирает фрагменты размером с символ[12][14]. Кадр предварительно масштабируется, и детектор областей ищет пластину в нескольких масштабах, что позволяет замечать знаки и с дальних планов[12].
Дальше конвейер определяет края и углы пластины, выравнивает её геометрию — переводит снимок под углом в вид строго спереди, — и изолирует отдельные символы[12]. Стадия оптического распознавания (OCR) для каждого символа выдаёт несколько вариантов буквы или цифры с оценками уверенности, а постобработка собирает из них упорядоченный список номеров-кандидатов[12]. Типовой ответ утилиты — десять кандидатов с процентами уверенности и временем обработки порядка десятков миллисекунд на кадр[1]. В примере из руководства проекта строка результата содержит общее время обработки 58,19 мс и десять кандидатов[1]. Уверенность убывает от 88,9 у варианта PE3R2X до 61,5 у P63R2; далее следуют PE32X, PE3R2 и другие варианты, отличающиеся одиночными символами[1]. Кандидаты отличаются одиночными символами: распознавание сообщает о неоднозначности вместо одного «уверенного» ответа, и решение о верном номере принимает вызывающая программа[12]. Координаты углов пластины возвращаются вместе с результатом, что позволяет отрисовать рамку поверх исходного кадра[12].
На постобработке знание о формате пластины работает особенно заметно. Ключ шаблона ограничивает допустимую последовательность символов конкретным штатом или страной, и невозможные комбинации отсекаются ещё до выдачи[1]. По умолчанию утилита возвращает десять кандидатов и умеет позиционироваться в видеофайле по миллисекундам[1]. Экспериментальный режим определения региона пытается угадать место регистрации по рисунку самой пластины[1]. Отбраковка невозможных комбинаций снижает число ложных срабатываний, о которых сообщалось в ранних версиях проекта[6]. Устойчивость стадии поиска областей при этом остаётся узким местом классических конвейеров: детекторы вроде каскада Хаара находят пластины только при близком к фронтальному ракурсу и ровном освещении, что подтверждается и русскоязычными практическими работами[14].
Стадии конвейера опираются на классические приёмы обработки изображений: адаптивная пороговая обработка готовит бинарный силуэт, морфологические операции объединяют фрагменты в строки, а оценка искажений позволяет выпрямить пластину перед распознаванием[13][14]. Подобные схемы подробно описаны в учебной литературе по OpenCV и остаются наглядным способом объяснения принципов работы распознавания[13].
Такая схема соответствует классическому представлению задачи, сложившемуся до распространения глубоких нейронных сетей: обзорные работы описывали три этапа — локализацию пластины, сегментацию символов и их распознавание[3]. Позже исследователи показали, что на кадрах со сложными ракурсами и освещением сквозные нейронные сети превосходят классический конвейер, поэтому научные системы перешли к детекторам и распознавателям на свёрточных сетях[15][4]. Коммерческая ветвь OpenALPR впитала эти улучшения: обновление 2019 года ускорило работу и снизило число ложных чтений дорожных знаков и билбордов[11].
Поддерживаемые платформы
Библиотека компилируется под Linux, Windows и macOS; для Windows распространяются готовые сборки со страницы выпусков, а в Ubuntu библиотека ставится из репозитория четырьмя пакетами, включая демон и средства разработки[1][6]. Исходная открытость и умеренные требования к ресурсам сделали проект популярным на одноплатных компьютерах: конвейер без нейросетей укладывается в вычислительные возможности Raspberry Pi, что описано и в русскоязычной практике сборки распознавателя на этой плате[16].
Для развёртывания в контейнерах подготовлен Docker-образ: инструкции в репозитории собирают образ прямо из исходников, после чего распознавание вызывается одной командой с подключённым каталогом с изображениями[1]. Для мобильных систем сообщество поддерживало переносы под Android, iOS и платформу Xamarin, а также обёртку для React Native[1]. Для Android выпускался пример приложения, показывающий вызов библиотеки из кода, а сборочные руководства для каждой системы сопровождались проверенными версиями зависимостей[7]. Работа с видеонаблюдением ведётся и без мобильных переносов: демон принимает потоки с сетевых камер, а агент для камер Axis Communications выпускался в коммерческой линейке[1][2].
Сборка из исходников требует заранее собранных OpenCV и Tesseract указанных версий, поэтапные инструкции сведены в вики проекта[7]. Теоретическую основу стадий конвейера — фильтрацию, морфологию и методы сегментации — излагают учебники по компьютерному зрению[17], а приёмы практической сборки таких конвейеров на OpenCV разобраны в сборниках проектов[18].
Применение
Первый круг задач — контроль транспорта в замкнутых пространствах: автоматическое открытие шлагбаумов на парковках и закрытых территориях, учёт времени стоянки, фиксация въездов и выездов[1][16]. Тот же класс задач закрывает автоматизация частных территорий и даже сервисы придорожного общепита — в списке сценариев компании значатся и автомойки, и рестораны быстрого обслуживания, где номер идентифицирует постоянного клиента[2]. Второй — охрана и правоприменение: сверка проезжающих номеров со списками розыска, фиксация транзита через контрольные точки; именно такой сценарий показал австралийский эксперимент 2017 года, где открытая библиотека работала поверх записей камер города[5][9]. В коммерческой платформе распознанные номера передаются в центральный сервис в реальном времени, который сигнализирует оператору о совпадении со списком[2].
Третий круг — городская и транспортная аналитика: партнёрство с Nokia принесло OpenALPR в предложения для «умных» городов, где данные с камер соединяются с системами управления движением[10]. Коммерческая линейка Rekor закрывает электронный сбор платы за проезд, логистику и работу дилерских площадок[2]. В научной литературе тот же класс систем описан как элемент интеллектуальных транспортных систем: от контроля платных дорог до оценки потоков; отдельные исследования применяют распознавание номеров для оценки загрузки улиц по записям камер[3][19].
Для интеграторов проект предлагает три пути подключения: встраивание библиотеки через привязки, работу через демон с очередью кадров и обращение к облачному интерфейсу, где распознавание выполняется на серверах компании[1][8]. Сопоставляются и условия поставки: открытая версия бесплатна, но требует самостоятельной сборки и настройки, тогда как коммерческие сервисы продаются подпиской с готовой инфраструктурой[8][2]. Материнская компания описывает своё направление как поставку систем распознавания транспорта для безопасности, парковок и дорожной инфраструктуры[20].
Русскоязычные практические работы описывают сборку распознавания под местные форматы: применение детектора Хаара для поиска области пластины на кадре[14] и настройку конвейера под российские знаки средствами Python и OpenCV[16]. Опыт таких работ подтверждает общий вывод обзоров: конвейерные методы дают быстрый старт, но требуют доводки под конкретную страну и условия съёмки[3][4].
Сравнение с другими системами
Открытая и коммерческая версии различаются не только лицензией. Локальная библиотека работает на собственном оборудовании пользователя и не зависит от связи, но уступает облачному сервису на трудных кадрах: в эксперименте Брауна облачная версия уверенно читала пластины, которые открытая версия не находила даже как объект[9]. Облачный сервис, в свою очередь, требует передачи изображений наружу и подписки, что ограничивает его применение в закрытых контурах[9][2].
Научные системы последних лет строятся иначе: единая нейронная сеть выполняет и поиск пластины, и чтение символов, минуя отдельную сегментацию. В работе Силвы и Юнга такой распознаватель показал устойчивость на кадрах со случайными ракурсами, бликами и размытием, где классические конвейеры теряют символы[15]. Систематический обзор 2021 года относит открытые реализации, включая OpenALPR, к классическим методам и отмечает их чувствительность к качеству входного изображения[4]. При этом классический подход сохраняет преимущество в объёме вычислений: он работает без графических ускорителей, что критично для встраиваемых постов и недорогих камер[1][21].
Обновление коммерческой ветви 2019 года сократило часть этого разрыва внутри самой линейки: скорость на центральных процессорах выросла до двух раз, снизилось потребление памяти на графических ускорителях, а точность на открытом бенчмарке американских пластин достигла 99,02 %[11]. Научные распознаватели при этом продолжили улучшаться на открытых наборах данных, и на кадрах с произвольными ракурсами гибкие нейронные схемы сохраняют преимущество[19].
Критика и ограничения
Системы распознавания номеров создают базы передвижений транспортных средств, и именно с этим связана основная критика класса. Эксперимент Брауна показал, что мониторинг улиц под силу одному человеку с ноутбуком, — наблюдатели указывали, что такие возможности стирают границу между контролем нарушений и слежением за всеми автомобилями подряд[5][9]. Для операторов это оборачивается обязанностью хранить и защищать журналы проездов, а для разработчиков — необходимостью оценивать правомерность обработки в каждой юрисдикции[5]. В правоприменении к тому же нужен контроль ошибок. Обзорные работы фиксируют снижение точности на грязных и повреждённых пластинах, при слабом освещении и малых углах между камерой и номером. Поэтому чтение требует проверки человеком в ответственных процедурах[4][19]. Обсуждались и ошибочные срабатывания: неверное чтение одного символа превращает номер в другой, поэтому критичные применения требуют подтверждения оператором[4].
Технические ограничения открытой версии следуют из её возраста. Последний открытый релиз вышел в июле 2016 года, и накопленные с тех пор улучшения — ускорение, новые модели, исправления — оставались в коммерческих продуктах[6][11]. Лицензия Affero GPLv3 обязывает открывать исходный код служб, построенных на библиотеке, что устраивает не всех разработчиков; для них предлагалась платная лицензия[1]. Спорной остаётся и сфера действия лицензии: требование открыть код распространяется на службы, доступные по сети, что шире классической GPL и отпугивает часть компаний[1]. Наконец, конфигурации стран охватывают не все форматы: работа с российскими пластинами требует собственной настройки и, по отзывам практиков, открытая версия с ней справляется заметно хуже, чем с американскими и европейскими[16][4].
Отдельный пласт вопросов связан с обучающими данными: для улучшения распознавания проект собирал снимки пластин через открытый сервер загрузки, а коллекции изображений транспортных средств с привязкой ко времени и месту сами по себе требуют осторожного обращения[1][4]. Обзоры подчёркивают, что качество наборов данных напрямую определяет точность обученных на них систем, поэтому происхождение и состав таких коллекций важны не меньше алгоритмов[4].
Примечания
- ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Automatic License Plate Recognition library (англ.). GitHub. Дата обращения: 16 октября 2026.
- ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 About Us - OpenALPR, a Rekor Solutions Suite (англ.). Rekor. Дата обращения: 16 октября 2026.
- ↑ 1 2 3 4 5 Anagnostopoulos C., Anagnostopoulos I., Psoroulas I., Loumos V., Kayafas E. License Plate Recognition From Still Images and Video Sequences: A Survey (англ.) // IEEE Transactions on Intelligent Transportation Systems. — 2008. — Vol. 9, no. 3. — P. 377—391. — doi:10.1109/tits.2008.922938.
- ↑ 1 2 3 4 5 6 7 8 9 Lubna M. M., Mufti M. R., Shah S. J. H. Automatic Number Plate Recognition: A Detailed Survey of Relevant Algorithms (англ.) // Sensors. — 2021. — Vol. 21, no. 9. — doi:10.3390/s21093028.
- ↑ 1 2 3 4 5 Brown T. How I replicated an $86 million project in 57 lines of code (англ.). freeCodeCamp (28 августа 2017). Дата обращения: 16 октября 2026.
- ↑ 1 2 3 4 5 6 7 Releases · openalpr/openalpr (англ.). GitHub. Дата обращения: 16 октября 2026.
- ↑ 1 2 3 openalpr/openalpr Wiki (англ.). GitHub. Дата обращения: 16 октября 2026.
- ↑ 1 2 3 4 5 OpenALPR - Automatic License Plate Recognition (англ.). OpenALPR. Дата обращения: 16 октября 2026.
- ↑ 1 2 3 4 5 Brown T. Remember the $86 million license plate scanner I replicated? I caught someone with it. (англ.). freeCodeCamp (24 октября 2017). Дата обращения: 16 октября 2026.
- ↑ 1 2 Rekor Systems Selected by Nokia to Provide Automatic License Plate Reader Software as Part of Nokia’s Analytics Solutions (англ.). GlobeNewswire (26 июня 2019). Дата обращения: 16 октября 2026.
- ↑ 1 2 3 4 Rekor Announces Upgrade to Industry Leading OpenALPR Vehicle Recognition Software (англ.). Rekor (10 июля 2019). Дата обращения: 16 октября 2026.
- ↑ 1 2 3 4 5 6 7 8 OpenALPR Design (англ.). GitHub. Дата обращения: 16 октября 2026.
- ↑ 1 2 3 Kaehler A., Bradski G. Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library. — O'Reilly Media, 2017. — ISBN 978-1-4919-3799-0.
- ↑ 1 2 3 4 Саверский В. О. Использование детектора Хаара для распознавания автомобильных номеров // StudNet. — 2020. — № 4.
- ↑ 1 2 Silva S., Jung C. License Plate Detection and Recognition in Unconstrained Scenarios (англ.) // Proceedings of the European Conference on Computer Vision (ECCV). — 2018. — P. 593—609. — doi:10.1007/978-3-030-01258-8_36.
- ↑ 1 2 3 4 Горбенко А. Ю. Разработка приложения для распознавания текста автомобильного номера // Science Time. — 2016. — № 11 (35).
- ↑ Szeliski R. Computer Vision: Algorithms and Applications. — Springer, 2010. — ISBN 978-1-84882-935-0.
- ↑ Shilkrot R., Millán Escrivá D. Mastering OpenCV 4. — Packt Publishing, 2018. — ISBN 978-1-78953-357-6.
- ↑ 1 2 3 Silva S., Jung C. A Flexible Approach for Automatic License Plate Recognition in Unconstrained Scenarios (англ.) // IEEE Transactions on Intelligent Transportation Systems. — 2022. — Vol. 23, no. 6. — P. 5693—5703. — doi:10.1109/tits.2021.3055946.
- ↑ Rekor - Delivering Revolutionary Roadway Intelligence (англ.). Rekor. Дата обращения: 16 октября 2026.
- ↑ Baggio D. L., Emami S., Escrivá D. M. и др. Mastering OpenCV with Practical Computer Vision Projects. — Packt Publishing, 2012. — ISBN 978-1-84951-782-9.
Литература
- Горбенко А. Ю. Разработка приложения для распознавания текста автомобильного номера // Science Time. — 2016. — № 11 (35).
- Саверский В. О. Использование детектора Хаара для распознавания автомобильных номеров // StudNet. — 2020. — № 4.
- Anagnostopoulos C., Anagnostopoulos I., Psoroulas I., Loumos V., Kayafas E. License Plate Recognition From Still Images and Video Sequences: A Survey (англ.) // IEEE Transactions on Intelligent Transportation Systems. — 2008. — Vol. 9, no. 3. — P. 377—391. — doi:10.1109/tits.2008.922938.
- Baggio D. L., Emami S., Escrivá D. M. и др. Mastering OpenCV with Practical Computer Vision Projects. — Packt Publishing, 2012. — ISBN 978-1-84951-782-9.
- Kaehler A., Bradski G. Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library. — O'Reilly Media, 2017. — ISBN 978-1-4919-3799-0.
- Lubna M. M., Mufti M. R., Shah S. J. H. Automatic Number Plate Recognition: A Detailed Survey of Relevant Algorithms (англ.) // Sensors. — 2021. — Vol. 21, no. 9. — doi:10.3390/s21093028.
- Shilkrot R., Millán Escrivá D. Mastering OpenCV 4. — Packt Publishing, 2018. — ISBN 978-1-78953-357-6.
- Silva S., Jung C. License Plate Detection and Recognition in Unconstrained Scenarios (англ.) // Proceedings of the European Conference on Computer Vision (ECCV). — 2018. — P. 593—609. — doi:10.1007/978-3-030-01258-8_36.
- Silva S., Jung C. A Flexible Approach for Automatic License Plate Recognition in Unconstrained Scenarios (англ.) // IEEE Transactions on Intelligent Transportation Systems. — 2022. — Vol. 23, no. 6. — P. 5693—5703. — doi:10.1109/tits.2021.3055946.
- Szeliski R. Computer Vision: Algorithms and Applications. — Springer, 2010. — ISBN 978-1-84882-935-0.