كيف قمنا بتحسين BlinkID من التكامل إلى تجربة المستخدم

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

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

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

ما الجديد في BlinkID ؟

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

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

كما قمنا أيضًا بتحسين دقة المسح الضوئي لجميع المعرفات التي تحمل رمز PDF417 أو أي نوع آخر من الرموز الشريطية (مثل الرمز 39)، مما يقلل من معدلات الخطأ بنسبة 20% إضافية. إن تقنية المسح الضوئي الأفضل تعني بيانات أنظف وأعلى جودة لكل بطاقة هوية يعالجها برنامجنا. ولتحقيق هذه الغاية، عززنا معدلات الدقة لدينا من خلال التحسينات التي أدخلناها على نماذجنا الأساسية للتعرف الضوئي على الحروف وما بعد المعالجة.

لقد قمنا أيضاً بتحديث وظيفة إخفاء الهوية الميدانية لدينا، والتي تسمح للعملاء بإخفاء أجزاء معينة من مستند الهوية (نص منقح أو صور مقصوصة)، مع إضافة إخفاء الهوية لرموز QR على بطاقات الهوية الهولندية، كمثال واحد، للامتثال لقوانين الخصوصية المحلية.

بالإضافة إلى توسيع قدراتنا الأساسية في المسح الضوئي للمستندات، سواء من خلال دعم البرامج النصية الجديدة أو تحسين الدقة، قمنا أيضًا بتحسين كيفية استخدام BlinkID – من الواجهة الخلفية إلى الواجهة الأمامية.

كود أقل، صداع أقل

سواء كنت تعمل على الهاتف المحمول (iOS أو Android أو عبر الأنظمة الأساسية) أو سطح المكتب أو الخدمات الأخرى المستندة إلى الويب (المستضافة ذاتياً أو المستندة إلى السحابة)، يمكن أن يتكامل BlinkID بسهولة مع النظام الأساسي الخاص بك. ما مدى سهولة ذلك؟ يستغرق عميلنا في المتوسط أقل من يوم واحد لتشغيل BlinkID وإكمال أول عملية مسح بنجاح.

// الرمز المطلوب لبدء الفحص
الفئة MainActivity : AppCompatActivity() {

 override fun onCreate(تم الحفظ في حالة الإنشاء(تم الحفظ في حالة الإنشاء: Bundle?) {
 super.onCreate(تم الحفظ في حالة الإنشاء)
 setContentView(R.layout.activity_main)
 }

 fun onScanButtonClick(view: view) {
 resultLauncher.launch()
 }

 خاص val resultLauncher = registerForActivityResult (TwoSideDocumentScan())) { twoSideScanResult: نتيجة المسح الضوئي ثنائي الجانب ->
 // القيام بشيء ما بالنتائج
 }
}
/** الرمز المطلوب لبدء الفحص */
 @IBAction func didTapCustomCUI(_ المرسل: أي) {
  
 /** إنشاء وحدة تحكم في عرض المتعرف مع وحدة تحكم عرض التراكب المطلوبة */
 حارس دع وحدة التحكم في طريقة العرض المتعرف عليها: UIViewController = MBVViewControllerFactory.recognizerRunnerViewController(withResult: { النتيجة في
 /** التعامل مع النتائج *//
 }، closeButtonTaffedTaffedTaffedTaffedTaffedTaffedTaffedTaffedTaffedTaffedTaffd: {
 /** التعامل مع حدث الإغلاق */
 }) آخر {
 العودة
 }

 /** تقديم وحدة التحكم في عرض عداء المتعرّف */
 self.present(recognizerRunnerViewController، متحرك: صحيح، الإكمال: لا شيء)
} }
<!-- تبسيط عملية التكامل باستخدام مكون واجهة المستخدم الخاص بنا -->
<بلينكيد في المتصفح مفتاح الترخيص-مفتاح الترخيص="..."></blinkid-in-browser>

<نوع البرنامج النصي="نص/جافا سكريبت">
  const blinkId = document.querySelector("blinkid-in-browser");

  // الحصول على النتائج في كل عملية مسح ناجحة للمستندات
 blinkId.addEventListener(
 "scanSuccess",
 (ev) => console.log("المعلومات المستخرجة", ev.detail)
 );
</script>
# قم بتشغيل صورة docker
docker run -p 8080:8080 -e "LICENSEE=..." -e "LICENSE_KEY=..." -v /v /etc/machine-id:/etc/machine-id microblink/API

# مسح المستند
curl -X POST POST localhost:8080/blinkid-multi-side \
 -H 'Content-Type: application/json' \
 -H -H 'Accept: application/json' \
 -d '{ "imageFront": { "imageUrl": "..."}، "imageBack": {"imageUrl": "..." } }'

