Logo Zephyrnet

Cách triển khai xác minh danh tính bằng Amazon Rekognition

Ngày:

Giới thiệu

Trong bối cảnh kỹ thuật số ngày nay, việc tuân thủ các quy định Biết khách hàng (KYC) là điều tối quan trọng đối với các doanh nghiệp hoạt động trong lĩnh vực dịch vụ tài chính, thị trường trực tuyến và các lĩnh vực khác yêu cầu nhận dạng người dùng. Theo truyền thống, các quy trình KYC dựa vào việc xác minh tài liệu thủ công, một cách tiếp cận tốn thời gian và dễ xảy ra lỗi. Hướng dẫn này đi sâu vào cách Amazon Rekognition, một dịch vụ AI dựa trên đám mây mạnh mẽ của AWS, chuyên về nhận dạng và phân tích khuôn mặt, có thể cách mạng hóa chiến lược KYC trực tuyến của bạn, biến chiến lược này thành một quy trình hợp lý, an toàn và tiết kiệm chi phí.

KYC với Amazon Rekognition của AWS

Mục tiêu học tập

  • Hiểu tầm quan trọng của các quy định Biết khách hàng (KYC) trong các ngành khác nhau và những thách thức liên quan đến quy trình xác minh thủ công.
  • Khám phá các khả năng của Amazon Rekognition với tư cách là dịch vụ AI dựa trên đám mây chuyên về nhận dạng và phân tích khuôn mặt.
  • Tìm hiểu các bước liên quan đến việc triển khai xác minh danh tính bằng Amazon Rekognition, bao gồm cả việc giới thiệu người dùng, trích xuất văn bản, phát hiện sự sống, phân tích khuôn mặt và khớp khuôn mặt.
  • Hiểu tầm quan trọng của việc tận dụng xác minh danh tính do AI điều khiển để tăng cường các biện pháp bảo mật, hợp lý hóa quy trình xác thực người dùng và cải thiện trải nghiệm người dùng.

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Mục lục

Hiểu những thách thức KYC

Các quy định KYC yêu cầu các doanh nghiệp xác minh danh tính người dùng của họ để giảm thiểu gian lận, rửa tiền và các tội phạm tài chính khác. Việc xác minh này thường bao gồm việc thu thập và xác thực các tài liệu nhận dạng do chính phủ cấp. Mặc dù các quy định này rất cần thiết để duy trì hệ sinh thái tài chính an toàn nhưng quy trình xác minh thủ công lại tạo ra những thách thức:

  • Tác động của đại dịch: Trong thời kỳ đại dịch, lĩnh vực tài chính phải đối mặt với những thách thức đáng kể trong việc thu hút khách hàng mới do việc di chuyển bị hạn chế. Do đó, việc xác minh thủ công hàng loạt là không thể. Vì vậy, bằng cách triển khai KYC trực tuyến, doanh nghiệp của bạn đã sẵn sàng cho những sự kiện như vậy trong tương lai.
  • Lỗi con người: Xác minh thủ công dễ xảy ra lỗi, có khả năng tạo điều kiện cho các hoạt động đăng ký gian lận lọt qua kẽ hở.
  • Quản lý ID: Vì tài liệu là bản in nên việc quản lý chúng là một thách thức ngày càng tăng. Các bản sao có thể bị mất, bị cháy, bị đánh cắp, sử dụng sai mục đích, v.v.

Nhận thức lại Amazon là gì?

Amazon Rekognition là dịch vụ phân tích hình ảnh và video mạnh mẽ được cung cấp bởi Amazon Web Services (AWS). Nó sử dụng các thuật toán học máy tiên tiến để phân tích nội dung trực quan trong hình ảnh và video, cho phép các nhà phát triển trích xuất những hiểu biết có giá trị và thực hiện nhiều tác vụ khác nhau như phát hiện đối tượng, nhận dạng khuôn mặt và xác minh danh tính. Sơ đồ đơn giản dưới đây đưa ra ý tưởng hay về các tính năng và dịch vụ liên quan.

