شعار زيفيرنت

كيفية تنفيذ التحقق من الهوية باستخدام Amazon Rekognition

التاريخ:

المُقدّمة

في المشهد الرقمي اليوم، يعد الالتزام بلوائح "اعرف عميلك" (KYC) أمرًا بالغ الأهمية للشركات العاملة في مجال الخدمات المالية والأسواق عبر الإنترنت والقطاعات الأخرى التي تتطلب تحديد هوية المستخدم. تقليديًا، اعتمدت عمليات "اعرف عميلك" على التحقق اليدوي من المستندات، وهو نهج يستغرق وقتًا طويلاً وعرضة للأخطاء. يتعمق هذا الدليل في كيفية قيام Amazon Rekognition، وهي خدمة ذكاء اصطناعي قوية قائمة على السحابة مقدمة من AWS، ومتخصصة في التعرف على الوجه وتحليله، بإحداث ثورة في إستراتيجية KYC عبر الإنترنت، وتحويلها إلى عملية مبسطة وآمنة وفعالة من حيث التكلفة.

اعرف عميلك (KYC) مع Amazon Rekognition من AWS

أهداف التعلم

  • فهم أهمية لوائح اعرف عميلك (KYC) في مختلف الصناعات والتحديات المرتبطة بعمليات التحقق اليدوي.
  • استكشف إمكانيات Amazon Rekognition كخدمة ذكاء اصطناعي قائمة على السحابة ومتخصصة في التعرف على الوجه وتحليله.
  • تعرف على الخطوات المتبعة في تنفيذ التحقق من الهوية باستخدام Amazon Rekognition، بما في ذلك إعداد المستخدم، استخراج النصوالكشف عن الحيوية وتحليل الوجه ومطابقة الوجه.
  • فهم أهمية الاستفادة من التحقق من الهوية المستند إلى الذكاء الاصطناعي لتعزيز التدابير الأمنية وتبسيط عمليات مصادقة المستخدم وتحسين تجارب المستخدم.

تم نشر هذه المقالة كجزء من مدونة علوم البيانات.

جدول المحتويات

فهم تحديات KYC

تفرض لوائح KYC على الشركات التحقق من هوية مستخدميها التخفيف من الاحتيالوغسل الأموال والجرائم المالية الأخرى. يتضمن هذا التحقق عادةً جمع وثائق الهوية الصادرة عن الحكومة والتحقق من صحتها. في حين أن هذه اللوائح ضرورية للحفاظ على نظام بيئي مالي آمن، فإن عمليات التحقق اليدوية تخلق تحديات:

  • تأثير الوباء: خلال الوباء، واجه القطاع المالي تحديات كبيرة في جذب عملاء جدد حيث تم تقييد الحركة. ولذلك، فإن التحقق اليدوي بشكل مجمّع غير ممكن. لذلك، من خلال تنفيذ سياسة "اعرف عميلك" عبر الإنترنت، يصبح عملك جاهزًا لمثل هذه الأحداث المستقبلية.
  • أخطاء بشرية: يعد التحقق اليدوي عرضة للأخطاء، مما قد يسمح لعمليات التسجيل الاحتيالية بالتسلل عبر الشقوق.
  • إدارة المعرفات: نظرًا لأن الوثائق عبارة عن نسخة مطبوعة، فإن إدارتها تمثل تحديًا متزايدًا. يمكن أن تضيع النسخ، أو تحترق، أو تُسرق، أو يُساء استخدامها، وما إلى ذلك.

ما هو التعرف على أمازون؟

Amazon Rekognition هي خدمة قوية لتحليل الصور والفيديو تقدمها Amazon Web Services (AWS). ويستخدم خوارزميات التعلم الآلي المتقدمة لتحليل المحتوى المرئي في الصور ومقاطع الفيديو، مما يمكّن المطورين من استخلاص رؤى قيمة وتنفيذ مهام مختلفة مثل اكتشاف الأشياء والتعرف على الوجه والتحقق من الهوية. الرسم البياني المبسط أدناه يعطي فكرة جيدة عن الميزات والخدمات المعنية.

المصدر AWS: خدمات مختلفة ضمن Rekogni

