Logotipo de Zephyrnet

Cómo implementar la verificación de identidad mediante Amazon Rekognition

Fecha:

Introducción

En el panorama digital actual, cumplir con las regulaciones de Conozca a su Cliente (KYC) es primordial para las empresas que operan en servicios financieros, mercados en línea y otros sectores que requieren identificación de usuario. Tradicionalmente, los procesos KYC se han basado en la verificación manual de documentos, un enfoque que consume mucho tiempo y es propenso a errores. Esta guía profundiza en cómo Amazon Rekognition, un potente servicio de inteligencia artificial basado en la nube de AWS, especializado en reconocimiento y análisis facial, puede revolucionar su estrategia KYC en línea, transformándola en un proceso optimizado, seguro y rentable.

KYC con el reconocimiento de Amazon de AWS

OBJETIVOS DE APRENDIZAJE

  • Comprenda la importancia de las regulaciones Conozca a su cliente (KYC) en diversas industrias y los desafíos asociados con los procesos de verificación manual.
  • Explore las capacidades de Amazon Rekognition como un servicio de inteligencia artificial basado en la nube que se especializa en reconocimiento y análisis facial.
  • Conozca los pasos necesarios para implementar la verificación de identidad mediante Amazon Rekognition, incluida la incorporación de usuarios. extracción de texto, detección de vida, análisis facial y comparación de rostros.
  • Comprenda la importancia de aprovechar la verificación de identidad impulsada por IA para mejorar las medidas de seguridad, optimizar los procesos de autenticación de usuarios y mejorar las experiencias de los usuarios.

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Índice del contenido

Comprender los desafíos de KYC

Las regulaciones KYC exigen que las empresas verifiquen la identidad de sus usuarios para mitigar el fraude, lavado de dinero y otros delitos financieros. Esta verificación generalmente implica recopilar y validar documentos de identificación emitidos por el gobierno. Si bien estas regulaciones son esenciales para mantener un ecosistema financiero seguro, los procesos de verificación manual crean desafíos:

  • Impacto de la pandemia: Durante la pandemia, el sector financiero enfrentó importantes desafíos a la hora de incorporar nuevos clientes, ya que el movimiento estaba restringido. Por lo tanto, la verificación manual en masa no es posible. Entonces, al implementar KYC en línea, su empresa estará lista para eventos futuros.
  • Errores humanos: La verificación manual es susceptible a errores, lo que potencialmente permite que los registros fraudulentos pasen desapercibidos.
  • Gestión de identificaciones: Dado que la documentación es una copia impresa, gestionarla es un desafío creciente. Las copias pueden perderse, quemarse, ser robadas, mal utilizadas, etc.

¿Qué es el reconocimiento de Amazon?

Amazon Rekognition es un potente servicio de análisis de imágenes y vídeos ofrecido por Amazon Web Services (AWS). Utiliza algoritmos avanzados de aprendizaje automático para analizar contenido visual en imágenes y videos, lo que permite a los desarrolladores extraer información valiosa y realizar diversas tareas como detección de objetos, reconocimiento facial y verificación de identidad. El siguiente diagrama simplista da una buena idea de las características y servicios involucrados.

Fuente AWS: diferentes servicios bajo Rekogni

Verificación de identidad con Amazon Rekognition

Antes de llevarte a la implementación, permíteme darte una idea de alto nivel y los pasos necesarios para implementar la verificación de identidad para nuestro KYC en línea.

  1. Incorporación de usuarios: Este proceso será específico del negocio. Sin embargo, como mínimo, la empresa necesitará el nombre, el segundo nombre, el apellido, la fecha de nacimiento, la fecha de caducidad del documento de identidad y una fotografía tamaño pasaporte. Toda esta información se puede recopilar solicitando al usuario que cargue una imagen de un documento nacional de identidad.
  2. Extraer texto: El servicio AWS Textract puede extraer claramente toda la información anterior de la tarjeta de identificación cargada. No solo esto, también podemos consultar Textract para obtener información específica de la tarjeta de identificación.
  3. Vivencia y reconocimiento facial: Para asegurarse de que el usuario que intenta realizar su KYC esté activo en la pantalla y en vivo cuando comience la sesión de vida. Amazon Rekognition puede detectar y comparar rostros con precisión dentro de imágenes o transmisiones de video.
  4. Análisis facial: Una vez que se captura un rostro, proporciona información detallada sobre los atributos faciales, como la edad, el género, las emociones y los puntos de referencia faciales. No sólo esto, también validará si el usuario lleva gafas de sol o si tiene la cara cubierta por otros objetos.
  5. Coincidencia de caras: Después de verificar Liveness, podemos realizar una comparación de rostros para verificar la identidad de las personas en función de las imágenes de referencia extraídas del documento de identificación nacional y la imagen actual de la sesión de Liveness.
