Logo Zephyrnet

Come implementare la verifica dell'identità utilizzando Amazon Rekognition

Data:

Introduzione

Nel panorama digitale odierno, aderire alle normative Know Your Customer (KYC) è fondamentale per le aziende che operano nei servizi finanziari, nei mercati online e in altri settori che richiedono l'identificazione dell'utente. Tradizionalmente, i processi KYC si basavano sulla verifica manuale dei documenti, un approccio dispendioso in termini di tempo e soggetto a errori. Questa guida approfondisce come Amazon Rekognition, un potente servizio AI basato su cloud di AWS, specializzato nel riconoscimento e nell'analisi facciale, può rivoluzionare la tua strategia KYC online, trasformandola in un processo semplificato, sicuro ed economico.

KYC con Amazon Rekognition di AWS

obiettivi formativi

  • Comprendere l'importanza delle normative Know Your Customer (KYC) in vari settori e le sfide associate ai processi di verifica manuale.
  • Esplora le funzionalità di Amazon Rekognition come servizio di intelligenza artificiale basato su cloud specializzato nel riconoscimento e nell'analisi facciale.
  • Scopri le fasi necessarie per implementare la verifica dell'identità utilizzando Amazon Rekognition, incluso l'onboarding degli utenti, estrazione del testo, rilevamento della vivacità, analisi facciale e corrispondenza dei volti.
  • Comprendi l'importanza di sfruttare la verifica dell'identità basata sull'intelligenza artificiale per migliorare le misure di sicurezza, semplificare i processi di autenticazione degli utenti e migliorare l'esperienza degli utenti.

Questo articolo è stato pubblicato come parte di Blogathon sulla scienza dei dati.

Sommario

Comprendere le sfide KYC

Le normative KYC impongono alle aziende di verificare l'identità dei propri utenti mitigare le frodi, riciclaggio di denaro e altri reati finanziari. Questa verifica in genere comporta la raccolta e la convalida di documenti di identificazione rilasciati dal governo. Sebbene queste normative siano essenziali per mantenere un ecosistema finanziario sicuro, i processi di verifica manuale creano sfide:

  • Impatto pandemico: Durante la pandemia, il settore finanziario ha dovuto affrontare sfide significative nell’acquisizione di nuovi clienti poiché la circolazione era limitata. Pertanto, la verifica manuale in blocco non è possibile. Quindi, implementando il KYC online, la tua azienda è pronta per tali eventi futuri.
  • Errori umani: La verifica manuale è suscettibile di errori, consentendo potenzialmente alle registrazioni fraudolente di sfuggire.
  • Gestione degli ID: Poiché la documentazione è una copia stampata, la gestione della stessa è una sfida crescente. Le copie possono andare perse, bruciate, rubate, utilizzate in modo improprio, ecc.

Cos'è Amazon Rekognition?

Amazon Rekognition è un potente servizio di analisi di immagini e video offerto da Amazon Web Services (AWS). Utilizza algoritmi avanzati di apprendimento automatico per analizzare i contenuti visivi in ​​immagini e video, consentendo agli sviluppatori di estrarre informazioni preziose ed eseguire varie attività come il rilevamento di oggetti, il riconoscimento facciale e la verifica dell'identità. Il diagramma semplicistico riportato di seguito fornisce una buona idea delle funzionalità e dei servizi coinvolti.

Fonte AWS: diversi servizi sotto Rekogni

Verifica dell'identità con Amazon Rekognition

Prima di illustrarti l'implementazione, lascia che ti dia un'idea di alto livello e i passaggi necessari per implementare la verifica dell'identità per il nostro KYC online.

  1. Registrazione utente: Questo processo sarà specifico per l'azienda. Tuttavia, come minimo, l'azienda avrà bisogno di nome, secondo nome, cognome, data di nascita, data di scadenza della carta d'identità e foto formato tessera. Tutte queste informazioni possono essere raccolte chiedendo all'utente di caricare un'immagine di una carta d'identità nazionale.
  2. Estrai testo: Il servizio AWS Textract può estrarre in modo ordinato tutte le informazioni di cui sopra dalla carta d'identità caricata. Non solo, possiamo anche interrogare Textract per recuperare informazioni specifiche dalla carta d'identità.
  3. Vitalità e riconoscimento facciale: Per assicurarsi che l'utente che tenta di eseguire il KYC sia attivo sullo schermo e sia in diretta quando inizia la sessione di liveness. Amazon Rekognition è in grado di rilevare e confrontare con precisione i volti all'interno di immagini o flussi video.
  4. Analisi del viso: Una volta catturato un volto, fornisce informazioni dettagliate sugli attributi facciali come età, sesso, emozioni e punti di riferimento del viso. Non solo, convaliderà anche se l'utente indossa occhiali da sole o se il suo viso è coperto da altri oggetti.
  5. Corrispondenza del volto: Dopo aver verificato la Liveness, possiamo eseguire la corrispondenza dei volti per verificare l'identità degli individui sulla base delle immagini di riferimento estratte dalla carta d'identità nazionale e dell'immagine corrente dalla sessione Liveness.
