API de reconocimiento de matrículas (ALPR / ANPR) Online
En comparación con V1: parámetros nuevos regions, camera_id, timestamp, config, threshold, mode
Lee las matrículas en una foto de un vehículo. Envía por POST una imagen (JPEG, PNG, WebP, BMP o TIFF, máx. 8 MB) como cuerpo JSON con image_url o image_base64, como subida multipart/form-data en el campo «image», o como bytes sin procesar con un Content-Type image/*. Cada matrícula encontrada se devuelve con el texto, una puntuación de 0-1, lecturas alternativas, el recuadro de la matrícula en píxeles y la puntuación de detección. El motor es nuestro propio detector y lector de matrículas, ajustado con camiones y autobuses europeos. Las imágenes se procesan en memoria y nunca se almacenan. image_url debe ser una dirección http(s) pública; se rechazan las direcciones privadas e internas, así como las redirecciones hacia ellas, y la descarga se detiene tras 10 segundos.
POST https://nakordoni.eu/api/v4/data/plate-recognition
— clase de cuota: heavy
| Parámetro | Descripción |
|---|---|
image_url | (Cuerpo JSON) URL http(s) pública de la imagen. Máx. 8 MB, máx. 3 redirecciones, límite de descarga de 10 s. |
image_base64 | (Cuerpo JSON) La imagen en base64 (se admite un prefijo data:image/...;base64,). Envía image_url o image_base64, no ambos. |
regions | Opcional. Los países que espera, como códigos ISO 3166-1 alpha-2: un array JSON ["PL","DE"] o una cadena separada por comas "PL,DE" (campo multipart o parámetro de consulta). Hasta 10. La estimación de la región y el orden de lectura se inclinan hacia estos países: cuando la mejor lectura no coincide con el formato de ningún país indicado, pero otro candidato con una puntuación como máximo 0.15 inferior sí coincide, ese candidato pasa a ser la matrícula. Una matrícula que no coincide con ningún país indicado conserva su respuesta normal. |
camera_id | Opcional. El ID de su cámara o barrera, hasta 128 caracteres. Se devuelve sin cambios en data.camera_id. No se almacena más allá del registro normal de solicitudes. |
timestamp | Opcional. La hora de captura en su propio formato (por ejemplo, 2026-10-27T14:05:00Z), hasta 64 caracteres. Se devuelve sin cambios en data.timestamp. No se almacena más allá del registro normal de solicitudes. |
config | Opcional. Objeto JSON {"threshold": 0-1, "mode": "fast"|"full"}. En un formulario multipart o en una cadena de consulta, envíelo como cadena JSON o use los campos threshold y mode. |
threshold | Opcional, igual que config.threshold. Los resultados con una puntuación inferior a este valor (0-1) se descartan. Si no queda ninguno, la respuesta es 404 no_plate_detected. |
mode | Opcional, igual que config.mode. full (predeterminado) ejecuta el reconocimiento de matrículas y la detección de vehículos. fast omite la detección de vehículos para una velocidad similar a v2: region se rellena igualmente, vehicle es null. |
Campos de la respuesta — dentro del objeto data del sobre de respuesta. [] indica una lista, así que data.items[].name es el campo name de cada elemento. Un campo es null, no aparece o es una lista vacía cuando no tenemos valor: nunca un marcador de posición.
| Campo | Descripción |
|---|---|
data.success | true cuando se ha leído al menos una matrícula; data.message indica cuántas. |
data.processing_time | Tiempo dedicado a la solicitud en milisegundos (descarga, reconocimiento de matrículas y detección de vehículos). v4 tarda más que v2 por la detección de vehículos, normalmente 0.5-1.5 s por imagen. Con config.mode=fast no hay detección de vehículos y el tiempo se acerca al de v2. |
data.camera_id | El camera_id que envió, sin cambios. Solo está presente si envió uno. |
data.timestamp | El timestamp que envió, sin cambios (una cadena sigue siendo cadena, un número sigue siendo número). Solo está presente si envió uno. |
data.results[] | Una entrada por matrícula, primero la de mayor puntuación de detección. |
data.results[].plate | Texto de la matrícula, en mayúsculas, solo letras A-Z y dígitos (sin espacios ni guiones). |
data.results[].score | Confianza de la lectura 0-1 (media de las confianzas de cada carácter). |
data.results[].candidates[] | Hasta 5 lecturas {plate, score}, la mejor primero; la primera es la matrícula. |
data.results[].region | {code, score}: code es el país de la matrícula en ISO 3166-1 alpha-2 (por ejemplo UA, PL, RO), leído a partir del formato de la matrícula. score 0-1 es la confianza de la lectura multiplicada por lo específico que es el formato; cuando el mismo formato se usa en varios países (por ejemplo LT, MD y HU comparten ABC123) la puntuación se reparte entre ellos y es baja. null cuando el texto no coincide con ningún formato conocido. Cubiertos: UA, BG, BY, RO, ES, CZ, BE, EE, HU, TR, PL, SK, LV, LT, MD, IT, FR, RS, DE. |
data.results[].box | Posición de la matrícula en píxeles: xmin, ymin, xmax, ymax. |
data.results[].dscore | Confianza de detección de la matrícula 0-1. |
data.results[].vehicle | {type, score, box}: el vehículo que lleva la matrícula. type es car, bus, truck o motorcycle; score es la confianza de la detección 0-1; box es la posición del vehículo en píxeles (xmin, ymin, xmax, ymax). Los autocares vistos de frente y los minibuses o furgonetas pueden clasificarse como truck (el detector no tiene clase de furgoneta). null cuando ningún vehículo detectado contiene la matrícula, y siempre null con 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 (también cuando config.threshold no deja ningún resultado). 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
}
}'
Reconocimiento de matrículas (ANPR / ALPR) para vehículos europeos
La Plate Image Recognition API es un servicio de reconocimiento de matrículas (LPR): envíe una foto y reciba el texto de la matrícula como JSON. Es nuestro propio motor ANPR / ALPR, ajustado con camiones y autobuses de la UE en pasos fronterizos y cocheras de autobuses, y también lee matrículas de coches y motocicletas.
La versión v4 añade el país de la matrícula y el tipo de vehículo (car, bus, truck o motorcycle). También acepta opciones de solicitud opcionales: regions, para inclinar el resultado hacia los países que espera; camera_id y timestamp, que vuelven en la respuesta; un umbral de puntuación; y un modo fast.
RGPD desde el diseño: la API está alojada en la UE y cada imagen se procesa solo en memoria y nunca se almacena. Ningún servicio de visión de terceros ve sus imágenes.
Integraciones: Home Assistant
Nuestra integración de código abierto para Home Assistant (licencia MIT, instalable con HACS) lee matrículas de sus cámaras de Home Assistant. Le da un sensor y un evento por cada matrícula, con el país de la matrícula y el tipo de vehículo. Es compatible con Frigate: en un evento de vehículo lee la instantánea y escribe la matrícula de vuelta en Frigate como sub-label. El inicio de sesión usa OAuth, así que cada usuario obtiene su propia clave gratuita.
Actualizado