Cómo se realiza KYC en línea con Amazon Rekognition de AWS

Como puede ver, Rekognition facilita el registro rápido del usuario al analizar una selfie capturada y compararla con una identificación emitida por el gobierno cargada por el usuario. Las capacidades de detección de vida dentro de Rekognition ayudan a frustrar los intentos de suplantación de identidad al solicitar a los usuarios que realicen acciones específicas como parpadear o girar la cabeza. Esto garantiza que el usuario que se registra sea una persona real y no una foto hábilmente disfrazada o una falsificación. Este proceso automatizado reduce significativamente los tiempos de incorporación, mejorando la experiencia del usuario. El reconocimiento elimina el potencial de error humano inherente a la verificación manual. Además, los algoritmos de reconocimiento facial logran altas tasas de precisión, lo que garantiza una verificación de identidad confiable.

Sé que ahora estás muy emocionado de verlo en acción, así que vayamos directamente a ello.

Implementación de la verificación de identidad: la solución KYC automatizada

Paso 1: configurar la cuenta de AWS

Antes de comenzar, asegúrese de tener una cuenta de AWS activa. Puede registrarse para obtener una cuenta de AWS en el sitio web de AWS si aún no lo ha hecho. Una vez registrado, active los servicios de Rekognition. AWS proporciona documentación completa y tutoriales para facilitar este proceso.

Paso 2: configurar los permisos de IAM

Si desea utilizar Python o AWS CLI, este paso es necesario. Debe proporcionar permiso para acceder a Rekognition, S3 y Textract. Esto se puede hacer desde la consola.

Paso 3: Cargue la identificación nacional del usuario

Lo demostraré a través de CLI, Python y una interfaz gráfica. Si está buscando un código para una interfaz gráfica, AWS ha subido un bonito ejemplo en git. Este artículo ha implementado el mismo código para mostrar una interfaz gráfica.