Nguồn AWS: Các dịch vụ khác nhau của Rekogni

Xác minh danh tính bằng Amazon Rekognition

Trước khi đưa bạn đến phần triển khai, hãy để tôi cung cấp cho bạn ý tưởng cấp cao và các bước liên quan đến việc triển khai xác minh danh tính cho KYC trực tuyến của chúng tôi.

  1. Giới thiệu người dùng: Quá trình này sẽ được cụ thể cho doanh nghiệp. Tuy nhiên, tối thiểu doanh nghiệp sẽ cần Tên, Tên đệm, Họ, Ngày sinh, Ngày hết hạn của CMND và Ảnh cỡ hộ chiếu. Tất cả thông tin này có thể được thu thập bằng cách yêu cầu người dùng tải lên hình ảnh chứng minh thư nhân dân.
  2. Trích xuất văn bản: Dịch vụ AWS Textract có thể trích xuất gọn gàng tất cả thông tin trên từ thẻ ID đã tải lên. Không chỉ vậy, chúng ta còn có thể truy vấn Textract để lấy thông tin cụ thể từ thẻ ID.
  3. Sự sống động và nhận diện khuôn mặt: Để đảm bảo rằng người dùng đang cố gắng thực hiện KYC của mình đang hoạt động trên màn hình và hoạt động khi phiên hoạt động bắt đầu. Amazon Rekognition có thể phát hiện và so sánh chính xác các khuôn mặt trong hình ảnh hoặc luồng video.
  4. Phân tích khuôn mặt: Khi một khuôn mặt được chụp, nó sẽ cung cấp thông tin chi tiết về các đặc điểm trên khuôn mặt như tuổi tác, giới tính, cảm xúc và các đặc điểm trên khuôn mặt. Không chỉ vậy, nó còn xác nhận xem người dùng có đeo kính râm hay khuôn mặt của họ có bị các vật thể khác che hay không.
  5. So khớp khuôn mặt: Sau khi xác minh Liveness, chúng ta có thể thực hiện đối sánh khuôn mặt để xác minh danh tính của các cá nhân dựa trên hình ảnh tham chiếu được trích xuất từ ​​CMND và hình ảnh hiện tại từ phiên Liveness.
Cách thực hiện KYC trực tuyến với Amazon Rekognition của AWS

Như bạn có thể thấy, Rekognition hỗ trợ đăng ký người dùng nhanh chóng bằng cách phân tích ảnh selfie đã chụp và so sánh nó với ID do chính phủ cấp do người dùng tải lên. Khả năng phát hiện sự sống trong Rekognition giúp ngăn chặn các nỗ lực giả mạo bằng cách nhắc người dùng thực hiện các hành động cụ thể như chớp mắt hoặc quay đầu. Điều này đảm bảo người dùng đăng ký là người thật chứ không phải là một bức ảnh được ngụy trang khéo léo hoặc giả mạo sâu sắc. Quá trình tự động này giúp giảm đáng kể thời gian làm quen, nâng cao trải nghiệm người dùng. Nhận dạng lại loại bỏ khả năng xảy ra lỗi của con người vốn có trong quá trình xác minh thủ công. Hơn nữa, thuật toán nhận dạng khuôn mặt đạt tỷ lệ chính xác cao, đảm bảo xác minh danh tính đáng tin cậy.

Tôi biết hiện tại bạn đang rất hào hứng muốn xem nó hoạt động, vì vậy hãy bắt đầu ngay với nó.

Triển khai xác minh danh tính: Giải pháp KYC tự động

Bước 1: Thiết lập tài khoản AWS

Trước khi bắt đầu, hãy đảm bảo rằng bạn có tài khoản AWS đang hoạt động. Bạn có thể đăng ký tài khoản AWS trên trang web AWS nếu chưa đăng ký. Sau khi đăng ký, hãy kích hoạt dịch vụ Rekognition. AWS cung cấp tài liệu và hướng dẫn toàn diện để hỗ trợ quá trình này.

Bước 2: Thiết lập quyền IAM

