Kami, Smart Engine , melanjutkan serangkaian artikel tentang bagaimana mengintegrasikan teknologi pengenalan kami ( paspor , kartu bank , dan lainnya) ke dalam aplikasi Anda. Sebelumnya kami menulis tentang menanamkan di iOS dan Android , menunjukkan bagaimana menanamkan pengakuan dalam bot Telegram , dan hari ini kita akan berbicara tentang cara bekerja dengan antarmuka Python dan PHP dari perpustakaan pengenalan Smart IDReader untuk digunakan pada server internal.
Omong-omong, daftar bahasa pemrograman yang kami dukung, selain yang dibahas di sini, termasuk C #, Objective-C, Swift, dan Java. Seperti sebelumnya, kami mendukung semua sistem operasi dan arsitektur yang populer dan banyak tidak populer, dan aplikasi demo gratis kami tersedia untuk diunduh dari App Store dan Google Play .
Secara tradisional, versi demo dari Smart IDReader SDK untuk Python dan PHP bersama dengan contoh tersedia di Github dan tersedia di sini.
Puting Bungkus
Karena versi plug-in harus sesuai dengan versi interpreter, kami tidak menyediakan modul yang sudah jadi, tetapi sebuah assembler otomatis yang memungkinkan Anda untuk mengumpulkan dan menggunakan pembungkus pustaka perpustakaan Smart IDReader Smart yang diperlukan pada mesin Anda (didukung Python 2/3 dan PHP 5/7). Untuk melakukan ini, Anda perlu menjalankan skrip perakitan yang sesuai, menunjukkan jalur ke libsmartidEngine.so pustaka kami dan versi penerjemah yang Anda perlukan untuk membangun modul. Misalnya, untuk Python, tampilannya seperti ini:
bash build_python.sh ../../bin 3
PHP berjalan dengan cara yang sama, hanya argumen kedua adalah path ke php-config yang Anda gunakan:
bash build_php.sh ../../bin /usr/bin/php56-config
Penting: setelah perakitan, modul yang dihasilkan akan merujuk ke libSmartidEngine.so di jalur absolut, jadi instal perpustakaan terlebih dahulu di direktori yang nyaman bagi Anda!
Assembler otomatis akan membongkar SWIG yang disediakan dalam perakitan, menghasilkan modul dan memverifikasinya dengan menjalankan tes.
Pembungkus perpustakaan mencakup dua file - modul yang ditulis dalam Python / PHP, dan ekstensi untuk penerjemah (_pySmartIdEngine.so untuk Python dan phpSmartidEngine.so). Untuk mengintegrasikan pengakuan ke dalam proyek, Anda perlu mengimpor modul dan menghubungkan ekstensi.
Dalam kasus Python, untuk ini cukup menulis jalur ke modul dan ekstensi:
sys.path.append(os.path.join(sys.path[0], '../../bin/')) sys.path.append(os.path.join(sys.path[0], '../../bindings/')) import pySmartIdEngine
Dalam PHP, modul diimpor dengan cara yang sama:
require(“phpSmartIdEngine.php");
tetapi dengan ekstensi itu sedikit lebih rumit - penautan dinamis tidak berfungsi di beberapa versi, jadi untuk bekerja terus-menerus dengan ekstensi Anda perlu meletakkannya di folder tempat semua ekstensi untuk versi Anda berada (misalnya / usr / lib / php56 / modules) dan sambungkan, menulis di php.ini default
extension=phpSmartisEngine.so
Dalam contoh dengan GitHub, kami hanya memberi tahu penerjemah untuk menggunakan php.ini kami dengan ekstensi yang sudah terdaftar
php56 -c php.ini smartid_sample.php
Jadi, kami menemukan hubungannya, silakan mempelajari contoh!
Mempelajari antarmuka
Contoh dimulai dengan tiga argumen - jalur ke gambar yang akan dikenali, jalur ke arsip dengan konfigurasi untuk mesin dan jenis dokumen yang akan dikenali (tes menjalankan contoh untuk rus.passport.national (paspor warga negara Federasi Rusia))
python smartid_sample.py ../../testdata/passport_rf_2.jpg ../../data-zip/bundle_mock_smart_idreader.zip rus.passport.national
Cara kerjanya:
Kita akan membahas metode memuat gambar secara lebih rinci: itu bisa menjadi jalur ke file, garis dalam Base64 dan buffer dalam memori (baik data dalam format RGB \ YUV NV21 dan file jpeg itu sendiri). Buffer bisa eksternal, dan juga bisa diambil dari objek kelas Image (setelah membuatnya dengan menentukan path ke file atau menggunakan buffer yang sama)
Penting: gambar itu sendiri dalam format RGB atau YUV hanya dapat diakses dalam modul Python menggunakan objek bytearray (buat objek dengan ukuran yang diperlukan, kirimkan ke metode CopyToBuffer, lihat contoh), dalam PHP Anda hanya dapat bekerja dengan string format Base64!
Seluruhnya terlihat seperti ini (dengan Python):
engine = pySmartIdEngine.RecognitionEngine(config_path) session_settings = engine.CreateSessionSettings() session_settings.SetEnabledDocumentTypes(document_types)
Modul Python dan PHP memungkinkan Anda memanfaatkan semua fungsi yang disediakan oleh antarmuka C ++ perpustakaan kami (dengan pengecualian bekerja dengan buffer dalam PHP, seperti dijelaskan di atas).
Kesimpulan
Kami mempertimbangkan bekerja dengan SmartIdEngine SDK dalam Python dan PHP, dalam contoh-contoh kami mencerminkan semua kesulitan yang mungkin Anda temui dalam proses penempatan modul pada mesin yang berfungsi. Mock-versi perpustakaan, disajikan di github, memungkinkan Anda untuk mendemonstrasikan mekanisme penyebaran modul dan mempelajari antarmuka mereka tanpa fungsi pengenalan. Untuk versi uji coba, silakan hubungi kami: support@smartengines.ru