API de reconnaissance de plaques d'immatriculation (ALPR / ANPR) Online
Par rapport à V1 : nouveaux paramètres regions, camera_id, timestamp, config, threshold, mode
Lit les plaques d'immatriculation sur une photo de véhicule. Envoyez en POST une image (JPEG, PNG, WebP, BMP ou TIFF, 8 Mo max.) dans un corps JSON avec image_url ou image_base64, en téléversement multipart/form-data dans le champ "image", ou en octets bruts avec un Content-Type image/*. Chaque plaque trouvée est renvoyée avec son texte, un score de 0 à 1, des lectures alternatives, le cadre de la plaque en pixels et le score de détection. Le moteur est notre propre détecteur et lecteur de plaques, optimisé pour les camions et autobus européens. Les images sont traitées en mémoire et jamais stockées. image_url doit être une adresse http(s) publique ; les adresses privées et internes, ainsi que les redirections vers celles-ci, sont refusées, et le téléchargement est interrompu après 10 secondes.
POST https://nakordoni.eu/api/v4/data/plate-recognition
— classe de quota: heavy
| Paramètre | Description |
|---|---|
image_url | (corps JSON) URL http(s) publique de l'image. 8 Mo max., 3 redirections max., limite de téléchargement de 10 s. |
image_base64 | (corps JSON) L'image en base64 (un préfixe data:image/...;base64, est autorisé). Envoyez image_url ou image_base64, pas les deux. |
regions | Facultatif. Les pays attendus, sous forme de codes ISO 3166-1 alpha-2 : un tableau JSON ["PL","DE"] ou une chaîne séparée par des virgules "PL,DE" (champ multipart ou paramètre de requête). Jusqu'à 10. L'estimation de la région et l'ordre de lecture favorisent ces pays : quand la meilleure lecture ne correspond au format d'aucun pays listé, mais qu'un autre candidat dont le score est inférieur d'au plus 0.15 y correspond, ce candidat devient la plaque. Une plaque qui ne correspond à aucun pays listé garde sa réponse normale. |
camera_id | Facultatif. L'ID de votre caméra ou de votre barrière, jusqu'à 128 caractères. Renvoyé tel quel dans data.camera_id. Non conservé au-delà du journal normal des requêtes. |
timestamp | Facultatif. L'heure de capture dans votre propre format (par exemple 2026-10-27T14:05:00Z), jusqu'à 64 caractères. Renvoyée telle quelle dans data.timestamp. Non conservée au-delà du journal normal des requêtes. |
config | Facultatif. Objet JSON {"threshold": 0-1, "mode": "fast"|"full"}. Dans un formulaire multipart ou une query string, envoyez-le sous forme de chaîne JSON, ou utilisez les champs threshold et mode. |
threshold | Facultatif, identique à config.threshold. Les résultats dont le score est inférieur à cette valeur (0-1) sont exclus. S'il n'en reste aucun, la réponse est 404 no_plate_detected. |
mode | Facultatif, identique à config.mode. full (par défaut) lance la reconnaissance de plaque et la détection de véhicule. fast saute la détection de véhicule pour une vitesse proche de v2 : region reste renseigné, vehicle vaut null. |
Champs de la réponse — à l’intérieur de l’objet data de l’enveloppe. [] indique une liste : data.items[].name est donc le champ name de chaque élément. Un champ vaut null, est absent ou est une liste vide quand nous n’avons pas de valeur — jamais un espace réservé.
| Champ | Description |
|---|---|
data.success | true lorsqu'au moins une plaque a été lue ; data.message indique combien. |
data.processing_time | Temps passé sur la requête, en millisecondes (téléchargement, reconnaissance de plaque et détection de véhicule). v4 est plus lent que v2 à cause de la détection de véhicule, en général 0.5-1.5 s par image. Avec config.mode=fast, il n'y a pas de détection de véhicule et le temps est proche de v2. |
data.camera_id | Le camera_id que vous avez envoyé, inchangé. Présent seulement si vous en avez envoyé un. |
data.timestamp | Le timestamp que vous avez envoyé, inchangé (une chaîne reste une chaîne, un nombre reste un nombre). Présent seulement si vous en avez envoyé un. |
data.results[] | Une entrée par plaque, celle au score de détection le plus élevé en premier. |
data.results[].plate | Texte de la plaque, en majuscules, lettres A-Z et chiffres uniquement (sans espaces ni tirets). |
data.results[].score | Confiance de lecture de 0 à 1 (moyenne des confiances par caractère). |
data.results[].candidates[] | Jusqu'à 5 lectures {plate, score}, la meilleure en premier ; la première est la plaque. |
data.results[].region | {code, score} : code est le pays de la plaque en ISO 3166-1 alpha-2 (par exemple UA, PL, RO), déterminé à partir du format de la plaque. score de 0 à 1 est la confiance de lecture multipliée par la spécificité du format ; lorsque le même format est utilisé dans plusieurs pays (par exemple LT, MD et HU partagent ABC123), le score est réparti entre eux et reste faible. null lorsque le texte ne correspond à aucun format connu. Pays couverts : UA, BG, BY, RO, ES, CZ, BE, EE, HU, TR, PL, SK, LV, LT, MD, IT, FR, RS, DE. |
data.results[].box | Position de la plaque en pixels : xmin, ymin, xmax, ymax. |
data.results[].dscore | Confiance de détection de la plaque de 0 à 1. |
data.results[].vehicle | {type, score, box} : le véhicule qui porte la plaque. type vaut car, bus, truck ou motorcycle ; score est la confiance de détection 0-1 ; box est la position du véhicule en pixels (xmin, ymin, xmax, ymax). Les autocars vus de face, les minibus et les fourgons peuvent être typés truck (le détecteur n'a pas de classe fourgon). null quand aucun véhicule détecté ne contient la plaque, et toujours null avec 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 (aussi quand config.threshold ne laisse aucun résultat). 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
}
}'
Reconnaissance de plaques d'immatriculation (ANPR / ALPR) pour les véhicules européens
La Plate Image Recognition API est un service de reconnaissance de plaques d'immatriculation (LPR) : envoyez une photo et recevez le texte de la plaque au format JSON. C'est notre propre moteur ANPR / ALPR, adapté aux camions et aux bus de l'UE aux postes frontières et dans les dépôts de bus. Il lit aussi les plaques des voitures et des motos.
La version v4 ajoute le pays de la plaque et le type de véhicule (car, bus, truck ou motorcycle). Elle accepte aussi des options de requête facultatives : regions, pour favoriser les pays attendus ; camera_id et timestamp, qui reviennent dans la réponse ; un seuil de score ; et un mode rapide.
RGPD dès la conception : l'API est hébergée dans l'UE, et chaque image est traitée en mémoire uniquement, sans jamais être stockée. Aucun service de vision tiers ne voit vos images.
Intégrations : Home Assistant
Notre intégration Home Assistant open source (licence MIT, installable avec HACS) lit les plaques d'immatriculation de vos caméras Home Assistant. Elle fournit un capteur et un événement pour chaque plaque, avec le pays de la plaque et le type de véhicule. Elle prend en charge Frigate : lors d'un événement de véhicule, elle lit l'instantané et réécrit la plaque dans Frigate comme sous-étiquette. La connexion utilise OAuth, donc chaque utilisateur obtient sa propre clé gratuite.
Mis à jour