Deteccion de vida y Comparar

API para comparar selfies y realizar una detección de vida en la selfie de 'probe'.

Este servicio te ayuda a comparar una única selfie (llamada "probe") con una colección de selfies (llamada "gallery") para verificar identidades y realizar una detección de vida en la imagen de probe. Es ideal para controlar el acceso a tu aplicación o completar verificaciones de Know Your Customer (KYC) de manera segura.

¡Vamos a desglosarlo paso a paso!

Endpoint

https://api.verifik.co/v2/face-recognition/compare-with-liveness

Qué Hace Esta API Esta API realiza dos tareas clave:

  • Comparación Facial (1 a muchos): Verifica si el rostro en tu selfie de probe coincide con algún rostro en la galería de selfies.

  • Detección de Vida: Asegura que la selfie de probe pertenece a una persona viva (no una foto o video) para prevenir fraudes.

Al utilizar esta API, puedes permitir o denegar el acceso a tu aplicación con confianza, basándote en si la selfie coincide y si proviene de una persona viva.


Cómo Funciona

  1. Envías una selfie (probe) y una galería de selfies a la API.

  2. La API compara el rostro de probe con cada rostro en la galería (comparación 1 a muchos).

  3. También verifica si la selfie de probe muestra a una persona viva mediante detección de vida.

  4. Recibes un resultado con puntajes, lo que te permite decidir si hay una coincidencia y si la persona está viva.

Ideal para:

  • Control de Acceso a Apps: Permite solo a usuarios verificados y vivos ingresar a tu aplicación.

  • KYC (Know Your Customer): Verifica identidades de usuarios para cumplir con regulaciones y mejorar la seguridad.


Mejores Prácticas

  • Seguridad: Mantén tu token de API seguro y usa HTTPS.

  • Calidad de Imagen: Usa selfies claras y bien iluminadas para obtener mejores resultados.

  • Pruebas: Realiza pruebas con diferentes dispositivos (iOS, Android) y tamaños de galería.

  • Umbrales: Comienza con los valores predeterminados de min_score, luego ajusta según falsos positivos/negativos.


Ejemplos

Solución de Problemas

¿Sin coincidencia?

  • Verifica la calidad de la imagen o intenta con el modo ACCURATE.

  • Asegúrate de que la galería contenga los rostros correctos.

¿Falla la detección de vida?

  • Asegúrate de que la selfie de probe sea una imagen en vivo (no una foto impresa).

  • Aumenta el valor de liveness_min_score si demasiadas verificaciones de vida fallan.

¿Errores?

  • Verifica tu token y la codificación en base64.


Lo que necesitas

  • Una selfie para comparar (probe)

  • Un conjunto de selfies para comparar (gallery).

  • Un token de API (obtenlo desde el dashboard de Verifik o desde las APIs de Autenticación)

¿Listo para integrar?

Sigue el ejemplo de código, prueba con tus selfies y ajusta los valores de puntaje para adaptarlos a las necesidades de tu aplicación.


Encabezados (Headers)

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

Name
Type
Description

os

string

OS from where you are doing the operation. [DESKTOP, IOS, ANDROID]

probe

string

Face encoded in base64

gallery

Array

Array of images to compare with the face inside probe.

search_mode

string

search mode, it could be FAST, ACCURATE.

compare_min_score

number

Percentage for the minimum comparison between gallery and probe. (liveness will not be tested if the score is less than the minimum) [min 0.67 - max 0.95]

liveness_min_score

number

Percentage for the minimum value of the liveness test [ min 0.52 - max 1]

Ejemplo de Body

{
    "os": "DESKTOP",
    "probe": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAAAAAAD...",
    "gallery": [
        "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAAAAAAD...",
        "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAAAAAAD..."
    ],
    "search_mode": "FAST",
    "compare_min_score": 0.85,
    "liveness_min_score": 0.6
}

probe: La selfie única que deseas verificar. gallery: Una lista de selfies para comparar (puede incluir múltiples imágenes). compare_min_score: Define cuán similares deben ser los rostros (valor más alto = más estricto = mejor). liveness_min_score: Define el nivel de certeza de que la persona está viva (valor más alto = más estricto = más seguro).

Response

`
{
    "data": {
        "comparison": {
            "client": "613375a1eab2fe08527f81e2",
            "type": "compareLive",
            "search_mode": "ACCURATE",
            "gallery": [],
            "probe": [],
            "status": "success",
            "_id": "66e650d6b71ae4d43a76d95d",
            "comparedAt": "2024-09-15T03:13:26.392Z",
            "result": {
                "score": 1
            },
            "updatedAt": "2024-09-15T03:13:29.652Z",
            "createdAt": "2024-09-15T03:13:29.652Z",
            "__v": 0
        },
        "liveness": {
            "client": "613375a1eab2fe08527f81e2",
            "type": "liveness",
            "status": "success",
            "search_mode": "FAST",
            "os": "DESKTOP",
            "liveness_min_score": 0.7,
            "_id": "66e650d9b71ae4d43a76d95f",
            "result": {
                "liveness_score": 0.77,
                "passed": true,
                "min_score": 0.7
            },
            "updatedAt": "2024-09-15T03:13:31.675Z",
            "createdAt": "2024-09-15T03:13:31.675Z",
            "__v": 0
        }
    },
    "signature": {
        "dateTime": "September 15, 2024 3:13 AM",
        "message": "Certified by Verifik.co"
    },
    "id": "ABRCB"
}

Estructura de la Respuesta

Comparación

  • client (String): Identificador único del cliente que realiza la solicitud de comparación.

  • type (String): Describe el tipo de comparación. En este caso, es compareLive para comparación de imágenes en vivo.

  • search_mode (String): Especifica el modo de búsqueda utilizado. Las opciones incluyen ACCURATE para comparaciones precisas.

  • status (String): Indica el éxito o el fallo de la solicitud de comparación. Valor esperado: success.

  • result (Object): Contiene los resultados de la comparación:

    • score (Number): Puntaje de la comparación. Un valor de 1 indica una coincidencia perfecta.

    • comparedAt (DateTime): Marca de tiempo de cuándo se realizó la comparación.

    • updatedAt (DateTime): Marca de tiempo de la última actualización.

    • createdAt (DateTime): Marca de tiempo de la creación de este registro.


Sección de Detección de Vida (Liveness)

  • client (String): Identificador único del cliente que realiza la solicitud de verificación de vida.

  • type (String): Especifica el tipo de prueba. En este caso, es liveness.

  • status (String): Indica el éxito o el fallo de la verificación de vida. Valor esperado: success.

  • search_mode (String): Modo de búsqueda utilizado para la detección de vida. En este caso, se usa el modo FAST.

  • os (String): Sistema operativo utilizado durante la verificación, por ejemplo, DESKTOP.

  • liveness_min_score (Number): Puntaje mínimo necesario para aprobar la verificación de vida. En este caso, el umbral es 0.6.

  • result (Object): Resultado de la verificación de vida:

    • liveness_score (Number): Puntaje obtenido en la prueba de detección de vida. Se logró un puntaje de 0.77.

    • passed (Boolean): Indica si la prueba de detección de vida fue aprobada. En este caso, true indica éxito.

    • min_score (Number): Puntaje mínimo necesario para aprobar. Para esta prueba, es 0.6.

  • updatedAt (DateTime): Marca de tiempo de la última actualización.

  • createdAt (DateTime): Marca de tiempo de la creación de este registro.

Last updated