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

Last updated

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

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

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

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

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

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

هل ترغب في معرفة المزيد؟
اتصل بنا اليوم للتحدث إلى أحد خبراء Microblink المتخصصين في مكافحة الاحتيال وحماية الهوية

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

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

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

كود أقل، متاعب أقل

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

// Code needed to start the scan
class MainActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
  }

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

  private val resultLauncher = registerForActivityResult(TwoSideDocumentScan()) { twoSideScanResult: TwoSideScanResult ->
    // Do something with results
  }
}
/** Code needed to start the scan */
@IBAction func didTapCustomUI(_ sender: Any) {
  
  /** Create recognizer view controller with wanted overlay view controller */
  guard let recognizerRunnerViewController: UIViewController = MBViewControllerFactory.recognizerRunnerViewController(withResult: { result in
    /** Handle results */
  }, closeButtonTapped: {
    /** Handle close event */
  }) else {
    return
  }

  /** Present the recognizer runner view controller */
  self.present(recognizerRunnerViewController, animated: true, completion: nil)
}
<!-- Simplify integration by using our UI component -->
<blinkid-in-browser license-key="..."></blinkid-in-browser>

<script type="text/javascript">
  const blinkId = document.querySelector("blinkid-in-browser");

  // Get results on every successful document scan
  blinkId.addEventListener(
    "scanSuccess",
    (ev) => console.log("Extracted information", ev.detail)
  );
</script>
# Run docker image
docker run -p 8080:8080 -e "LICENSEE=..." -e "LICENSE_KEY=..." -v /etc/machine-id:/etc/machine-id microblink/api

# Scan document
curl -X POST localhost:8080/blinkid-multi-side \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{ "imageFront": { "imageUrl": "..." }, "imageBack": { "imageUrl": "..." } }'

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

إرسال رسائل الخطأ في الوقت الفعلي

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

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

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

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

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

وظائف الاتصال بين الأجهزة

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

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

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

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

// An example on how to start the scan with customized UI
class MainActivity : AppCompatActivity() {

    private lateinit var recognizer: BlinkIdMultiSideRecognizer
    private lateinit var recognizerBundle: RecognizerBundle

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        recognizer = BlinkIdMultiSideRecognizer()
        recognizerBundle = RecognizerBundle(recognizer)
    }

    fun onScanButtonClick(view: View?) {
        // Create UI with default settings
        val uiSettings = BlinkIdUISettings(recognizerBundle)

        // Hide introduction dialog
        uiSettings.setShowIntroductionDialog(false)

        // Start scan activity based on UI settings
        blinkIdScanLauncher.launch(uiSettings)
    }

    private val blinkIdScanLauncher = registerForActivityResult(MbScan()) { result: ScanResult ->
        // Do something with result
    }
}
@IBAction func didTapScan(_ sender: AnyObject) {

  self.blinkIdMultiSideRecognizer = MBBlinkIdMultiSideRecognizer()

  /** Customize BlinkID UI settings */
  let settings: MBBlinkIdOverlaySettings = MBBlinkIdOverlaySettings()
    
  /** Hide introduction dialog */
  settings.showIntroductionDialog = false

  /** Continue with initialization... */
  let recognizerList = [self.blinkIdMultiSideRecognizer!]
  let recognizerCollection: MBRecognizerCollection = MBRecognizerCollection(recognizers: recognizerList)
  
  let blinkIdOverlayViewController: MBBlinkIdOverlayViewController = MBBlinkIdOverlayViewController(settings: settings, recognizerCollection: recognizerCollection, delegate: self)
      
  guard let recognizerRunnerViewController: UIViewController = MBViewControllerFactory.recognizerRunnerViewController(withOverlayViewController: blinkIdOverlayViewController) else {
    return
  }

  self.present(recognizerRunnerViewController, animated: true, completion: nil)
}
<!-- Change default UI by providing HTML attributes -->
<blinkid-in-browser
  license-key="..."
  scan-from-image="false"
  hide-feedback="true"
></blinkid-in-browser>

<script type="text/javascript">
  const blinkId = document.querySelector("blinkid-in-browser");

  // Get results on every successful document scan
  blinkId.addEventListener(
    "scanSuccess",
    (ev) => console.log("Extracted information", ev.detail)
  );
</script>

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

اكتشف حلولنا

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

المزيد من المعلومات

مواصلة القراءة

استكشاف المزيد
The New Authorization Problem Created by AI Agents 

The New Authorization Problem Created by AI Agents 

AI agents introduce a new wrinkle into digital trust: a legitimate user can direct a legitimate agent to take an action that…

اقرأ أكثر
ختام العام بالتطلع إلى المستقبل: لماذا أصبح المجتمع والتعاون أكثر أهمية من أي وقت مضى

ختام العام بالتطلع إلى المستقبل: لماذا أصبح المجتمع والتعاون أكثر أهمي…

مع اقتراب نهاية العام، وجدت نفسي أفكر في العوامل التي أحدثت فرقًا حقيقيًّا في عام 2025. ليس فقط من حيث التكنولوجيا أو مؤشرات…

اقرأ أكثر
لماذا يحتاج التحقق من الهوية إلى التحليلات، وليس الدقة فحسب 

لماذا يحتاج التحقق من الهوية إلى التحليلات، وليس الدقة فحسب 

لسنوات عديدة، ركزت المؤسسات التي تقيّم حلول التحقق من الهوية على مجموعة مألوفة من المعايير. فقد كانت معدلات الدقة، وتغطية الو…

اقرأ أكثر
لماذا يُحسّن التقاط الصور بدون إطار من أداء التحقق من صحة المستندات

لماذا يُحسّن التقاط الصور بدون إطار من أداء التحقق من صحة المستندات

لا تفشل عملية التحقق من الهوية بسبب عدم دقة الأنظمة. بل إنها تفشل عادةً لأن المستخدمين ينسحبون قبل أن يتمكن النظام من أداء مه…

اقرأ أكثر
لماذا يُعد كل من المقارنة المعيارية والقدرة على التفسير أمرين بالغين الأهمية في عملية التحقق من الهوية

لماذا يُعد كل من المقارنة المعيارية والقدرة على التفسير أمرين بالغين ا…

تناولت مدونة حديثة للرئيس التنفيذي لشركة Microblink، هارتلي طومسون، الكيفية التي يغير بها الذكاء الاصطناعي التوليدي (Gen AI)…

اقرأ أكثر
عندما تتصرف العناصر الذكية الاصطناعية (وربما تهاجم)

عندما تتصرف العناصر الذكية الاصطناعية (وربما تهاجم)

في الآونة الأخيرة، بدأ نوع جديد من القلق يظهر في أوساط التكنولوجيا. لا يتعلق الأمر بانتهاكات الأمن أو انقطاعات الخدمة، بل بال…

اقرأ أكثر
تقرير
تحديد ملامح تزايد حالات الاحتيال المتعلقة بالهوية المدعومة بالذكاء الاصطناعي

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

اطلع على البيانات