نحن ، Smart Engines ، نواصل سلسلة المقالات حول كيفية دمج تقنيات التعرف لدينا ( جوازات السفر والبطاقات المصرفية وغيرها) في تطبيقاتك. في وقت سابق كتبنا عن التضمين على iOS و Android ، وأظهرنا كيفية تضمين التعرف في روبوت Telegram ، وسنتحدث اليوم عن كيفية العمل مع واجهات Python و PHP في مكتبة التعرف على Smart IDReader لاستخدامها على خادم داخلي.
بالمناسبة ، تتضمن قائمة لغات البرمجة التي ندعمها ، بالإضافة إلى اللغات التي تمت مناقشتها هنا ، C # و Objective-C و Swift و Java. كما هو الحال من قبل ، نحن ندعم جميع أنظمة التشغيل والبنى المشهورة وغير الشعبية ، كما تتوفر تطبيقاتنا التجريبية المجانية للتنزيل من App Store و Google Play .
من الناحية التقليدية ، تتوفر النسخة التجريبية من Smart IDReader SDK لـ Python و PHP إلى جانب أمثلة على Github وهي متاحة هنا.
وضع التفاف
نظرًا لأن إصدار المكوّن الإضافي يجب أن يتطابق مع إصدار المترجم الفوري ، فنحن لا نوفر وحدة نمطية جاهزة ، ولكننا نوفر أداة تجميع تلقائي تسمح لك بجمع ونشر مجمّع مكتبة التعرف على Smart IDReader الضروري على جهازك (يتم دعم Python 2/3 و PHP 5/7). للقيام بذلك ، يجب تشغيل البرنامج النصي للتجميع المناسب ، مع الإشارة إلى المسار إلى مكتبتنا libsmartidEngine.so وإصدار المترجم الذي تحتاج إليه لإنشاء الوحدة النمطية. على سبيل المثال ، بالنسبة لبيثون ، يبدو الأمر كما يلي:
bash build_python.sh ../../bin 3
يسير PHP بطريقة مماثلة ، فقط الوسيطة الثانية هي المسار إلى php-config الذي تستخدمه:
bash build_php.sh ../../bin /usr/bin/php56-config
هام: بعد التجميع ، ستشير الوحدة النمطية الناتجة إلى libSmartidEngine.so في المسار المطلق ، لذلك قم أولاً بتثبيت المكتبة في دليل مناسب لك!
سيقوم المجمّع التلقائي بفك حزمة SWIG المتوفرة في التجميع ، وإنشاء وحدة نمطية والتحقق منها من خلال تشغيل الاختبار.
يحتوي غلاف المكتبة على ملفين - وحدة نمطية مكتوبة في Python / PHP ، وملحق للمترجم (_pySmartIdEngine.so لـ Python و phpSmartidEngine.so). لدمج الاعتراف في المشروع ، تحتاج إلى استيراد الوحدة النمطية وتوصيل الملحق.
في حالة بيثون ، يكفي كتابة مسار الوحدة والإرشاد بشكل صريح:
sys.path.append(os.path.join(sys.path[0], '../../bin/')) sys.path.append(os.path.join(sys.path[0], '../../bindings/')) import pySmartIdEngine
في PHP ، يتم استيراد وحدة نمطية بنفس الطريقة:
require(“phpSmartIdEngine.php");
ولكن مع الإضافة ، يكون الأمر أكثر تعقيدًا بعض الشيء - لا يعمل الارتباط الديناميكي في بعض الإصدارات ، لذا للعمل باستمرار مع الإضافة تحتاج إلى وضعها في المجلد حيث توجد جميع الإضافات لإصدارك (على سبيل المثال / usr / lib / php56 / modules) والاتصال ، الكتابة في php.ini الافتراضي
extension=phpSmartisEngine.so
في المثال مع GitHub ، نطلب فقط من المترجم الشفوي استخدام php.ini مع الامتداد المسجل بالفعل
php56 -c php.ini smartid_sample.php
لذلك ، اكتشفنا الاتصال ، لا تتردد في دراسة مثال!
تعلم الواجهة
يبدأ المثال بثلاثة وسيطات - المسار إلى الصورة التي سيتم التعرف عليها ، والمسار إلى الأرشيف مع تكوين المحرك ونوع المستند الذي سيتم التعرف عليه (الاختبارات تشغل مثال rus.passport.national (جواز سفر مواطن من الاتحاد الروسي))
python smartid_sample.py ../../testdata/passport_rf_2.jpg ../../data-zip/bundle_mock_smart_idreader.zip rus.passport.national
كيف يعمل:
سنناقش طرق تحميل الصورة بمزيد من التفاصيل: يمكن أن يكون المسار إلى الملف وخطًا في Base64 ومخزنًا مؤقتًا في الذاكرة (كلا البيانات بتنسيقات RGB \ YUV NV21 وملف jpeg نفسه). يمكن أن تكون المخازن المؤقتة خارجية ، وكذلك يمكن استردادها من كائن من فئة الصورة (بعد إنشائها بتحديد المسار إلى الملف أو باستخدام نفس المخزن المؤقت)
هام: لا يمكن الوصول إلى الصورة نفسها بتنسيق RGB أو YUV إلا في وحدة Python باستخدام كائن bytearray (إنشاء كائن بالحجم المطلوب ، تمريره إلى أسلوب CopyToBuffer ، راجع مثال) ، في PHP يمكنك فقط العمل مع سلسلة تنسيق Base64!
يبدو هذا تمامًا (في بيثون):
engine = pySmartIdEngine.RecognitionEngine(config_path) session_settings = engine.CreateSessionSettings() session_settings.SetEnabledDocumentTypes(document_types)
تسمح لك وحدات Python و PHP بالاستفادة من جميع الوظائف التي توفرها واجهة C ++ في مكتبتنا (باستثناء العمل مع مخزن مؤقت في PHP ، كما هو موضح أعلاه).
استنتاج
فكرنا في العمل مع SmartIdEngine SDK في Python و PHP ، في الأمثلة التي عكسناها جميع الصعوبات التي قد تواجهها في عملية نشر الوحدة النمطية على جهاز العمل. تتيح لك نسخة المكتبة الوهمية ، المعروضة في جيثب ، إظهار آلية نشر الوحدة النمطية ودراسة واجهتها دون أي وظيفة تمييز. للحصول على نسخة تجريبية ، يرجى الاتصال بنا: support@smartengines.ru