aws textract analyze-id --document-pages 
'{"S3Object":{"Bucket":"bucketARN","Name":"id.jpg"}}'
"IdentityDocuments": [
        {
            "DocumentIndex": 1,
            "IdentityDocumentFields": [
                {
                    "Type": {
                        "Text": "FIRST_NAME"
                    },
                    "ValueDetection": {
                        "Text": "xyz",
                        "Confidence": 93.61839294433594
                    }
                },
                {
                    "Type": {
                        "Text": "LAST_NAME"
                    },
                    "ValueDetection": {
                        "Text": "abc",
                        "Confidence": 96.3537826538086
                    }
                },
                {
                    "Type": {
                        "Text": "MIDDLE_NAME"
                    },
                    "ValueDetection": {
                        "Text": "",
                        "Confidence": 99.16631317138672
                    }
                },
                {
                    "Type": {
                        "Text": "SUFFIX"
                    },
                    "ValueDetection": {
                        "Text": "",
                        "Confidence": 99.16964721679688
                    }
                },
                {
                    "Type": {
                        "Text": "CITY_IN_ADDRESS"
                    },
                    "ValueDetection": {
                        "Text": "",
                        "Confidence": 99.17261505126953
                    }
                },
                {
                    "Type": {
                        "Text": "ZIP_CODE_IN_ADDRESS"
                    },
                    "ValueDetection": {
                        "Text": "",
                        "Confidence": 99.17854309082031
                    }
                },
                {
                    "Type": {
                        "Text": "STATE_IN_ADDRESS"
                    },
                    "ValueDetection": {
                        "Text": "",
                        "Confidence": 99.15782165527344
                    }
                },
                {
                    "Type": {
                        "Text": "STATE_NAME"
                    },
                    "ValueDetection": {
                        "Text": "",
                        "Confidence": 99.16664123535156
                    }
                },
                {
                    "Type": {
                        "Text": "DOCUMENT_NUMBER"
                    },
                    "ValueDetection": {
                        "Text": "123456",
                        "Confidence": 95.29527282714844
                    }
                },
                {
                    "Type": {
                        "Text": "EXPIRATION_DATE"
                    },
                    "ValueDetection": {
                        "Text": "22 OCT 2024",
                        "NormalizedValue": {
                            "Value": "2024-10-22T00:00:00",
                            "ValueType": "Date"
                        },
                        "Confidence": 95.7198486328125
                    }
                },
                {
                    "Type": {
                        "Text": "DATE_OF_BIRTH"
                    },
                    "ValueDetection": {
                        "Text": "1 SEP 1994",
                        "NormalizedValue": {
                            "Value": "1994-09-01T00:00:00",
                            "ValueType": "Date"
                        },
                        "Confidence": 97.41930389404297
                    }
                },
                {
                    "Type": {
                        "Text": "DATE_OF_ISSUE"
                    },
                    "ValueDetection": {
                        "Text": "23 OCT 2004",
                        "NormalizedValue": {
                            "Value": "2004-10-23T00:00:00",
                            "ValueType": "Date"
                        },
                        "Confidence": 96.1384506225586
                    }
                },
                {
                    "Type": {
                        "Text": "ID_TYPE"
                    },
                    "ValueDetection": {
                        "Text": "PASSPORT",
                        "Confidence": 98.65157318115234
                    }
                }

El comando anterior utiliza el comando analyse-id de AWS Textract para extraer información de la imagen ya cargada en S3. El JSON de salida también contiene cuadros delimitadores, por lo que lo trunqué para mostrar solo la información clave. Como puede ver, ha extraído toda la información requerida junto con el nivel de confianza del valor del texto.

Usando funciones de Python

textract_client = boto3.client('textract', region_name='us-east-1')

def analyze_id(document_file_name)->dict:

  if document_file_name is not None:
       with open(document_file_name, "rb") as document_file:
            idcard_bytes = document_file.read()
  '''
  Analyze the image using Amazon Textract.
  '''
  try:
    response = textract_client.analyze_id(
      DocumentPages=[
        {'Bytes': idcard_bytes},
      ])

    return response
  except textract_client.exceptions.UnsupportedDocumentException:
    logger.error('User %s provided an invalid document.' % inputRequest.user_id)
    raise InvalidImageError('UnsupportedDocument')
  except textract_client.exceptions.DocumentTooLargeException:
    logger.error('User %s provided document too large.' % inputRequest.user_id)
    raise InvalidImageError('DocumentTooLarge')
  except textract_client.exceptions.ProvisionedThroughputExceededException:
    logger.error('Textract throughput exceeded.')
    raise InvalidImageError('ProvisionedThroughputExceeded')
  except textract_client.exceptions.ThrottlingException:
    logger.error('Textract throughput exceeded.')
    raise InvalidImageError('ThrottlingException')
  except textract_client.exceptions.InternalServerError:
    logger.error('Textract Internal Server Error.')
    raise InvalidImageError('ProvisionedThroughputExceeded')

result = analyze_id('id.jpeg')
print(result) # print raw output

Usando la interfaz gráfica

ID nacional extraída mediante AWS Textract | reconocimiento facial para KYC
ID nacional extraída mediante AWS Textract | reconocimiento facial para KYC

Como puede ver, Textract ha obtenido toda la información relevante y también muestra el tipo de identificación. Esta información se puede utilizar para registrar al cliente o usuario. Pero antes de eso, hagamos una verificación de Liveness para verificar que se trata de una persona real.

Control de vida

Una vez que el usuario hace clic en comenzar a verificar en la imagen a continuación, primero detectará la cara y, si solo hay una cara en la pantalla, iniciará la sesión de Liveness. Por motivos de privacidad, no puedo mostrar la sesión completa de Liveness. Sin embargo, puedes comprobar esto. enlace del vídeo de demostración. La sesión Liveness proporcionará resultados con % de confianza. También podemos establecer un umbral por debajo del cual fallará la sesión de Liveness. Para aplicaciones críticas como ésta, se debe mantener el umbral en 95%.

Verificación de vida en Amazon Rekognition | reconocimiento facial para KYC

Además de la confianza, la sesión de Liveness también aportará emociones y objetos extraños detectados en el rostro. Si el usuario tiene gafas de sol o muestra expresiones como enfado, etc., la aplicación puede rechazar la imagen.

Código de Python

rek_client = boto3.client('rekognition', region_name='us-east-1')
sessionid = rek_client.create_face_liveness_session(Settings={'AuditImagesLimit':1, 
           'OutputConfig': {"S3Bucket": 'IMAGE_BUCKET_NAME'}})
           
session = rek_client.get_face_liveness_session_results(
            SessionId=sessionid)

Comparación de caras

Una vez que el usuario ha completado con éxito la sesión de Liveness, la aplicación debe comparar el rostro con el rostro detectado en la identificación. Esta es la parte más crítica de nuestra aplicación. No queremos registrar un usuario cuya cara no coincida con su identificación. El rostro detectado a partir del ID cargado ya está almacenado en S3 mediante el código que actuará como imagen de referencia. De manera similar, la cara de la sesión de vida también se almacena en S3. Primero verifiquemos la implementación de CLI.

Comando CLI

aws rekognition compare-faces 
      --source-image '{"S3Object":{"Bucket":"imagebucket","Name":"reference.jpg"}}' 
      --target-image '{"S3Object":{"Bucket":"imagebucket","Name":"liveness.jpg"}}' 
      --similarity-threshold 0.9

Salida

{
              "UnmatchedFaces": [],
              "FaceMatches": [
                  {
                      "Face": {
                          "BoundingBox": {
                              "Width": 0.12368916720151901,
                              "Top": 0.16007372736930847,
                              "Left": 0.5901257991790771,
                              "Height": 0.25140416622161865
                          },
                          "Confidence": 99.0,
                          "Pose": {
                              "Yaw": -3.7351467609405518,
                              "Roll": -0.10309021919965744,
                              "Pitch": 0.8637830018997192
                          },
                          "Quality": {
                              "Sharpness": 95.51618957519531,
                              "Brightness": 65.29893493652344
                          },
                          "Landmarks": [
                              {
                                  "Y": 0.26721030473709106,
                                  "X": 0.6204193830490112,
                                  "Type": "eyeLeft"
                              },
                              {
                                  "Y": 0.26831310987472534,
                                  "X": 0.6776827573776245,
                                  "Type": "eyeRight"
                              },
                              {
                                  "Y": 0.3514654338359833,
                                  "X": 0.6241428852081299,
                                  "Type": "mouthLeft"
                              },
                              {
                                  "Y": 0.35258132219314575,
                                  "X": 0.6713621020317078,
                                  "Type": "mouthRight"
                              },
                              {
                                  "Y": 0.3140771687030792,
                                  "X": 0.6428444981575012,
                                  "Type": "nose"
                              }
                          ]
                      },
                      "Similarity": 100.0
                  }
              ],
              "SourceImageFace": {
                  "BoundingBox": {
                      "Width": 0.12368916720151901,
                      "Top": 0.16007372736930847,
                      "Left": 0.5901257991790771,
                      "Height": 0.25140416622161865
                  },
                  "Confidence": 99.0
              }
          }

Como puede ver arriba, se ha demostrado que no hay ninguna cara incomparable y la cara coincide con un nivel de confianza del 99%. También ha devuelto cuadros delimitadores como resultado adicional. Ahora veamos la implementación de Python.

Código de Python

rek_client = boto3.client('rekognition', region_name='us-east-1')

response = rek_client.compare_faces(
      SimilarityThreshold=0.9,
      SourceImage={
            'S3Object': {
              'Bucket': bucket,
              'Name': idcard_name
          }
      },
      TargetImage={
          'S3Object': {
              'Bucket': bucket,
              'Name': name
          }
      })

if len(response['FaceMatches']) == 0:
      IsMatch = 'False'
      Reason = 'Property FaceMatches is empty.'
    
facenotMatch = False
for match in response['FaceMatches']:
    similarity:float = match['Similarity']
    if similarity > 0.9:
        IsMatch = True,
        Reason = 'All checks passed.'
    else:
        facenotMatch = True

El código anterior comparará el rostro detectado en la tarjeta de identificación y la sesión de Liveness manteniendo el umbral en 90%. Si la cara coincide, establecerá la variable IsMatch en Verdadero. Entonces, con solo una llamada de función, podemos comparar las dos caras, ambas ya están cargadas en el depósito de S3.

Finalmente, podemos registrar el usuario válido y completar su KYC. Como puede ver, esto es totalmente automatizado e iniciado por el usuario, y no participa ninguna otra persona. El proceso también ha acortado la incorporación de usuarios en comparación con el proceso manual actual.

Paso 4: consultar documento como GPT

Me gustó una de las funciones muy útiles de Textract: puedes hacer preguntas específicas, como "¿Cuál es el número de identidad?". Permítame mostrarle cómo hacer esto usando AWS CLI.

aws textract analyze-document --document '{"S3Object":{"Bucket":"ARN","Name":"id.jpg"}}' 
--feature-types '["QUERIES"]' --queries-config '{"Queries":[{"Text":"What is the Identity No"}]}'

Tenga en cuenta que antes utilicé la función analizar-id, mientras que ahora utilicé analizar-documento para consultar el documento. Esto es muy útil si hay campos específicos en la tarjeta de identificación que no se extraen mediante la función de análisis de identificación. La función de análisis de identificación funciona bien para todas las tarjetas de identificación de EE. UU.; sin embargo, también funciona bien con las tarjetas de identificación del gobierno de la India. Aún así, si algunos de los campos no se extraen, se puede utilizar la función de consulta.

AWS utiliza el servicio cognito para administrar la identidad del usuario, el ID de usuario y los ID de rostro almacenados en DynamoDB. El código de muestra de AWS también compara las imágenes de la base de datos existente para que el mismo usuario no pueda volver a registrarse con una identificación o nombre de usuario diferente. Este tipo de validación es imprescindible para un sistema KYC automatizado y robusto.

Conclusión

Al adoptar AWS Rekognition para Automated Self KYC, puede transformar el proceso de incorporación de usuarios de un obstáculo laborioso a una experiencia fluida y segura. Amazon Rekognition proporciona una solución sólida para implementar sistemas de verificación de identidad con capacidades avanzadas de reconocimiento facial. Al aprovechar sus funciones, los desarrolladores pueden mejorar las medidas de seguridad, optimizar los procesos de autenticación de usuarios y ofrecer experiencias de usuario perfectas en diversas aplicaciones e industrias.

Con la guía completa descrita anteriormente, estará bien equipado para emprender el camino hacia la implementación efectiva de la verificación de identidad mediante Amazon Rekognition. Aproveche el poder de la verificación de identidad basada en IA y descubra nuevas posibilidades en el ámbito de la gestión de identidad digital.

Puntos clave

  • Amazon Rekognition ofrece capacidades avanzadas de análisis y reconocimiento facial, lo que facilita procesos de verificación de identidad optimizados y seguros.
  • Permite la incorporación automatizada de usuarios extrayendo información esencial de tarjetas de identificación emitidas por el gobierno y realizando controles de vida.
  • Los pasos de implementación incluyen configurar servicios de AWS, configurar permisos de IAM y utilizar funciones de Python o interfaces gráficas para extracción de texto y comparaciones faciales.
  • Las comprobaciones de vida en tiempo real mejoran la seguridad al garantizar que los usuarios estén presentes durante la verificación, mientras que las comparaciones faciales validan las identidades con imágenes de referencia.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

punto_img

Información más reciente

punto_img