Nếu bạn muốn sử dụng Python hoặc AWS CLI thì bước này là bắt buộc. Bạn cần cấp quyền truy cập Rekognition, S3 và Textract. Điều này có thể được thực hiện từ bảng điều khiển.

Bước 3: Tải lên ID quốc gia của người dùng

Tôi sẽ chứng minh điều này thông qua CLI, Python và giao diện đồ họa. Nếu bạn đang tìm kiếm mã cho giao diện đồ họa thì AWS đã tải lên một mã hay ví dụ trên git. Bài viết này đã triển khai cùng một mã để hiển thị giao diện đồ họa.

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

Lệnh trên sử dụng lệnh AWS Textract analyze-id để trích xuất thông tin từ hình ảnh đã được tải lên trong S3. JSON đầu ra cũng chứa các hộp giới hạn nên tôi đã cắt bớt để chỉ hiển thị thông tin chính. Như bạn có thể thấy, nó đã trích xuất tất cả thông tin cần thiết cùng với mức độ tin cậy của giá trị văn bản.

Sử dụng các hàm 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

Sử dụng giao diện đồ họa

ID quốc gia được trích xuất bằng AWS Textract | nhận dạng khuôn mặt cho KYC
ID quốc gia được trích xuất bằng AWS Textract | nhận dạng khuôn mặt cho KYC

Như bạn có thể thấy Textract đã tìm nạp tất cả thông tin liên quan và cũng hiển thị loại ID. Thông tin này có thể được sử dụng để đăng ký khách hàng hoặc người dùng. Nhưng trước đó, chúng ta hãy thực hiện kiểm tra Liveness để xác minh rằng đó là người thật.

Kiểm tra độ sống

Khi người dùng nhấp vào bắt đầu kiểm tra trong hình ảnh bên dưới, trước tiên nó sẽ phát hiện khuôn mặt và nếu chỉ có một khuôn mặt trên màn hình thì nó sẽ bắt đầu phiên Liveness. Vì lý do riêng tư, tôi không thể hiển thị toàn bộ phiên Liveness. Tuy nhiên, bạn có thể kiểm tra điều này liên kết video giới thiệu. Phiên Liveness sẽ cung cấp kết quả với độ tin cậy %. Chúng tôi cũng có thể đặt ngưỡng mà dưới đó phiên Liveness sẽ không thành công. Đối với các ứng dụng quan trọng như thế này, nên giữ ngưỡng ở mức 95%.

Kiểm tra tính sống động trên Amazon Rekognition | nhận dạng khuôn mặt cho KYC

Ngoài sự tự tin, phiên Liveness còn sẽ cung cấp những cảm xúc và vật thể lạ được phát hiện trên khuôn mặt. Nếu người dùng đeo kính râm hoặc có biểu hiện như tức giận, v.v. thì ứng dụng có thể từ chối hình ảnh.

Mã 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)

So sánh khuôn mặt

Khi người dùng đã hoàn tất thành công phiên Liveness, ứng dụng phải so sánh khuôn mặt với khuôn mặt được phát hiện từ ID. Đây là phần quan trọng nhất trong ứng dụng của chúng tôi. Chúng tôi không muốn đăng ký người dùng có khuôn mặt không khớp với ID. Khuôn mặt được phát hiện từ ID đã tải lên đã được lưu trữ trong S3 bằng mã sẽ hoạt động như một hình ảnh tham chiếu. Tương tự, khuôn mặt từ phiên hoạt động cũng được lưu trữ trong S3. Trước tiên chúng ta hãy kiểm tra việc triển khai CLI.

lệnh 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

Đầu ra

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

Như bạn có thể thấy ở trên, nó cho thấy không có khuôn mặt nào sánh được và khuôn mặt đó khớp với độ tin cậy 99%. Nó cũng đã trả về các hộp giới hạn như một đầu ra bổ sung. Bây giờ chúng ta hãy xem cách triển khai Python.

Mã 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