Come viene eseguito il KYC online con Amazon Rekognition di AWS

Come puoi vedere, Rekognition facilita la registrazione rapida dell'utente analizzando un selfie catturato e confrontandolo con un documento d'identità rilasciato dal governo caricato dall'utente. Le funzionalità di rilevamento della vitalità all'interno di Rekognition aiutano a contrastare i tentativi di spoofing chiedendo agli utenti di eseguire azioni specifiche come sbattere le palpebre o girare la testa. Ciò garantisce che l'utente che si registra sia una persona reale e non una foto abilmente camuffata o un falso profondo. Questo processo automatizzato riduce significativamente i tempi di onboarding, migliorando l'esperienza dell'utente. Rekognition elimina il rischio di errore umano inerente alla verifica manuale. Inoltre, gli algoritmi di riconoscimento facciale raggiungono tassi di precisione elevati, garantendo una verifica affidabile dell’identità.

So che ora sei molto entusiasta di vederlo in azione, quindi passiamo subito a questo.

Implementazione della verifica dell'identità: la soluzione KYC automatizzata

Fase 1: configurazione dell'account AWS

Prima di iniziare, assicurati di avere un account AWS attivo. Puoi registrarti per un account AWS sul sito Web AWS se non l'hai già fatto. Una volta registrato, attiva i servizi Rekognition. AWS fornisce documentazione completa e tutorial per facilitare questo processo.

Passaggio 2: configurazione delle autorizzazioni IAM

Se desideri utilizzare Python o AWS CLI, questo passaggio è obbligatorio. È necessario fornire l'autorizzazione per accedere a Rekognition, S3 e Textract. Questo può essere fatto dalla console.

Passaggio 3: carica l'ID nazionale dell'utente

Lo dimostrerò tramite CLI, Python e un'interfaccia grafica. Se stai cercando un codice per un'interfaccia grafica, AWS ha caricato un bel file esempio su Git. Questo articolo ha distribuito lo stesso codice per mostrare un'interfaccia grafica.

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
                    }
                }

Il comando precedente utilizza il comando analyze-id di AWS Textract per estrarre informazioni dall'immagine già caricata in S3. L'output JSON contiene anche riquadri di delimitazione, quindi li ho troncati per mostrare solo le informazioni chiave. Come puoi vedere, ha estratto tutte le informazioni richieste insieme al livello di confidenza del valore del testo.

Utilizzo delle funzioni 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

Utilizzando l'interfaccia grafica

ID nazionale estratto utilizzando AWS Textract | riconoscimento facciale per KYC
ID nazionale estratto utilizzando AWS Textract | riconoscimento facciale per KYC

Come puoi vedere Textract ha recuperato tutte le informazioni rilevanti e mostra anche il tipo di ID. Queste informazioni possono essere utilizzate per registrare il cliente o l'utente. Ma prima facciamo un controllo di Liveness per verificare che si tratti di una persona reale.

Controllo della vivacità

Una volta che l'utente fa clic su Inizia controllo nell'immagine seguente, rileverà prima il volto e, se sullo schermo è presente solo un volto, avvierà la sessione Liveness. Per motivi di privacy non posso mostrare l'intera sessione di Liveness. Puoi comunque verificarlo collegamento video dimostrativo. La sessione Liveness fornirà risultati in percentuale di confidenza. Possiamo anche impostare una soglia al di sotto della quale la sessione Liveness fallirà. Per applicazioni critiche come questa, si dovrebbe mantenere la soglia al 95%.

Controllo dell'attività su Amazon Rekognition | riconoscimento facciale per KYC

Oltre alla confidenza, la sessione Liveness fornirà anche emozioni e oggetti estranei rilevati sul viso. Se l'utente indossa occhiali da sole o mostra espressioni come rabbia, ecc., l'applicazione può rifiutare l'immagine.

