OpenALPR

Pause

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].

undefined

Устройство

Комплект открытой версии собирается из ядра на 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].

undefined

Поддерживаемые платформы

Библиотека компилируется под 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].

undefined

Применение

Первый круг задач — контроль транспорта в замкнутых пространствах: автоматическое открытие шлагбаумов на парковках и закрытых территориях, учёт времени стоянки, фиксация въездов и выездов[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].

undefined

Сравнение с другими системами

Открытая и коммерческая версии различаются не только лицензией. Локальная библиотека работает на собственном оборудовании пользователя и не зависит от связи, но уступает облачному сервису на трудных кадрах: в эксперименте Брауна облачная версия уверенно читала пластины, которые открытая версия не находила даже как объект[9]. Облачный сервис, в свою очередь, требует передачи изображений наружу и подписки, что ограничивает его применение в закрытых контурах[9][2].

Научные системы последних лет строятся иначе: единая нейронная сеть выполняет и поиск пластины, и чтение символов, минуя отдельную сегментацию. В работе Силвы и Юнга такой распознаватель показал устойчивость на кадрах со случайными ракурсами, бликами и размытием, где классические конвейеры теряют символы[15]. Систематический обзор 2021 года относит открытые реализации, включая OpenALPR, к классическим методам и отмечает их чувствительность к качеству входного изображения[4]. При этом классический подход сохраняет преимущество в объёме вычислений: он работает без графических ускорителей, что критично для встраиваемых постов и недорогих камер[1][21].

Обновление коммерческой ветви 2019 года сократило часть этого разрыва внутри самой линейки: скорость на центральных процессорах выросла до двух раз, снизилось потребление памяти на графических ускорителях, а точность на открытом бенчмарке американских пластин достигла 99,02 %[11]. Научные распознаватели при этом продолжили улучшаться на открытых наборах данных, и на кадрах с произвольными ракурсами гибкие нейронные схемы сохраняют преимущество[19].

undefined

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

Системы распознавания номеров создают базы передвижений транспортных средств, и именно с этим связана основная критика класса. Эксперимент Брауна показал, что мониторинг улиц под силу одному человеку с ноутбуком, — наблюдатели указывали, что такие возможности стирают границу между контролем нарушений и слежением за всеми автомобилями подряд[5][9]. Для операторов это оборачивается обязанностью хранить и защищать журналы проездов, а для разработчиков — необходимостью оценивать правомерность обработки в каждой юрисдикции[5]. В правоприменении к тому же нужен контроль ошибок. Обзорные работы фиксируют снижение точности на грязных и повреждённых пластинах, при слабом освещении и малых углах между камерой и номером. Поэтому чтение требует проверки человеком в ответственных процедурах[4][19]. Обсуждались и ошибочные срабатывания: неверное чтение одного символа превращает номер в другой, поэтому критичные применения требуют подтверждения оператором[4].

Технические ограничения открытой версии следуют из её возраста. Последний открытый релиз вышел в июле 2016 года, и накопленные с тех пор улучшения — ускорение, новые модели, исправления — оставались в коммерческих продуктах[6][11]. Лицензия Affero GPLv3 обязывает открывать исходный код служб, построенных на библиотеке, что устраивает не всех разработчиков; для них предлагалась платная лицензия[1]. Спорной остаётся и сфера действия лицензии: требование открыть код распространяется на службы, доступные по сети, что шире классической GPL и отпугивает часть компаний[1]. Наконец, конфигурации стран охватывают не все форматы: работа с российскими пластинами требует собственной настройки и, по отзывам практиков, открытая версия с ней справляется заметно хуже, чем с американскими и европейскими[16][4].

Отдельный пласт вопросов связан с обучающими данными: для улучшения распознавания проект собирал снимки пластин через открытый сервер загрузки, а коллекции изображений транспортных средств с привязкой ко времени и месту сами по себе требуют осторожного обращения[1][4]. Обзоры подчёркивают, что качество наборов данных напрямую определяет точность обученных на них систем, поэтому происхождение и состав таких коллекций важны не меньше алгоритмов[4].

undefined

Примечания

  1. ↑ 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.
  2. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 About Us - OpenALPR, a Rekor Solutions Suite (англ.). Rekor. Дата обращения: 16 октября 2026.
  3. ↑ 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.
  4. ↑ 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.
  5. ↑ 1 2 3 4 5 Brown T. How I replicated an $86 million project in 57 lines of code (англ.). freeCodeCamp (28 августа 2017). Дата обращения: 16 октября 2026.
  6. ↑ 1 2 3 4 5 6 7 Releases · openalpr/openalpr (англ.). GitHub. Дата обращения: 16 октября 2026.
  7. ↑ 1 2 3 openalpr/openalpr Wiki (англ.). GitHub. Дата обращения: 16 октября 2026.
  8. ↑ 1 2 3 4 5 OpenALPR - Automatic License Plate Recognition (англ.). OpenALPR. Дата обращения: 16 октября 2026.
  9. ↑ 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.
  10. ↑ 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.
  11. ↑ 1 2 3 4 Rekor Announces Upgrade to Industry Leading OpenALPR Vehicle Recognition Software (англ.). Rekor (10 июля 2019). Дата обращения: 16 октября 2026.
  12. ↑ 1 2 3 4 5 6 7 8 OpenALPR Design (англ.). GitHub. Дата обращения: 16 октября 2026.
  13. ↑ 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.
  14. ↑ 1 2 3 4 Саверский В. О. Использование детектора Хаара для распознавания автомобильных номеров // StudNet. — 2020. — № 4.
  15. ↑ 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.
  16. ↑ 1 2 3 4 Горбенко А. Ю. Разработка приложения для распознавания текста автомобильного номера // Science Time. — 2016. — № 11 (35).
  17. ↑ Szeliski R. Computer Vision: Algorithms and Applications. — Springer, 2010. — ISBN 978-1-84882-935-0.
  18. ↑ Shilkrot R., Millán Escrivá D. Mastering OpenCV 4. — Packt Publishing, 2018. — ISBN 978-1-78953-357-6.
  19. ↑ 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.
  20. ↑ Rekor - Delivering Revolutionary Roadway Intelligence (англ.). Rekor. Дата обращения: 16 октября 2026.
  21. ↑ Baggio D. L., Emami S., Escrivá D. M. и др. Mastering OpenCV with Practical Computer Vision Projects. — Packt Publishing, 2012. — ISBN 978-1-84951-782-9.

Литература

Ссылки

Дополнительно по теме

Pause