والآن، أصبح المسح الأساسي لمستندات الهوية الأساسية أكثر بساطة للمستخدمين الجدد، حيث قمنا بتقليل أسطر التعليمات البرمجية المطلوبة لنشر BlinkID إلى سطر واحد. يتوفر هذا الخيار الجديد في كل من حزم SDK للأجهزة المحمولة التي تعمل بنظامي iOS و Android، وهو مخصص لحالات الاستخدام الأكثر شيوعًا (أي مسح كلا وجهي المستند)، مما يتيح للمطورين دمج BlinkID في أسرع وقت ممكن.

رسائل الأخطاء في الوقت الحقيقي

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

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

واجهة أكثر إفادة

لطالما كانت إحدى أهم أولوياتنا في BlinkID هي وضع تجربة المستخدم في المقام الأول. ولهذا السبب يعمل فريق منتجاتنا عن كثب مع مصممي منتجاتنا، حيث يُجري اختبارات المستخدم بالإضافة إلى الأبحاث الأولية والثانوية بهدف نهائي رئيسي هو تحقيق “نجاح المسح الضوئي لأول مرة”.

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

وظيفة من جهاز إلى جهاز

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

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

إمكانات التخصيص

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

// مثال على كيفية بدء الفحص باستخدام واجهة المستخدم المخصصة
الفئة MainActivity : AppCompatActivity() {

  متغير خاص lateinit المتغير المتعرف: BlinkIdIdMultiSideRecognizer
 خاص lateinit المتغير الخاص حزمة المتعرف عليه: حزمة المتعرف: حزمة المتعرف عليه

  تجاوز متعة متعة onCreate(تم الحفظ في الحالة المحفوظة: Bundle?) {
 super.onCreate(تم الحفظ في الحالة المحفوظة)
 setContentView(R.layout.activity_main)

  أداة التعرف = BlinkIIdMultiSideRecognizer()
 حزمة أداة التعرف = حزمة أداة التعرف (أداة التعرف)
 }

  متعة onScanButtonClick(view: View?) {
 { // إنشاء واجهة مستخدم بإعدادات افتراضية
 val uiSettings = BlinkIdUISettings(recognizerBundle)

  // إخفاء مربع حوار المقدمة
 uiSettings.setShowIntroductionDialog(false)

  // بدء نشاط المسح الضوئي بناءً على إعدادات واجهة المستخدم
 blinkIdScanLauncher.launch(uiSettings)
 } }

  خاص val blinkIdScanLauncher = registerForActivityResult (MbScan()) { result: نتيجة المسح الضوئي ->
 // القيام بشيء ما بالنتيجة
 }
}
@IBAction func didTapScan(_ المرسل: AnyObject) {

  ذاتي.blink.blinkIdMultiSideRecognizer = MBBlinkBlinkIdMultiSideRecognizer()

  /** تخصيص إعدادات BlinkID UI */
 دع الإعدادات: إعدادات MBBlinkIdOverlaySettings = MBBlinkIdOverlaySettings()
    
 /** إخفاء مربع حوار المقدمة */
 settings.showIntroductionDialog = false

  /** متابعة التهيئة... */*/
 دع قائمة المتعرفات = [self.blink.blink.IdMultiSideMultiSideRecognizer!]
 دع مجموعة أدوات التعرف: مجموعة MBRecognizerCollection = MBRecognizerCollection(المتعرفات: قائمة المتعرفات)
  
 دع blinkIdOverlayViewController: MBBlinkBlinkIdOverlayViewController = MBBlinkBlinkIdOverlayViewController(الإعدادات: الإعدادات، مجموعة أدوات التعرف: مجموعة أدوات التعرف، المفوض: ذاتي)
      
 حارس دع وحدة التحكم في طريقة العرض: UIViewController = MBVViewControllerFactory.recognizerRunnerRunnerViewController(withOverlayViewController: blinkIdOverlayViewController) وإلا {
 العودة
 }

  self.present(recognizerRunnerViewController, animated: true, completion: nil)
}
<!-- تغيير واجهة المستخدم الافتراضية من خلال توفير سمات HTML -->
<blinkid-in-browser
 ترخيص-مفتاح-رخصة-مفتاح="..."
 المسح من الصورة="خطأ"
 إخفاء-التغذية المرتدة="صحيح"
></blinkid-in-browser>

<نوع البرنامج النصي="نص/جافا سكريبت">
  const blinkId = document.querySelector("blinkid-in-browser");

  // الحصول على النتائج عند كل عملية مسح ناجحة للمستندات
 blinkId.addEventListener(
 "scanSuccess",
 (ev) => console.log("المعلومات المستخرجة", ev.detail)
 );
</script>

هل تبحث عن مزيد من المعلومات حول تكامل BlinkID ؟ تحقق من مركز المطورين لدينا للحصول على قائمة كاملة بروابط التوثيق على صفحة Github الخاصة بشركتنا.

مارس 28, 2023

اكتشف حلولنا

استكشاف حلولنا على بُعد نقرة واحدة فقط. جرّب منتجاتنا أو تحدث معنا مع أحد خبرائنا للتعمق أكثر في ما نقدمه.