التحقق من الهوية باستخدام Amazon Rekognition

قبل أن أنتقل بك إلى التنفيذ، اسمحوا لي أن أقدم لك فكرة رفيعة المستوى وخطوات تتعلق بتنفيذ التحقق من الهوية من أجل "اعرف عميلك" عبر الإنترنت.

  1. تأهيل المستخدم: ستكون هذه العملية خاصة بالعمل. ومع ذلك، على الأقل، ستحتاج الشركة إلى الاسم الأول والاسم الأوسط واسم العائلة وتاريخ الميلاد وتاريخ انتهاء بطاقة الهوية وصورة بحجم جواز السفر. يمكن جمع كل هذه المعلومات من خلال مطالبة المستخدم بتحميل صورة من بطاقة الهوية الوطنية.
  2. استخراج النص: يمكن لخدمة AWS Textract استخراج جميع المعلومات المذكورة أعلاه بدقة من بطاقة الهوية التي تم تحميلها. ليس هذا فقط، يمكننا أيضًا الاستعلام عن Texttract لجلب معلومات محددة من بطاقة الهوية.
  3. الحيوية والتعرف على الوجه: للتأكد من أن المستخدم الذي يحاول إجراء عملية اعرف عميلك (KYC) نشط على الشاشة ومباشر عند بدء جلسة النشاط. يستطيع Amazon Rekognition اكتشاف الوجوه ومقارنتها بدقة داخل الصور أو تدفقات الفيديو.
  4. تحليل الوجه: بمجرد التقاط الوجه، فإنه يوفر رؤى تفصيلية حول سمات الوجه مثل العمر والجنس والعواطف ومعالم الوجه. ليس هذا فحسب، بل سيتم أيضًا التحقق من صحة ما إذا كان المستخدم يرتدي نظارات شمسية أو إذا كان وجهه مغطى بأشياء أخرى.
  5. مطابقة الوجه: بعد التحقق من الحياة، يمكننا إجراء مطابقة الوجه للتحقق من هوية الأفراد بناءً على الصور المرجعية المستخرجة من بطاقة الهوية الوطنية والصورة الحالية من جلسة الحياة.
كيف يتم إجراء عملية اعرف عميلك (KYC) عبر الإنترنت باستخدام Amazon Rekognition من AWS

كما ترون، يعمل Rekognition على تسهيل التسجيل السريع للمستخدم من خلال تحليل الصورة الذاتية التي تم التقاطها ومقارنتها بمعرف صادر عن الحكومة تم تحميله بواسطة المستخدم. تساعد إمكانات الكشف عن الحياة داخل Rekognition في إحباط محاولات الانتحال من خلال مطالبة المستخدمين بتنفيذ إجراءات محددة مثل الوميض أو إدارة رؤوسهم. وهذا يضمن أن المستخدم المسجل هو شخص حقيقي وليس صورة مقنعة بذكاء أو مزيفة. تعمل هذه العملية الآلية على تقليل وقت الإعداد بشكل كبير، مما يعزز تجربة المستخدم. يؤدي التعرف على الأخطاء إلى القضاء على احتمال حدوث خطأ بشري متأصل في التحقق اليدوي. علاوة على ذلك، تحقق خوارزميات التعرف على الوجه معدلات دقة عالية، مما يضمن التحقق الموثوق من الهوية.

أعلم أنك الآن متحمس جدًا لرؤيتها قيد التنفيذ، لذا دعنا ننتقل إليها على الفور.

تنفيذ التحقق من الهوية: حل KYC الآلي

الخطوة 1: إعداد حساب AWS

قبل البدء، تأكد من أن لديك حساب AWS نشطًا. يمكنك التسجيل للحصول على حساب AWS على موقع AWS الإلكتروني إذا لم تقم بذلك بالفعل. بمجرد التسجيل، قم بتنشيط خدمات Rekognition. توفر AWS وثائق وبرامج تعليمية شاملة لتسهيل هذه العملية.

الخطوة 2: إعداد أذونات IAM

إذا كنت تريد استخدام Python أو AWS CLI، فهذه الخطوة مطلوبة. يتعين عليك توفير إذن للوصول إلى Rekognition وS3 وTextract. يمكن القيام بذلك من وحدة التحكم.

