Nosotros, Smart Engines , continuamos con la serie de art铆culos sobre c贸mo integrar nuestras tecnolog铆as de reconocimiento ( pasaportes , tarjetas bancarias y otras) en sus aplicaciones. Anteriormente escribimos sobre incrustaci贸n en iOS y Android , mostramos c贸mo incrustar el reconocimiento en el bot de Telegram , y hoy hablaremos sobre c贸mo trabajar con las interfaces Python y PHP de la biblioteca de reconocimiento Smart IDReader para usar en un servidor interno.
Por cierto, la lista de lenguajes de programaci贸n que admitimos, adem谩s de los discutidos aqu铆, incluye C #, Objective-C, Swift y Java. Como antes, admitimos todos los sistemas operativos y arquitecturas populares y muchos impopulares, y nuestras aplicaciones de demostraci贸n gratuitas est谩n disponibles para descargar desde la App Store y Google Play .
Por tradici贸n, la versi贸n demo del Smart IDReader SDK para Python y PHP junto con ejemplos est谩 disponible en Github y est谩 disponible aqu铆.
Poner una envoltura
Dado que la versi贸n del complemento debe coincidir con la versi贸n del int茅rprete, no suministramos un m贸dulo listo para usar, sino un ensamblador autom谩tico que le permite recopilar e implementar el contenedor de biblioteca de reconocimiento Smart IDReader necesario en su m谩quina (se admiten Python 2/3 y PHP 5/7). Para hacer esto, debe ejecutar el script de ensamblaje apropiado, indicando la ruta a nuestra biblioteca libsmartidEngine.so y la versi贸n del int茅rprete para la que necesita construir el m贸dulo. Por ejemplo, para Python, se ve as铆:
bash build_python.sh ../../bin 3
PHP funciona de manera similar, solo el segundo argumento es la ruta a la configuraci贸n de php que usa:
bash build_php.sh ../../bin /usr/bin/php56-config
Importante: despu茅s del ensamblaje, el m贸dulo resultante se referir谩 a libSmartidEngine.so en la ruta absoluta, 隆as铆 que primero instale la biblioteca en un directorio conveniente para usted!
El ensamblador autom谩tico desempaquetar谩 el SWIG suministrado en el ensamblaje, generar谩 un m贸dulo y lo verificar谩 ejecutando la prueba.
El contenedor de la biblioteca incluye dos archivos: un m贸dulo escrito en Python / PHP y una extensi贸n para el int茅rprete (_pySmartIdEngine.so para Python y phpSmartidEngine.so). Para integrar el reconocimiento en el proyecto, debe importar el m贸dulo y conectar la extensi贸n.
En el caso de Python, para esto es suficiente escribir expl铆citamente la ruta al m贸dulo y la extensi贸n:
sys.path.append(os.path.join(sys.path[0], '../../bin/')) sys.path.append(os.path.join(sys.path[0], '../../bindings/')) import pySmartIdEngine
En PHP, un m贸dulo se importa de la misma manera:
require(鈥減hpSmartIdEngine.php");
pero con la extensi贸n es un poco m谩s complicado: el enlace din谩mico no funciona en algunas versiones, por lo que para trabajar constantemente con la extensi贸n debe colocarlo en la carpeta donde se encuentran todas las extensiones para su versi贸n (por ejemplo / usr / lib / php56 / modules) y conectarse, escritura en php.ini predeterminado
extension=phpSmartisEngine.so
En el ejemplo con GitHub, solo le decimos al int茅rprete que use nuestro php.ini con la extensi贸n ya registrada
php56 -c php.ini smartid_sample.php
Entonces, descubrimos la conexi贸n, 隆no dude en estudiar un ejemplo!
Aprendiendo la interfaz
El ejemplo comienza con tres argumentos: la ruta a la imagen a reconocer, la ruta al archivo con la configuraci贸n del motor y el tipo de documento a reconocer (las pruebas ejecutan el ejemplo para rus.passport.national (pasaporte de un ciudadano de la Federaci贸n de Rusia))
python smartid_sample.py ../../testdata/passport_rf_2.jpg ../../data-zip/bundle_mock_smart_idreader.zip rus.passport.national
C贸mo funciona
Nos detendremos en los m茅todos para cargar la imagen con m谩s detalle: puede ser la ruta al archivo, una l铆nea en Base64 y un b煤fer en la memoria (ambos datos en los formatos RGB \ YUV NV21 y el archivo jpeg). Los buffers pueden ser externos, o pueden extraerse de un objeto de la clase Image (despu茅s de crearlo especificando la ruta al archivo o usando el mismo buffer)
Importante: solo se puede acceder a la imagen en formato RGB o YUV en el m贸dulo Python utilizando un objeto bytearray (cree un objeto del tama帽o requerido, p谩selo al m茅todo CopyToBuffer, vea un ejemplo), 隆en PHP solo puede trabajar con una cadena de formato Base64!
Completamente se ve as铆 (en Python):
engine = pySmartIdEngine.RecognitionEngine(config_path) session_settings = engine.CreateSessionSettings() session_settings.SetEnabledDocumentTypes(document_types)
Los m贸dulos Python y PHP le permiten aprovechar todas las funcionalidades proporcionadas por la interfaz C ++ de nuestra biblioteca (con la excepci贸n de trabajar con un buffer en PHP, como se describi贸 anteriormente).
Conclusi贸n
Consideramos trabajar con SmartIdEngine SDK en Python y PHP, en los ejemplos reflejamos todas las dificultades que puede encontrar en el proceso de implementaci贸n del m贸dulo en una m谩quina en funcionamiento. La versi贸n simulada de la biblioteca, presentada en el github, le permite demostrar el mecanismo de implementaci贸n del m贸dulo y estudiar su interfaz sin ninguna funcionalidad de reconocimiento. Para una versi贸n de prueba, cont谩ctenos: support@smartengines.ru