API rozpoznawania tablic rejestracyjnych (ALPR / ANPR) Online
W porównaniu z V1: nowe parametry regions, camera_id, timestamp, config, threshold, mode
Odczytuje tablice rejestracyjne ze zdjęcia pojazdu. Wyślij POST-em jeden obraz (JPEG, PNG, WebP, BMP lub TIFF, maks. 8 MB) jako treść JSON z image_url lub image_base64, jako przesyłanie multipart/form-data w polu "image" albo jako surowe bajty z nagłówkiem Content-Type image/*. Każda znaleziona tablica jest zwracana z tekstem, wynikiem 0-1, alternatywnymi odczytami, ramką tablicy w pikselach i wynikiem detekcji. Silnik to nasz własny detektor i czytnik tablic, dostrojony do europejskich ciężarówek i autobusów. Obrazy są przetwarzane w pamięci i nigdy nie są przechowywane. image_url musi być publicznym adresem http(s); adresy prywatne i wewnętrzne oraz przekierowania do nich są odrzucane, a pobieranie jest przerywane po 10 sekundach.
POST https://nakordoni.eu/api/v4/data/plate-recognition
— klasa limitu: heavy
| Parametr | Opis |
|---|---|
image_url | (treść JSON) Publiczny adres URL obrazu http(s). Maks. 8 MB, maks. 3 przekierowania, limit pobierania 10 s. |
image_base64 | (treść JSON) Obraz zakodowany w base64 (prefiks data:image/...;base64, jest dozwolony). Wyślij image_url albo image_base64, nie oba naraz. |
regions | Opcjonalne. Kraje, których się spodziewasz, jako kody ISO 3166-1 alpha-2: tablica JSON ["PL","DE"] lub ciąg rozdzielony przecinkami "PL,DE" (pole multipart lub parametr zapytania). Do 10. Typowanie kraju i kolejność odczytów są przesunięte w stronę tych krajów: gdy najlepszy odczyt nie pasuje do formatu żadnego z podanych krajów, a inny kandydat z wynikiem niższym najwyżej o 0.15 pasuje, ten kandydat staje się tablicą. Tablica, która nie pasuje do żadnego podanego kraju, zachowuje zwykłą odpowiedź. |
camera_id | Opcjonalne. Identyfikator Twojej kamery lub bramy, do 128 znaków. Zwracany bez zmian w data.camera_id. Nie jest przechowywany poza zwykłym logiem żądań. |
timestamp | Opcjonalne. Czas zdjęcia w Twoim formacie (na przykład 2026-10-27T14:05:00Z), do 64 znaków. Zwracany bez zmian w data.timestamp. Nie jest przechowywany poza zwykłym logiem żądań. |
config | Opcjonalne. Obiekt JSON {"threshold": 0-1, "mode": "fast"|"full"}. W formularzu multipart lub w ciągu zapytania wyślij go jako ciąg JSON albo użyj pól threshold i mode. |
threshold | Opcjonalne, tak samo jak config.threshold. Wyniki z wartością score poniżej tej wartości (0-1) są pomijane. Gdy nic nie zostanie, odpowiedź to 404 no_plate_detected. |
mode | Opcjonalne, tak samo jak config.mode. full (domyślnie) wykonuje rozpoznawanie tablic i wykrywanie pojazdów. fast pomija wykrywanie pojazdów dla szybkości zbliżonej do v2: region nadal jest wypełniony, vehicle ma wartość null. |
Pola odpowiedzi — wewnątrz obiektu data w kopercie odpowiedzi. [] oznacza listę, więc data.items[].name to pole name każdego elementu. Pole bywa null, nieobecne lub jest pustą listą, gdy nie mamy wartości — nigdy nie wstawiamy atrapy.
| Pole | Opis |
|---|---|
data.success | true, gdy odczytano co najmniej jedną tablicę; data.message podaje ich liczbę. |
data.processing_time | Czas poświęcony na żądanie w milisekundach (pobranie, rozpoznanie tablicy i wykrywanie pojazdu). v4 trwa dłużej niż v2 z powodu wykrywania pojazdu, zwykle 0.5-1.5 s na obraz. Przy config.mode=fast nie ma wykrywania pojazdu, a czas jest zbliżony do v2. |
data.camera_id | Wysłany przez Ciebie camera_id, bez zmian. Występuje tylko wtedy, gdy go wysłano. |
data.timestamp | Wysłany przez Ciebie timestamp, bez zmian (ciąg pozostaje ciągiem, liczba liczbą). Występuje tylko wtedy, gdy go wysłano. |
data.results[] | Jeden wpis na tablicę, od najwyższego wyniku detekcji. |
data.results[].plate | Tekst tablicy, wielkie litery, wyłącznie litery A-Z i cyfry (bez spacji i myślników). |
data.results[].score | Pewność odczytu 0-1 (średnia pewności poszczególnych znaków). |
data.results[].candidates[] | Do 5 odczytów {plate, score}, najlepszy pierwszy; pierwszy z nich to tablica. |
data.results[].region | {code, score}: code to kraj tablicy według ISO 3166-1 alpha-2 (na przykład UA, PL, RO), odczytany z formatu tablicy. score 0-1 to pewność odczytu pomnożona przez specyficzność formatu; gdy ten sam format jest używany w kilku krajach (na przykład LT, MD i HU mają wspólny ABC123), wynik jest dzielony między nie i jest niski. null, gdy tekst nie pasuje do żadnego znanego formatu. Obsługiwane: UA, BG, BY, RO, ES, CZ, BE, EE, HU, TR, PL, SK, LV, LT, MD, IT, FR, RS, DE. |
data.results[].box | Położenie tablicy w pikselach: xmin, ymin, xmax, ymax. |
data.results[].dscore | Pewność detekcji tablicy 0-1. |
data.results[].vehicle | {type, score, box}: pojazd, który nosi tablicę. type to car, bus, truck lub motorcycle; score to pewność wykrycia 0-1; box to położenie pojazdu w pikselach (xmin, ymin, xmax, ymax). Autokary widziane od przodu oraz minibusy i vany mogą mieć typ truck (detektor nie ma klasy van). null, gdy żaden wykryty pojazd nie zawiera tablicy, i zawsze null przy 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 (także gdy config.threshold nie zostawia żadnego wyniku). 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
}
}'
Rozpoznawanie tablic rejestracyjnych (ANPR / ALPR) dla pojazdów europejskich
Plate Image Recognition API to usługa rozpoznawania tablic rejestracyjnych (LPR): wyślij zdjęcie i otrzymaj tekst numeru rejestracyjnego jako JSON. To nasz własny silnik ANPR / ALPR, dostrojony na ciężarówkach i autobusach na przejściach granicznych i w zajezdniach autobusowych; czyta też tablice samochodów osobowych i motocykli.
Wersja v4 dodaje kraj tablicy i typ pojazdu (car, bus, truck lub motorcycle). Przyjmuje też opcjonalne opcje żądania: regions, aby przesunąć wynik w stronę spodziewanych krajów; camera_id i timestamp, które wracają w odpowiedzi; próg score; oraz tryb fast.
RODO w założeniu: API jest hostowane w UE, a każdy obraz jest przetwarzany tylko w pamięci i nigdy nie jest zapisywany. Żadna zewnętrzna usługa wizyjna nie widzi Twoich obrazów.
Integracje: Home Assistant
Nasza otwartoźródłowa integracja z Home Assistant (licencja MIT, instalacja przez HACS) odczytuje numery rejestracyjne z kamer Twojego Home Assistant. Daje czujnik i zdarzenie dla każdej tablicy, z krajem tablicy i typem pojazdu. Obsługuje Frigate: przy zdarzeniu pojazdu czyta zrzut i zapisuje numer z powrotem we Frigate jako sub-label. Logowanie działa przez OAuth, więc każdy użytkownik dostaje własny darmowy klucz.
Zaktualizowano