الخطوة 3: تحميل الهوية الوطنية للمستخدم

سأوضح ذلك من خلال CLI وPython والواجهة الرسومية. إذا كنت تبحث عن رمز لواجهة رسومية، فقد قامت AWS بتحميل ملف لطيف مثال على بوابة. قامت هذه المقالة بنشر نفس الكود لإظهار واجهة رسومية.

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

يستخدم الأمر أعلاه أمر تحليل معرف AWS Textract لاستخراج المعلومات من الصورة التي تم تحميلها بالفعل في S3. يحتوي إخراج JSON على مربعات محيطة أيضًا، لذا قمت باقتطاعها لإظهار المعلومات الأساسية فقط. كما ترون فقد استخرج جميع المعلومات المطلوبة بالإضافة إلى مستوى الثقة في قيمة النص.

استخدام وظائف بايثون

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

استخدام الواجهة الرسومية

تم استخراج الهوية الوطنية باستخدام AWS Textract | التعرف على الوجه لـ KYC
تم استخراج الهوية الوطنية باستخدام AWS Textract | التعرف على الوجه لـ KYC

كما ترون، قام Texttract بجلب جميع المعلومات ذات الصلة ويعرض أيضًا نوع المعرف. يمكن استخدام هذه المعلومات لتسجيل العميل أو المستخدم. ولكن قبل ذلك دعونا نجري فحصًا للحياة للتأكد من أنه شخص حقيقي.

فحص الحيوية

بمجرد أن ينقر المستخدم على "بدء التحقق" من الصورة أدناه، فسوف يكتشف الوجه أولاً، وإذا كان هناك وجه واحد فقط على الشاشة، فسوف يبدأ جلسة Liveness. لأسباب تتعلق بالخصوصية، لا أستطيع عرض جلسة Liveness كاملة. ومع ذلك، يمكنك التحقق من هذا رابط الفيديو التجريبي. ستوفر جلسة Liveness نتائج بنسبة ثقة %. يمكننا أيضًا تعيين الحد الأدنى الذي ستفشل جلسة Liveness أدناه. بالنسبة للتطبيقات الهامة مثل هذه، ينبغي للمرء أن يحافظ على الحد الأدنى عند 95%.

التحقق من الحيوية على Amazon Rekognition | التعرف على الوجه لـ KYC

وبصرف النظر عن الثقة، فإن جلسة Liveness ستوفر أيضًا العواطف والأجسام الغريبة المكتشفة على الوجه. إذا كان المستخدم يرتدي نظارات شمسية أو تظهر عليه تعبيرات مثل الغضب وما إلى ذلك، فيمكن للتطبيق رفض الصورة.

كود بيثون

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)

مقارنة الوجه

بمجرد أن يكمل المستخدم جلسة Liveness بنجاح، يجب على التطبيق مقارنة الوجه بالوجه الذي تم اكتشافه من خلال بطاقة الهوية. هذا هو الجزء الأكثر أهمية في طلبنا. لا نريد تسجيل مستخدم لا يتطابق وجهه مع بطاقة الهوية. تم بالفعل تخزين الوجه المكتشف من المعرف الذي تم تحميله في S3 بواسطة الرمز الذي سيكون بمثابة صورة مرجعية. وبالمثل، يتم أيضًا تخزين الوجه من جلسة النشاط في S3. دعونا نتحقق من تنفيذ CLI أولاً.

أمر 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

الناتج

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

كما ترون أعلاه، فقد أظهر أنه لا يوجد وجه لا مثيل له وأن الوجه يتطابق مع مستوى ثقة 99%. وقد أعادت أيضًا المربعات المحيطة كمخرجات إضافية. الآن دعونا نرى تنفيذ بايثون.

كود بيثون

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

سيقوم الكود أعلاه بمقارنة الوجه المكتشف من بطاقة الهوية وجلسة الحياة مع الحفاظ على الحد الأدنى عند 90%. إذا كان الوجه متطابقًا، فسيتم تعيين متغير IsMatch على True. لذلك، من خلال استدعاء دالة واحدة فقط، يمكننا مقارنة الوجهين، وقد تم تحميلهما بالفعل في حاوية S3.

