Wir, Smart Engines , setzen die Artikelserie fort, wie Sie unsere Erkennungstechnologien ( Pässe , Bankkarten und andere) in Ihre Anwendungen integrieren können. Früher haben wir über das Einbetten in iOS und Android geschrieben , gezeigt, wie die Erkennung in den Telegramm-Bot eingebettet wird, und heute werden wir darüber sprechen, wie man mit Python- und PHP-Schnittstellen der Smart IDReader-Erkennungsbibliothek für die Verwendung auf einem internen Server arbeitet.
Übrigens enthält die Liste der von uns unterstützten Programmiersprachen zusätzlich zu den hier beschriebenen C #, Objective-C, Swift und Java. Nach wie vor unterstützen wir alle gängigen und vielen unbeliebten Betriebssysteme und Architekturen. Unsere kostenlosen Demo-Anwendungen können im App Store und bei Google Play heruntergeladen werden.
Traditionell ist die Demoversion des Smart IDReader SDK für Python und PHP zusammen mit Beispielen auf Github verfügbar und hier verfügbar.
Einwickeln
Da die Version des Plug-Ins mit der Version des Interpreters übereinstimmen muss, liefern wir kein fertiges Modul, sondern einen Auto-Assembler, mit dem Sie den erforderlichen Wrapper für die Smart IDReader-Erkennungsbibliothek auf Ihrem Computer sammeln und bereitstellen können (Python 2/3 und PHP 5/7 werden unterstützt). Dazu müssen Sie das entsprechende Assemblyskript ausführen, das den Pfad zu unserer Bibliothek libsmartidEngine.so und die Version des Interpreters angibt, für den Sie das Modul erstellen müssen. Für Python sieht es beispielsweise so aus:
bash build_python.sh ../../bin 3
PHP läuft ähnlich ab, nur das zweite Argument ist der Pfad zu der von Ihnen verwendeten PHP-Konfiguration:
bash build_php.sh ../../bin /usr/bin/php56-config
Wichtig: Nach der Assembly verweist das resultierende Modul im absoluten Pfad auf libSmartidEngine.so. Installieren Sie die Bibliothek also zuerst in einem für Sie geeigneten Verzeichnis!
Der Auto-Assembler entpackt die in der Assembly gelieferte SWIG, generiert ein Modul und überprüft es, indem er den Test ausführt.
Der Bibliotheks-Wrapper enthält zwei Dateien - ein in Python / PHP geschriebenes Modul und eine Erweiterung für den Interpreter (_pySmartIdEngine.so für Python und phpSmartidEngine.so). Um die Erkennung in das Projekt zu integrieren, müssen Sie das Modul importieren und die Erweiterung verbinden.
Im Fall von Python reicht es aus, den Pfad zum Modul und zur Erweiterung explizit zu schreiben:
sys.path.append(os.path.join(sys.path[0], '../../bin/')) sys.path.append(os.path.join(sys.path[0], '../../bindings/')) import pySmartIdEngine
In PHP wird ein Modul auf folgende Weise importiert:
require(“phpSmartIdEngine.php");
Bei der Erweiterung ist dies jedoch etwas komplizierter. In einigen Versionen funktioniert die dynamische Verknüpfung nicht. Um also ständig mit der Erweiterung zu arbeiten, müssen Sie sie in den Ordner legen, in dem sich alle Erweiterungen für Ihre Version befinden (z. B. / usr / lib / php56 / modules) und eine Verbindung herstellen. Schreiben in der Standard-php.ini
extension=phpSmartisEngine.so
Im Beispiel mit GitHub weisen wir den Interpreter lediglich an, unsere php.ini mit der bereits registrierten Erweiterung zu verwenden
php56 -c php.ini smartid_sample.php
Also, wir haben den Zusammenhang herausgefunden, zögern Sie nicht, ein Beispiel zu studieren!
Die Benutzeroberfläche lernen
Das Beispiel beginnt mit drei Argumenten: dem Pfad zum zu erkennenden Bild, dem Pfad zum Archiv mit der Konfiguration für die Engine und dem zu erkennenden Dokumenttyp (Tests führen das Beispiel für rus.passport.national aus (Pass eines Bürgers der Russischen Föderation))
python smartid_sample.py ../../testdata/passport_rf_2.jpg ../../data-zip/bundle_mock_smart_idreader.zip rus.passport.national
Wie es funktioniert:
Wir werden uns eingehender mit den Methoden zum Laden des Bildes befassen: Dies kann der Pfad zur Datei, eine Zeile in Base64 und ein Puffer im Speicher sein (sowohl Daten in den Formaten RGB \ YUV NV21 als auch die JPEG-Datei selbst). Die Puffer können sowohl extern als auch von einem Objekt der Image-Klasse abgerufen werden (nachdem Sie sie erstellt haben, indem Sie den Pfad zur Datei angegeben oder denselben Puffer verwendet haben).
Wichtig: Auf das Bild selbst im RGB- oder YUV-Format kann nur im Python-Modul mit einem Bytearray-Objekt zugegriffen werden (erstellen Sie ein Objekt der erforderlichen Größe, übergeben Sie es an die CopyToBuffer-Methode, siehe Beispiel). In PHP können Sie nur mit einer Base64-Formatzeichenfolge arbeiten!
Ganz sieht es so aus (in Python):
engine = pySmartIdEngine.RecognitionEngine(config_path) session_settings = engine.CreateSessionSettings() session_settings.SetEnabledDocumentTypes(document_types)
Mit Python- und PHP-Modulen können Sie alle Funktionen der C ++ - Schnittstelle unserer Bibliothek nutzen (mit Ausnahme der Arbeit mit einem Puffer in PHP, wie oben beschrieben).
Fazit
Wir haben überlegt, mit dem SmartIdEngine SDK in Python und PHP zu arbeiten. In den Beispielen haben wir alle Schwierigkeiten aufgezeigt, die bei der Bereitstellung des Moduls auf einem funktionierenden Computer auftreten können. Mit der Mock-Version der Bibliothek, die auf dem Github vorgestellt wird, können Sie den Mechanismus der Modulbereitstellung demonstrieren und deren Schnittstelle ohne Erkennungsfunktionalität untersuchen. Für eine Testversion kontaktieren Sie uns bitte: support@smartengines.ru