Codice 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)

Confronto dei volti

Una volta che l'utente ha completato con successo la sessione Liveness, l'applicazione deve confrontare il volto con il volto rilevato dall'ID. Questa è la parte più critica della nostra applicazione. Non vogliamo registrare un utente il cui volto non corrisponde all'ID. Il volto rilevato dall'ID caricato è già memorizzato in S3 dal codice che fungerà da immagine di riferimento. Allo stesso modo anche il volto della sessione Liveness viene archiviato in S3. Controlliamo prima l'implementazione della 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

Uscita

{
              "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
              }
          }

Come puoi vedere sopra, è stato dimostrato che non esiste una faccia senza corrispondenze e la faccia corrisponde con un livello di confidenza del 99%. Ha anche restituito i riquadri di delimitazione come output aggiuntivo. Vediamo ora l'implementazione di Python.

Codice 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

Il codice sopra confronterà il volto rilevato dalla carta d'identità e dalla sessione Liveness mantenendo la soglia al 90%. Se la faccia corrisponde, imposterà la variabile IsMatch su True. Quindi con una sola chiamata di funzione possiamo confrontare le due facce, entrambe sono già caricate nel bucket S3.

Quindi, finalmente, possiamo registrare l'utente valido e completare il suo KYC. Come puoi vedere, questo è completamente automatizzato e avviato dall'utente e nessun'altra persona è coinvolta. Il processo ha inoltre abbreviato l'onboarding dell'utente rispetto all'attuale processo manuale.

Passaggio 4: interroga il documento come GPT

Mi è piaciuta una delle funzionalità molto utili di Textract: puoi porre domande specifiche, ad esempio "Qual è il numero di identità". Lascia che ti mostri come farlo utilizzando 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"}]}'

Tieni presente che in precedenza ho utilizzato la funzione analyze-id mentre ora ho utilizzato analyze-document per interrogare il documento. Ciò è molto utile se nella carta d'identità sono presenti campi specifici che non vengono estratti dalla funzione analyze-id. La funzione analyze-id funziona bene per tutte le carte d'identità statunitensi, tuttavia funziona bene anche con le carte d'identità del governo indiano. Tuttavia, se alcuni campi non vengono estratti, è possibile utilizzare la funzionalità di query.

AWS utilizza il servizio Cognito per gestire l'identità utente, l'ID utente e gli ID volto archiviati in DynamoDB. Il codice di esempio AWS confronta inoltre le immagini del database esistente in modo che lo stesso utente non possa registrarsi nuovamente utilizzando un ID o un nome utente diverso. Questo tipo di convalida è un must per un solido sistema KYC automatizzato.

Conclusione

Adottando AWS Rekognition for Automated Self KYC, puoi trasformare il processo di onboarding degli utenti da un laborioso ostacolo in un'esperienza fluida e sicura. Amazon Rekognition fornisce una soluzione solida per implementare sistemi di verifica dell'identità con funzionalità avanzate di riconoscimento facciale. Sfruttando le sue funzionalità, gli sviluppatori possono migliorare le misure di sicurezza, semplificare i processi di autenticazione degli utenti e offrire esperienze utente fluide in varie applicazioni e settori.

Con la guida completa descritta sopra, sei ben attrezzato per intraprendere il tuo viaggio verso l'implementazione efficace della verifica dell'identità utilizzando Amazon Rekognition. Sfrutta la potenza della verifica dell'identità basata sull'intelligenza artificiale e sblocca nuove possibilità nel campo della gestione dell'identità digitale.

Punti chiave

  • Amazon Rekognition offre funzionalità avanzate di riconoscimento e analisi facciale, facilitando processi di verifica dell'identità semplificati e sicuri.
  • Consente l'onboarding automatizzato degli utenti estraendo informazioni essenziali dalle carte d'identità emesse dal governo ed eseguendo controlli di attività.
  • Le fasi di implementazione includono la configurazione dei servizi AWS, la configurazione delle autorizzazioni IAM e l'utilizzo di funzioni Python o interfacce grafiche per l'estrazione del testo e i confronti facciali.
  • I controlli di attività in tempo reale migliorano la sicurezza garantendo che gli utenti siano presenti durante la verifica, mentre i confronti facciali convalidano le identità rispetto alle immagini di riferimento.

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell'autore.

spot_img

L'ultima intelligenza

spot_img