Los campos de primer nivel
Las claves de resultado son cadenas
Cada bloque de resultado viene indexado por número de imagen como texto JSON:"0", "1"… La matriz biométrica es body.biometric["0"]["1"], no [0][1]. En lenguajes con tipos, deserialice como Map<String, …>.
"0" vs "0") siempre vale 100: es cada rostro contra sí mismo. Si además envió faceVectors, los vectores continúan la numeración después de las imágenes: 1 imagen + 1 vector ⇒ claves "0" (la imagen) y "1" (el vector).
Referencias medidas con vu_v4 sobre las fotos de prueba del equipo: misma persona ≈ 93–95 · personas distintas ≈ 19. Con las mismas dos fotos, cosine da 78 y euclidean_l2 da 66: nunca compare puntajes de metodologías distintas.
inferenceConfidence cambia de forma
Aparece para cada imagen, siempre, pero con dos formas:
Tipe
code y confidence como opcionales. La correspondencia es fija: 200 = high, 202 = medium, 406 = low.
Qué degrada el veredicto: mascarilla, ojos cerrados, desenfoque, pose no frontal, maquillaje extremo, y —automáticamente— cualquier imagen por debajo de 360 px de lado.
Los 16 atributos de faceFeatures
Cada atributo es un puntaje 0–100 donde más alto = más presente: blurry, eyeglasses, sunglasses, faceMask, leftEyeClosed, rightEyeClosed, mouthOpen, beard, mustache, smiling, heavyMakeup, hat, earrings, necklace, necktie, lipstick. Úselos para guiar al usuario («quitese los lentes de sol»), no como condiciones de identidad.
headPoseEstimation trae la pose en grados: leftRight (guiñada) y upDown (cabeceo). Cero es frontal perfecto; un rostro útil para biometría suele estar dentro de ±15°.
El antispoofing viene anidado y con escala propia
antiSpoofingFace["0"] contiene la respuesta completa del servicio de Antispoofing Facial, anidada tal cual:
spoofing (booleano). No decida por su code ni su confidence internos: tienen la semántica del servicio de antispoofing, no la de Face Analysis.
Particularidades del deserializador
- Los bloques de resultado se indexan por cadena (
"0","1"), no por entero. inferenceConfidencetiene dos formas:codeyconfidenceson opcionales.antiSpoofingFace[i]puede ser un objeto onull.confidencesduplica abiometric: ignórelo, pero no falle si aparece.- Con
faceVectors, la numeración de resultados incluye los vectores a continuación de las imágenes. - Los
500llegan con cuerpo en texto plano, no JSON — ver Errores.
Siguiente: Errores
Códigos de error, los
500 en texto plano, el aborto de lote con imageNumber y qué se reintenta.