API распознавания номерных знаков (ALPR / ANPR) Online
По сравнению с V1: новые параметры regions, camera_id, timestamp, config, threshold, mode
Распознавание номерных знаков на фото транспортного средства. Отправьте POST-запросом одно изображение (JPEG, PNG, WebP, BMP или TIFF, макс. 8 MB): как JSON-тело с image_url или image_base64, как загрузку multipart/form-data в поле "image" или как сырые байты с заголовком Content-Type image/*. Для каждого найденного номера возвращаются текст, оценка 0-1, альтернативные варианты прочтения, рамка номера в пикселях и оценка обнаружения. Движок — наш собственный детектор и считыватель номерных знаков, настроенный на европейские грузовики и автобусы. Изображения обрабатываются в памяти и никогда не сохраняются. image_url должен быть публичным адресом http(s); частные и внутренние адреса, а также перенаправления на них отклоняются, а загрузка прерывается через 10 секунд.
POST https://nakordoni.eu/api/v4/data/plate-recognition
— класс квоты: heavy
| Параметр | Описание |
|---|---|
image_url | (JSON-тело) Публичный URL изображения http(s). Макс. 8 MB, макс. 3 перенаправления, лимит загрузки 10 s. |
image_base64 | (JSON-тело) Изображение в формате base64 (префикс data:image/...;base64, допускается). Передавайте image_url или image_base64, но не оба сразу. |
regions | Необязательно. Страны, которые вы ожидаете, как коды ISO 3166-1 alpha-2: JSON-массив ["PL","DE"] или строка через запятую "PL,DE" (поле multipart или параметр запроса). До 10. Определение страны и порядок чтения смещаются в сторону этих стран: когда лучшее чтение не соответствует формату ни одной указанной страны, а другой кандидат с оценкой не более чем на 0.15 ниже соответствует, этот кандидат становится номером. Знак, не соответствующий ни одной указанной стране, сохраняет обычный ответ. |
camera_id | Необязательно. Идентификатор вашей камеры или шлагбаума, до 128 символов. Возвращается без изменений в data.camera_id. Не хранится дольше обычного журнала запросов. |
timestamp | Необязательно. Время съёмки в вашем формате (например, 2026-10-27T14:05:00Z), до 64 символов. Возвращается без изменений в data.timestamp. Не хранится дольше обычного журнала запросов. |
config | Необязательно. JSON-объект {"threshold": 0-1, "mode": "fast"|"full"}. В форме multipart или в строке запроса отправьте его как JSON-строку или используйте поля threshold и mode. |
threshold | Необязательно, то же, что config.threshold. Результаты с оценкой ниже этого значения (0-1) отбрасываются. Если не осталось ни одного, ответ — 404 no_plate_detected. |
mode | Необязательно, то же, что config.mode. full (по умолчанию) выполняет распознавание номеров и обнаружение транспортных средств. fast пропускает обнаружение транспортных средств ради скорости, как у v2: region по-прежнему заполняется, vehicle — null. |
Поля ответа — внутри объекта data в конверте ответа. [] обозначает список, поэтому data.items[].name — это поле name каждого элемента. Поле бывает null, отсутствует или пустой список, если значения у нас нет, — заглушки мы не подставляем.
| Поле | Описание |
|---|---|
data.success | true, если прочитан хотя бы один номер; data.message сообщает, сколько именно. |
data.processing_time | Время, потраченное на запрос, в миллисекундах (загрузка, распознавание номера и обнаружение транспортного средства). v4 работает дольше v2 из-за обнаружения транспортного средства, обычно 0.5-1.5 s на изображение. С config.mode=fast обнаружения транспортного средства нет, и время близко к v2. |
data.camera_id | Отправленный вами camera_id без изменений. Есть только если вы его отправили. |
data.timestamp | Отправленный вами timestamp без изменений (строка остаётся строкой, число — числом). Есть только если вы его отправили. |
data.results[] | Один элемент на каждый номер, сначала с наивысшей оценкой обнаружения. |
data.results[].plate | Текст номера в верхнем регистре, только буквы A-Z и цифры (без пробелов и дефисов). |
data.results[].score | Достоверность прочтения 0-1 (среднее значение достоверности отдельных символов). |
data.results[].candidates[] | До 5 вариантов прочтения {plate, score}, лучший первым; первый вариант — это номер. |
data.results[].region | {code, score}: code — это страна номера по ISO 3166-1 alpha-2 (например, UA, PL, RO), определённая по формату номера. score 0-1 — достоверность прочтения, умноженная на специфичность формата; если один и тот же формат используется в нескольких странах (например, LT, MD и HU имеют общий ABC123), оценка делится между ними и является низкой. null, если текст не соответствует ни одному известному формату. Охвачены: UA, BG, BY, RO, ES, CZ, BE, EE, HU, TR, PL, SK, LV, LT, MD, IT, FR, RS, DE. |
data.results[].box | Положение номера в пикселях: xmin, ymin, xmax, ymax. |
data.results[].dscore | Достоверность обнаружения номера 0-1. |
data.results[].vehicle | {type, score, box}: транспортное средство, которое несёт знак. type — это car, bus, truck или motorcycle; score — достоверность обнаружения 0-1; box — положение транспортного средства в пикселях (xmin, ymin, xmax, ymax). Туристические автобусы, снятые спереди, а также микроавтобусы и фургоны могут получить тип truck (в детекторе нет класса фургона). null, если ни одно обнаруженное транспортное средство не содержит знак, и всегда null с config.mode=fast. |
error.code | 400: image_required, bad_json, bad_base64, one_image_only, bad_image_url, image_url_not_allowed, image_url_fetch_failed, image_url_timeout, invalid_image, unsupported_image_type, unsupported_content_type, upload_failed, bad_regions, bad_camera_id, bad_timestamp, bad_config, bad_threshold, bad_mode. 404: no_plate_detected (также когда config.threshold не оставляет результатов). 413: payload_too_large. 500: engine_error. |
curl -X POST "https://nakordoni.eu/api/v4/data/plate-recognition" \
-H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://nakordoni.eu/img/developers/plate-recognition-example-bus.jpg",
"regions": [
"UA"
],
"camera_id": "depot-gate-1",
"timestamp": "2026-10-27T14:05:00Z",
"config": {
"threshold": 0.8
}
}'
Распознавание номерных знаков (ANPR / ALPR) для европейских транспортных средств
Plate Image Recognition API — это сервис распознавания номерных знаков (LPR): отправьте фото и получите текст номера в JSON. Это наш собственный движок ANPR / ALPR, настроенный на грузовиках и автобусах на пограничных переходах и в автобусных депо; он также читает номера легковых автомобилей и мотоциклов.
Версия v4 добавляет страну номерного знака и тип транспортного средства (car, bus, truck или motorcycle). Она также принимает необязательные опции запроса: regions — чтобы сместить результат в сторону ожидаемых стран; camera_id и timestamp, которые возвращаются в ответе; порог оценки; и режим fast.
GDPR по замыслу: API размещено в ЕС, а каждое изображение обрабатывается только в памяти и никогда не сохраняется. Ни один сторонний сервис компьютерного зрения не видит ваши изображения.
Интеграции: Home Assistant
Наша открытая интеграция с Home Assistant (лицензия MIT, установка через HACS) читает номерные знаки с камер вашего Home Assistant. Она даёт сенсор и событие для каждого номера, со страной знака и типом транспортного средства. Она поддерживает Frigate: по событию транспортного средства читает снимок и записывает номер обратно во Frigate как sub-label. Вход работает через OAuth, поэтому каждый пользователь получает собственный бесплатный ключ.
Обновлено