Kennzeichenerkennung API (ALPR / ANPR) Online
Im Vergleich zu V1: neue Parameter regions, camera_id, timestamp, config, threshold, mode
Liest die Kennzeichen auf einem Foto eines Fahrzeugs. Senden Sie per POST ein Bild (JPEG, PNG, WebP, BMP oder TIFF, max. 8 MB) als JSON-Body mit image_url oder image_base64, als multipart/form-data-Upload im Feld "image" oder als Rohbytes mit einem Content-Type image/*. Jedes gefundene Kennzeichen wird mit Text, einem Score von 0-1, alternativen Lesarten, dem Kennzeichenrahmen in Pixeln und dem Erkennungs-Score zurückgegeben. Die Engine ist unser eigener Kennzeichen-Detektor und -Leser, abgestimmt auf europäische Lkw und Busse. Bilder werden im Arbeitsspeicher verarbeitet und nie gespeichert. image_url muss eine öffentliche http(s)-Adresse sein; private und interne Adressen sowie Weiterleitungen dorthin werden abgelehnt, und der Download wird nach 10 Sekunden abgebrochen.
POST https://nakordoni.eu/api/v4/data/plate-recognition
— Kontingentklasse: heavy
| Parameter | Beschreibung |
|---|---|
image_url | (JSON-Body) Öffentliche http(s)-URL des Bildes. Max. 8 MB, max. 3 Weiterleitungen, Download-Limit 10 s. |
image_base64 | (JSON-Body) Das Bild als Base64 (ein Präfix data:image/...;base64, ist erlaubt). Senden Sie image_url oder image_base64, nicht beides. |
regions | Optional. Länder, die Sie erwarten, als ISO-3166-1-alpha-2-Codes: ein JSON-Array ["PL","DE"] oder ein kommagetrennter String "PL,DE" (Multipart-Feld oder Query-Parameter). Bis zu 10. Die Länderschätzung und die Lesereihenfolge werden zu diesen Ländern hin verschoben: Passt die beste Lesung zu keinem Format der gelisteten Länder, ein anderer Kandidat mit höchstens 0.15 niedrigerem Score aber schon, wird dieser Kandidat zum Kennzeichen. Ein Kennzeichen, das zu keinem gelisteten Land passt, behält seine normale Antwort. |
camera_id | Optional. Ihre Kamera- oder Tor-ID, bis zu 128 Zeichen. Wird unverändert in data.camera_id zurückgegeben. Wird nicht über das normale Anfrageprotokoll hinaus gespeichert. |
timestamp | Optional. Der Aufnahmezeitpunkt in Ihrem eigenen Format (zum Beispiel 2026-10-27T14:05:00Z), bis zu 64 Zeichen. Wird unverändert in data.timestamp zurückgegeben. Wird nicht über das normale Anfrageprotokoll hinaus gespeichert. |
config | Optional. JSON-Objekt {"threshold": 0-1, "mode": "fast"|"full"}. In einem Multipart-Formular oder einem Query-String senden Sie es als JSON-String oder nutzen die Felder threshold und mode. |
threshold | Optional, wie config.threshold. Ergebnisse mit einem Score unter diesem Wert (0-1) werden weggelassen. Bleibt keines übrig, lautet die Antwort 404 no_plate_detected. |
mode | Optional, wie config.mode. full (Standard) führt Kennzeichenerkennung und Fahrzeugerkennung aus. fast überspringt die Fahrzeugerkennung für v2-ähnliche Geschwindigkeit: region wird weiterhin gefüllt, vehicle ist null. |
Antwortfelder — innerhalb des data-Objekts im Antwortumschlag. [] steht für eine Liste, data.items[].name ist also das Feld name jedes Elements. Ein Feld ist null, fehlt oder ist eine leere Liste, wenn wir keinen Wert dafür haben — nie ein Platzhalter.
| Feld | Beschreibung |
|---|---|
data.success | true, wenn mindestens ein Kennzeichen gelesen wurde; data.message gibt die Anzahl an. |
data.processing_time | Für die Anfrage aufgewendete Zeit in Millisekunden (Download, Kennzeichenerkennung und Fahrzeugerkennung). v4 braucht wegen der Fahrzeugerkennung länger als v2, typischerweise 0.5-1.5 s pro Bild. Mit config.mode=fast entfällt die Fahrzeugerkennung, und die Zeit liegt nahe bei v2. |
data.camera_id | Die von Ihnen gesendete camera_id, unverändert. Nur vorhanden, wenn Sie eine gesendet haben. |
data.timestamp | Der von Ihnen gesendete timestamp, unverändert (ein String bleibt ein String, eine Zahl bleibt eine Zahl). Nur vorhanden, wenn Sie einen gesendet haben. |
data.results[] | Ein Eintrag pro Kennzeichen, der höchste Erkennungs-Score zuerst. |
data.results[].plate | Kennzeichentext in Großbuchstaben, nur Buchstaben A-Z und Ziffern (keine Leerzeichen oder Bindestriche). |
data.results[].score | Lesesicherheit 0-1 (Mittelwert der Sicherheiten der einzelnen Zeichen). |
data.results[].candidates[] | Bis zu 5 Lesarten {plate, score}, die beste zuerst; die erste ist das Kennzeichen. |
data.results[].region | {code, score}: code ist das Land des Kennzeichens als ISO 3166-1 alpha-2 (zum Beispiel UA, PL, RO), abgelesen aus dem Kennzeichenformat. score 0-1 ist die Lesesicherheit multipliziert mit der Eindeutigkeit des Formats; wird dasselbe Format in mehreren Ländern verwendet (zum Beispiel teilen LT, MD und HU ABC123), wird der Score darauf aufgeteilt und ist niedrig. null, wenn der Text keinem bekannten Format entspricht. Abgedeckt: UA, BG, BY, RO, ES, CZ, BE, EE, HU, TR, PL, SK, LV, LT, MD, IT, FR, RS, DE. |
data.results[].box | Position des Kennzeichens in Pixeln: xmin, ymin, xmax, ymax. |
data.results[].dscore | Erkennungssicherheit des Kennzeichens 0-1. |
data.results[].vehicle | {type, score, box}: das Fahrzeug, das das Kennzeichen trägt. type ist car, bus, truck oder motorcycle; score ist die Erkennungssicherheit 0-1; box ist die Fahrzeugposition in Pixeln (xmin, ymin, xmax, ymax). Reisebusse von vorne sowie Kleinbusse oder Transporter können als truck typisiert werden (der Detektor hat keine Transporter-Klasse). null, wenn kein erkanntes Fahrzeug das Kennzeichen enthält, und immer null mit 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 (auch wenn config.threshold kein Ergebnis übrig lässt). 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
}
}'
Kennzeichenerkennung (ANPR / ALPR) für europäische Fahrzeuge
Die Plate Image Recognition API ist ein Dienst zur Kennzeichenerkennung (LPR): Senden Sie ein Foto und erhalten Sie den Kennzeichentext als JSON zurück. Es ist unsere eigene ANPR- / ALPR-Engine, abgestimmt auf EU-Lkw und Busse an Grenzübergängen und in Busdepots; sie liest auch Kennzeichen von Pkw und Motorrädern.
Version v4 ergänzt das Land des Kennzeichens und den Fahrzeugtyp (car, bus, truck oder motorcycle). Sie nimmt außerdem optionale Anfrageoptionen an: regions, um das Ergebnis zu den erwarteten Ländern hin zu verschieben; camera_id und timestamp, die in der Antwort zurückkommen; einen Score-Schwellenwert; und einen fast-Modus.
DSGVO by Design: Die API wird in der EU gehostet, und jedes Bild wird nur im Arbeitsspeicher verarbeitet und nie gespeichert. Kein Bilderkennungsdienst eines Dritten sieht Ihre Bilder.
Integrationen: Home Assistant
Unsere Open-Source-Integration für Home Assistant (MIT-Lizenz, installierbar mit HACS) liest Kennzeichen von Ihren Home-Assistant-Kameras. Sie liefert für jedes Kennzeichen einen Sensor und ein Ereignis, mit dem Land des Kennzeichens und dem Fahrzeugtyp. Sie unterstützt Frigate: Bei einem Fahrzeugereignis liest sie den Snapshot und schreibt das Kennzeichen als Sub-Label zurück nach Frigate. Die Anmeldung läuft über OAuth, sodass jeder Nutzer seinen eigenen kostenlosen Schlüssel erhält.
Aktualisiert