Đoạn mã trên sẽ so sánh khuôn mặt được phát hiện từ thẻ ID và phiên Liveness giữ ngưỡng 90%. Nếu khuôn mặt khớp thì nó sẽ đặt biến IsMatch thành True. Vì vậy, chỉ với một lệnh gọi hàm, chúng ta có thể so sánh hai khuôn mặt, cả hai khuôn mặt đều đã được tải lên nhóm S3.

Vì vậy, cuối cùng, chúng ta có thể đăng ký người dùng hợp lệ và hoàn thành KYC của anh ta. Như bạn có thể thấy, việc này hoàn toàn tự động và do người dùng thực hiện và không có người nào khác tham gia. Quá trình này cũng đã rút ngắn quá trình làm quen với người dùng so với quy trình thủ công hiện tại.

Bước 4: Truy vấn tài liệu như GPT

Tôi thích một trong những tính năng rất hữu ích của Textract, bạn có thể đặt những câu hỏi cụ thể như “Số nhận dạng là gì”. Hãy để tôi chỉ cho bạn cách thực hiện việc này bằng 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"}]}'

Xin lưu ý rằng trước đây tôi đã sử dụng hàm analyze-id trong khi bây giờ tôi đã sử dụng analyze-document để truy vấn tài liệu. Điều này rất hữu ích nếu có các trường cụ thể trong thẻ ID không được chức năng analyze-id trích xuất. Tuy nhiên, chức năng phân tích-id hoạt động tốt với tất cả thẻ ID của Hoa Kỳ, nó cũng hoạt động tốt với thẻ ID của chính phủ Ấn Độ. Tuy nhiên, nếu một số trường không được trích xuất thì tính năng truy vấn có thể được sử dụng.

AWS sử dụng dịch vụ cognito để quản lý danh tính Người dùng, ID người dùng và ID khuôn mặt được lưu trữ trong DynamoDB. Mã mẫu AWS cũng so sánh các hình ảnh từ cơ sở dữ liệu hiện có để cùng một người dùng không thể đăng ký lại bằng ID hoặc tên người dùng khác. Loại xác thực này là bắt buộc đối với một hệ thống KYC tự động mạnh mẽ.

Kết luận

Bằng cách sử dụng AWS Rekognition for Automated Self KYC, bạn có thể chuyển đổi quy trình giới thiệu người dùng của mình từ một trở ngại khó khăn thành một trải nghiệm suôn sẻ và an toàn. Amazon Rekognition cung cấp giải pháp mạnh mẽ để triển khai hệ thống xác minh danh tính với khả năng nhận dạng khuôn mặt nâng cao. Bằng cách tận dụng các tính năng của nó, các nhà phát triển có thể tăng cường các biện pháp bảo mật, hợp lý hóa quy trình xác thực người dùng và mang lại trải nghiệm liền mạch cho người dùng trên nhiều ứng dụng và ngành khác nhau.

Với hướng dẫn toàn diện được nêu ở trên, bạn đã được trang bị đầy đủ để bắt đầu hành trình triển khai xác minh danh tính bằng cách sử dụng Amazon Rekognition một cách hiệu quả. Tận dụng sức mạnh của việc xác minh danh tính do AI điều khiển và mở ra những khả năng mới trong lĩnh vực quản lý danh tính kỹ thuật số.

Chìa khóa chính

  • Amazon Rekognition cung cấp khả năng phân tích và nhận dạng khuôn mặt nâng cao, hỗ trợ các quy trình xác minh danh tính an toàn và hợp lý.
  • Nó cho phép người dùng tự động tham gia bằng cách trích xuất thông tin cần thiết từ thẻ ID do chính phủ cấp và thực hiện kiểm tra hoạt động.
  • Các bước triển khai bao gồm thiết lập dịch vụ AWS, đặt cấu hình quyền IAM và sử dụng các hàm Python hoặc giao diện đồ họa để trích xuất văn bản và so sánh khuôn mặt.
  • Kiểm tra tính sống động theo thời gian thực tăng cường bảo mật bằng cách đảm bảo người dùng có mặt trong quá trình xác minh, trong khi so sánh khuôn mặt xác thực danh tính dựa trên hình ảnh tham chiếu.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img