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, тож кожен користувач отримує власний безкоштовний ключ.
Оновлено