أخيرًا، يمكننا تسجيل المستخدم الصالح وإكمال عملية اعرف عميلك (KYC) الخاصة به. كما ترون، يتم تنفيذ هذا الأمر تلقائيًا بالكامل ويتم بمبادرة من المستخدم، ولا يشارك فيه أي شخص آخر. وقد أدت هذه العملية أيضًا إلى تقصير عملية إعداد المستخدم مقارنة بالعملية اليدوية الحالية.

الخطوة 4: الاستعلام عن مستند مثل GPT

أعجبتني إحدى الميزات المفيدة جدًا في Texttract، حيث يمكنك طرح أسئلة محددة مثل "ما هو رقم الهوية". اسمح لي أن أوضح لك كيفية القيام بذلك باستخدام 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"}]}'

يرجى ملاحظة أنه في وقت سابق، استخدمت وظيفة تحليل المعرف بينما استخدمت الآن تحليل المستند للاستعلام عن المستند. يعد هذا مفيدًا جدًا إذا كانت هناك حقول محددة في بطاقة الهوية لم يتم استخراجها بواسطة وظيفة تحليل المعرف. تعمل وظيفة تحليل الهوية بشكل جيد مع جميع بطاقات الهوية الأمريكية، ومع ذلك، فهي تعمل بشكل جيد مع بطاقات الهوية الحكومية الهندية أيضًا. ومع ذلك، إذا لم يتم استخراج بعض الحقول، فيمكن استخدام ميزة الاستعلام.

تستخدم AWS خدمة الخفي لإدارة هوية المستخدم ومعرف المستخدم ومعرفات الوجه المخزنة في DynamoDB. يقارن نموذج التعليمة البرمجية لـ AWS أيضًا الصور من قاعدة البيانات الموجودة بحيث لا يتمكن المستخدم نفسه من إعادة التسجيل باستخدام معرف أو اسم مستخدم مختلف. يعد هذا النوع من التحقق أمرًا ضروريًا لنظام KYC الآلي القوي.

وفي الختام

من خلال تبني AWS Rekognition for Automated Self KYC، يمكنك تحويل عملية تأهيل المستخدم من عقبة شاقة إلى تجربة سلسة وآمنة. توفر Amazon Rekognition حلاً قويًا لتنفيذ أنظمة التحقق من الهوية مع إمكانات متقدمة للتعرف على الوجه. ومن خلال الاستفادة من ميزاته، يمكن للمطورين تعزيز الإجراءات الأمنية وتبسيط عمليات مصادقة المستخدم وتقديم تجارب مستخدم سلسة عبر مختلف التطبيقات والصناعات.

باستخدام الدليل الشامل الموضح أعلاه، أنت مجهز جيدًا لبدء رحلتك لتنفيذ التحقق من الهوية باستخدام Amazon Rekognition بشكل فعال. احتضن قوة التحقق من الهوية المستندة إلى الذكاء الاصطناعي وافتح إمكانيات جديدة في مجال إدارة الهوية الرقمية.

الوجبات السريعة الرئيسية

  • توفر Amazon Rekognition إمكانات متقدمة للتعرف على الوجه وتحليله، مما يسهل عمليات التحقق من الهوية المبسطة والآمنة.
  • فهو يمكّن من إعداد المستخدم تلقائيًا عن طريق استخراج المعلومات الأساسية من بطاقات الهوية الصادرة عن الحكومة وإجراء فحوصات حيوية.
  • تتضمن خطوات التنفيذ إعداد خدمات AWS، وتكوين أذونات IAM، واستخدام وظائف Python أو الواجهات الرسومية لاستخراج النص ومقارنات الوجه.
  • تعمل عمليات التحقق من الحيوية في الوقت الفعلي على تعزيز الأمان من خلال ضمان حضور المستخدمين أثناء التحقق، بينما تتحقق مقارنات الوجه من صحة الهويات مقابل الصور المرجعية.

الوسائط الموضحة في هذه المقالة ليست مملوكة لـ Analytics Vidhya ويتم استخدامها وفقًا لتقدير المؤلف.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة