OCTUS SDK verwendet fortschrittliche Deep -Learning -Technologien für genaue und schnelle ID -Scans und OCR. Unternehmen können das OCTUS-SDK in native Android-Apps integrieren, die mit vorgefertigten Bildschirmen und Konfigurationen geliefert werden. Der SDK gibt die gescannten Bilder, extrahierte Daten und Fehlercodes zurück. Und als Sicherheitsmaßnahme speichert der SDK keine der gescannten personenbezogenen Daten oder ID -Bilder.
Die Liste der unterstützten Dokumente pro Land finden Sie unter Octus Länderspezifische unterstützte Dokumente
Hier finden Sie die neueste Version und Veröffentlichung History hier
‼ Achtung‼ → Breaking -Veränderung eingeführt bei Octus SDK v3.8.0
. Wir haben ein neues Lizenzformat eingeführt. Wenn Sie Versionen vor v3.8.0
verwenden und beabsichtigen, auf v3.8.0
oder höher zu aktualisieren, wenden Sie sich bitte an [email protected]
um eine aktualisierte Lizenz zu erhalten.
Sie benötigen eine gültige Lizenz für die Verwendung des Octus SDK, der durch Kontakt mit [email protected]
erhalten werden kann.
Abhängig von der Lizenz - offline oder online - haben Sie sich entschieden, die Ping -Funktionalität für Abrechnungsserver wird deaktiviert oder aktiviert. Wenn Sie sich beispielsweise für das Offline -SDK -Modell entschieden haben, ist für unseren Abrechnungsserver kein Server -Ping erforderlich, um Sie in Rechnung zu stellen. Wenn Sie jedoch eine transaktionsbasierte Preisgestaltung ausgewählt haben, wird nach jeder Transaktion eine Ping -Anfrage an unseren Abrechnungsserver gestellt. Dies kann nicht von der App überschrieben werden. Wenn die Ping -Transaktion aus irgendeinem Grund fehlschlägt, ist die gesamte Transaktion ohne Ergebnisse ohne Ergebnisse aus dem SDK ungültig.
Sobald Sie die Lizenz haben, befolgen Sie die folgenden Anweisungen für eine erfolgreiche Integration von Octus SDK in Ihre Android -Anwendung.
In diesem Abschnitt werden die OCTUS -SDK -Bibliotheken aufgeführt, die für Android mit ihren Gradle -Abhängigkeiten, der neuesten Version und ihrer Größe verfügbar sind.
SDK -Bibliothek | Abhängigkeit von Gradle | Neueste Version | Größe |
---|---|---|---|
OktUS SDK (erforderlich) | com.frslabs.android.sdk: Oktus | 9,1 MB | |
Kerngesicht gebündelt SDK (erforderlich) | com.frSlabs.android.sdk: Core-Face-Bündel | 6,2 MB | |
Kerntext gebündelt SDK (erforderlich) | com.frslabs.android.sdk: core-textbundled | 4,0 MB | |
Kernscanbündelter SDK (erforderlich) | com.frSlabs.android.sdk: Core-Scan-Bündel | 2,4 MB |
OCTUS verwendet über diese beiden Abhängigkeiten die Gesichtserkennungsfunktionen, und es ist erforderlich, eine von ihnen einzuschließen. Kerngesicht gebündelt SDK und Kerngesicht ungebundener SDK. Wenn die Größe kein Problem ist, empfehlen wir, mit dem Kerngesichts -SDK zu gehen. Weitere Details zu diesen Abhängigkeiten finden Sie unten.
Geben Sie diese Abhängigkeit an, wenn die Größe des SDK kein Problem ist (fügt der App -Größe ~ 6,2 MB hinzu). Dies ist der empfohlene Ansatz.
Fügen Sie diese Abhängigkeit hinzu, wenn die Erhöhung der SDK -Größe ein Problem darstellt (fügt der App -Größe ~ 600 KB hinzu). Beim ersten Lauf (und nur beim ersten Lauf) werden die Gesichtsabhängigkeiten heruntergeladen, während den Benutzern ein Bildschirm mit einer Fortschrittsleiste angezeigt wird. Der bündelte Kerngesichts -SDK hat dieses Verhalten nicht, da alle zugehörigen Dateien während der Kompilierzeit selbst (daher die Größe der Größe) gebündelt werden.
OCTUS verwendet auch Texterkennungsfunktionen über eine dieser beiden Abhängigkeiten, und es ist erforderlich, eine von ihnen einzuschließen. Kerntext Bündelte SDK und Kerntext ungebundener SDK. Wenn Größe kein Problem ist, empfehlen wir, mit dem Kerntext SDK gebündelt zu werden. Weitere Details zu diesen Abhängigkeiten finden Sie unten.
Geben Sie diese Abhängigkeit an, wenn die Größe des SDK kein Problem ist (fügt der App -Größe ~ 4,0 MB hinzu). Dies ist der empfohlene Ansatz.
Fügen Sie diese Abhängigkeit hinzu, wenn die Erhöhung der SDK -Größe ein Problem darstellt (fügt der App -Größe ~ 250 KB hinzu). Beim ersten Lauf (und nur beim ersten Lauf) werden die Textabhängigkeiten jedoch heruntergeladen, während den Benutzern ein Bildschirm mit einer Fortschrittsleiste angezeigt wird. Der bündelte Kerntext hat dieses Verhalten nicht, da alle zugehörigen Dateien während der Kompilierzeit selbst gebündelt sind (daher die Größe der Größe).
OCTUS verwendet außerdem über eine dieser beiden Abhängigkeiten die Scan -Erkennungsfunktionen, und es ist erforderlich, eine von ihnen einzuschließen. Kernscan -Bündel SDK und Kernscan ungebund SDK. Wenn Größe kein Problem ist, empfehlen wir, mit dem Core -Scan -Bündel SDK zu gehen. Weitere Details zu diesen Abhängigkeiten finden Sie unten.
Geben Sie diese Abhängigkeit an, wenn die Größe des SDK kein Problem ist (fügt der App -Größe ~ 2,4 MB hinzu). Dies ist der empfohlene Ansatz.
Fügen Sie diese Abhängigkeit hinzu, wenn die Erhöhung der SDK -Größe ein Problem darstellt (fügt der App -Größe ~ 200 kb hinzu). Beim ersten Lauf (und nur beim ersten Lauf) werden die Scan -Abhängigkeiten jedoch heruntergeladen, während den Benutzern ein Bildschirm mit einer Fortschrittsleiste angezeigt wird. Der bündelte Kernscan -SDK hat dieses Verhalten nicht, da alle zugehörigen Dateien während der Kompilierzeit selbst gebündelt sind (daher die Größe der Größe).
Minimale SDK -Version - 19 (Kitkat) oder höher
Vorhandene Benutzer, die Version 2.xx verwenden, können die SDKs bis November 2020 weiterhin verwenden, wenn die App keine Änderungen vornehmen. Und alle neuen Anwendungen, die Sie entwickeln oder wenn Sie Ihre vorhandene Anwendung aktualisieren, müssen Sie SDK Version 3.xx verwenden, was Androidx -kompatibel ist. Ab dem 01. August 2020 müssen alle neuen Anwendungen, die unsere SDK integrieren, die 3.xx -Version verwenden. Die Unterstützung für Version 2.xx wird ab dem 01. November 2020 eingestellt. Bitte schreiben Sie uns als [email protected], wenn Sie weitere Informationen zur Androidx -Version benötigen.
Fügen Sie den folgenden Code zu Ihrem project
Level build.gradle
-Datei hinzu
allprojects {
repositories {
google()
jcenter()
// Repo for one of the dependencies
maven { url " https://jitpack.io " }
// Maven credentials for the Octus SDK
// Use `torus-android` if transaction based billing enabled
[ ' torus-android ' , ' octus-android ' , ' common-core-android ' ] . each { value ->
maven {
url " https://www.repo2.frslabs.space/repository/ ${ value } / "
credentials {
username ' <YOUR_USERNAME> '
password ' <YOUR_PASSOWRD> '
}
}
}
}
}
Fügen Sie danach den folgenden Code zu Ihrer app
-Ebene build.gradle
-Datei hinzu. Gradle -Datei
// ...
defaultConfig {
// ...
ndk {
abiFilters " armeabi-v7a " , " arm64-v8a " , " x86 " , " x86_64 "
}
vectorDrawables . useSupportLibrary true
renderscriptTargetApi 21
renderscriptSupportModeEnabled false
}
// ...
Und dann finden Sie hier die neueste Version von Octus SDK und fügen Sie die Abhängigkeiten hinzu
// ...
dependencies {
/* Dependencies for Octus SDK Using Androidx */
implementation ' com.google.android.material:<lastest version> '
implementation ' androidx.appcompat:appcompat:<latest version> '
implementation ' androidx.constraintlayout:constraintlayout:<latest version> '
// ...
/* Core Octus SDK Dependencies */
implementation ' com.frslabs.android.sdk:octus:3.X.X ' // Required . Find latest version at https://github.com/frslabs/octus-android/blob/master/CHANGELOG.md
implementation ' com.github.Tgo1014:JP2ForAndroid:1.0.4 ' // Required
implementation ' com.rmtheis:tess-two:9.1.0 ' // Required
// implementation 'com.google.mlkit:barcode-scanning:17.2.0' // Optional - Needed if document type is QR code
implementation ' com.google.mlkit:text-recognition:16.0.0 ' // Required
implementation " org.tensorflow:tensorflow-lite:2.16.1 "
implementation " org.tensorflow:tensorflow-lite-support:0.4.4 "
// REQUIRED : Use ANY ONE of the below core-face modules, i.e either core-face-bundled OR core-face-unbundled
// Recommended over core-face-unbundled
implementation ' com.frslabs.android.sdk:core-face-bundled:1.0.1 '
// Uncomment the below line and remove core-face-bundled mentioned above to use core-face-unbundled dependency.
// implementation 'com.frslabs.android.sdk:core-face-unbundled:1.0.1'
// Recommended over core-text-unbundled
implementation ' com.frslabs.android.sdk:core-text-bundled:1.0.0 '
// Uncomment the below line and remove core-text-bundled mentioned above to use core-text-unbundled dependency.
// implementation 'com.frslabs.android.sdk:core-text-unbundled:1.0.0'
implementation ' com.frslabs.android.sdk:core-scan-unbundled:1.0.0 '
implementation ' com.frslabs.android.sdk:torus:1.2.1 ' // Optional - Needed if transaction based billing is enabled
implementation ' com.google.code.gson:gson:2.8.6 ' // Optional - Needed if transaction based billing is enabled
// ...
}
OCTUS erfordert die Kameraberechtigung, um ihren Scanner zu initiieren
< manifest xmlns : android = " http://schemas.android.com/apk/res/android " package = " your.package.name " >
<!-- Required by Octus -->
< uses-permission android : name = " android.permission.CAMERA " />
<!-- Optional - Required if transaction based billing is enabled -->
< uses-permission android : name = " android.permission.INTERNET " />
< uses-permission android : name = " android.permission.ACCESS_NETWORK_STATE " />
< application >
...
</ application >
</ manifest >
Initialisieren Sie die Octus
-Instanz mit den entsprechenden Konfigurationen, um das OCTUS -SDK aufzurufen
public class MainActivity extends AppCompatActivity implements OctusResultCallback {
// ...
/* Enter the Octus license key here */
private String OCTUS_LICENSE_KEY = "<ENTER_YOUR_LICENSE_KEY_HERE>" ;
@ Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . activity_main );
Button callSdk = findViewById ( R . id . call_sdk );
callSdk . setOnClickListener ( new View . OnClickListener () {
@ Override
public void onClick ( View view ) {
/* Invoke the Octus Sdk */
callOctusSdk ();
}
});
}
private void callOctusSdk () {
try {
//Initialize the Octus Sdk Config object with the appropriate configurations
OctusConfig octusConfig = new OctusConfig . Builder ()
. setLicenseKey ( OCTUS_LICENSE_KEY )
. showInstruction ( false )
. setScanMode ( Utility . ScanMode . AUTO )
. dataPointsAll ( false )
. orientationFlat ( false )
. setScanAlertType ( Utility . Alert . VIBRATION )
. setLanguage ( Utility . Language . EN )
. setDocumentCountry ( Country . IN )
. setDocumentType ( Document . VID )
. setDocumentSubType ( Utility . SubType . OCR )
. setDocumentSide ( Utility . Side . FRONT_BACK )
. aadhaarNumberMasked ( false )
. removeWatermark () // Optional and only for Document.CQL
. build ();
//Call the Octus Sdk to start scanning
Octus . setSdkConfig ( octusConfig )
. enableLogs ()
. initialise ( this , this ); //Pass the main context here
} catch ( OctusInitException e ){
//Handle exception here
Toast . makeText ( this , e . getMessage (), Toast . LENGTH_SHORT ). show ();
e . printStackTrace ();
}
}
// ...
}
Für alle parameters
und deren möglichen Werte siehe OCTUS -Parameter
Ihre Aktivität muss OctusResultCallback
implementieren, um das Ergebnis zu erhalten.
// ...
@ Override
public void onScanSuccess ( OctusResult octusResult ) {
/* Handle the Octus Sdk result here */
Log . d ( "OctusSdk Result :" , octusResult . toString ());
}
@ Override
public void onScanFailure ( String errorCode ) {
/* Handle the Octus Sdk failure result here */
Toast . makeText ( this , "Error: " + errorCode , Toast . LENGTH_SHORT ). show ();
}
// ...
Für alle errorCode
und deren Bedeutungen beziehen sich Octus -Fehlercodes
Das Ergebnis des Scans erfolgt aus der OctusResult
-Instanz. Das vollständige Oktusergebnis ist unten angegeben.
// ...
@ Override
public void onScanSuccess ( OctusResult octusResult ) {
/* Handle the Octus Sdk result here */
Log . d ( "OctusSdk Result :" , octusResult . toString ());
/* Below values are given for ID card with MRTD & without MRTD */
String code = octusResult . getCode ();
String documentType = octusResult . getDocumentType ();
String documentCountry = octusResult . getDocumentCountry ();
String documentSubType = octusResult . getDocumentSubType ();
String documentSide = octusResult . getDocumentSide ();
String dataPointAll = octusResult . getDataPointAll ();
String name1 = octusResult . getName1 ();
String name2 = octusResult . getName2 ();
String idNumber1 = octusResult . getDocumentNumber1 ();
String idNumber2 = octusResult . getDocumentNumber2 ();
String dob = octusResult . getDateOfBirth ();
String expiry = octusResult . getExpiryDate ();
String gender = octusResult . getGender ();
String address1 = octusResult . getAddress1 ();
String address2 = octusResult . getAddress2 ();
String address3 = octusResult . getAddress3 ();
String address4 = octusResult . getAddress4 ();
String city = octusResult . getCity ();
String state = octusResult . getState ();
String idCountry = octusResult . getCountry ();
String idIssCountry = octusResult . getIssuingCountry ();
/* Below values gives the Document Image path */
String idFacePath = octusResult . getFace ();
String idFrontPhotoPath = octusResult . getPhoto1 ();
String idBackPhotopath = octusResult . getPhoto2 ();
/* Below values are applicable to Cheque Leaf (India) only */
String bankAccountNumber = octusResult . getBankAccountNumber ();
String bankAccIfsc = octusResult . getBankIfsCode ();
String gstn = octusResult . getGSTN ();
/* Below values are applicable to Voter ID (India) only */
String frontConfidenceScore = octusResult . getConfidenceIndexF ();
String backConfidenceScore = octusResult . getConfidenceIndexB ();
String frontIdOcrStatus = octusResult . getFrontIdScanStatus ();
String backIdOcrStatus = octusResult . getConfidenceIndexB ();
/* Below values are applicable to Aadhaar Card (India) only */
String aadhaarMaskStatus = octusResult . getAadhaarMaskStatus ();
/* Below values are applicable to MRTD supported documents only */
String isMRZChecksumValidated = octusResult . getMrzChecksumValidityStatus ();
}
// ...
Im Folgenden sind einige öffentliche Methoden von OctusResult
in kurzer Zeit aufgeführt
Öffentliche Methoden | ||
---|---|---|
Saite | getaadhaArmaskstatus () | Ruft den Aadhaar -Number -Maskierungsstatus ab. Mögliche Werte sind, |
Fehlercodes und ihre Bedeutung sind unten tabellarisch tabellarisch
Code | Nachricht |
---|---|
801 | SCAN -zeitgesteuert |
802 | Ungültige ID -Parameter übergeben |
803 | Kameraerlaubnis abgelehnt |
804 | Scan unterbrochen |
805 | Lizenz abgelaufen |
806 | Lizenz ungültig |
807 | Ungültige Kameraauflösung |
811 | Qr nicht erkannt |
812 | QR Parsing fehlgeschlagen |
814 | Kamerafehler |
108 | Internet nicht verfügbar |
401 | Die API -Grenze überschritten |
429 | Zu viele Anfragen |
501, 502 | Proteus Edge IO -Fehler |
503 | GMS -Abhängigkeitsfehler |
504 | Face -Modul -Abhängigkeitsfehler |
setLicenseKey(String octusLicenseKey)
(erforderlich)
Akzeptiert die OCTUS -Lizenzschlüssel als String
setScanMode(Utility.ScanMode scanMode)
(erforderlich)
Legt den Scanmodus fest
Wert | Wirkung |
---|---|
Utility.ScanMode.auto | Das automatische Scannen, sobald die Vorschau der Kamera fertig ist |
Utility.ScanMode.manual | Zeigt eine Schaltfläche an, mit der beim Klicken der Scan gestartet wird |
setDocumentType(Document documentType)
(erforderlich)
Legt das Dokument fest, das gescannt werden muss. Mögliche Werte sind,
Wert | Wirkung |
---|---|
Document.pan | Pan -Karte |
Document.adr | Aadhaar -Karte |
Document.vid | Wählerausweis |
Document.nid | Nationale ID |
Document.ppt | Reisepass |
Document.vsa | Visum |
Document.drv | Führerschein |
Document.cql | Blatt überprüfen |
Document.SSN | Sozialversicherungsnummer |
Document.frm16 | Form 16 |
Document.gst | GST -Form |
Document.img_adr | Bildaufnahme von Aadhaar |
Document.img_any | Einfache Bildaufnahme |
setDocumentCountry(Country country)
(erforderlich)
Legt das mit dem Dokument verbundene Land fest.
Für die vollständige Liste der unterstützten Länder beziehen sich Länderparameter
setDocumentSubType(Utility.SubType subType)
(erforderlich)
Legt den Dokument -Sub -Typ fest. Die Mehrheit der Dokumente unterstützt nur Utility.SubType.OCR
.
Dokumente, bei Utility.SubType.QR_CODE
sowohl Utility.SubType.OCR
Document.ADR
Document.DRV
Dokumente, bei Utility.SubType.OCR
sowohl Utility.SubType.MRZ
Document.NID
Dokumente, bei denen nur Utility.SubType.MRZ
gelten, sind,
Document.PPT
Document.VSA
Dokumente, bei denen nur Utility.SubType.PDF417
gelten, sind,
Document.DRV
für Country.NG
Document.VID
für Country.NG
Mögliche Werte für Sub -Typ sind,
Wert | Wirkung |
---|---|
Utility.SUBTYPE.OCR | Scannt das Dokument im OCR -Modus |
Utility.subype.qr_code | Scannt das Dokument im QR -Modus |
Utility.SUBTYPE.MRZ | Scannt das Dokument im MRZ -Modus |
Utility.SUBTYPE.PDF417 | Scannt das Dokument im PDF417 -Modus |
setLanguage(Utility.Language language)
(optional) (standardmäßig von Utility.luBanguage.en )
Legt die mit dem Dokument verknüpfte Sprache fest. Mögliche Werte sind,
Wert | Wirkung |
---|---|
Utility.Language.en | Englisch |
Utility.Language.fr | Französisch |
Utility.Language.es | Spanisch |
Utility.Language.ar | Arabisch |
Utility.Language.hi | Hindi |
showInstruction(boolean show)
(optional) (Standardeinstellung zu False )
Legt das Flag fest, um den Anweisungsbildschirm vor dem Scannen zu aktivieren/zu deaktivieren. Mögliche Werte sind,
Wert | Wirkung |
---|---|
WAHR | Aktiviert den Anweisungsbildschirm |
FALSCH | Deaktiviert den Anweisungsbildschirm |
setScanAlertType(Utility.Alert alertType)
(optional) (standardmäßig für das Dienstprogramm.alert.sound_vibration )
Legt den Alarmtyp fest, wenn der SDK das Ergebnis zurückgibt
Wert | Wirkung |
---|---|
Utility.Alert.Sound | Löst nach Abschluss des Scans einen Piepton -Sound aus |
Utility.alert.vibration | Löst eine milde haptische Reaktion (Vibrationswarnung) nach Abschluss des Scans aus |
Utility.Alert.None | Deaktiviert alle Feedback zum Abschluss des Scans |
Utility.Alert.Sound_vibration | Löst sowohl Piep -Sound als auch haptische Reaktion nach dem Scan ab |
setDocumentSide(Utility.Side documentSide)
(optional) (Standardeinstellung zu Utility.side.front_back )
Legt den Wert der zu scannten Dokumentseite fest
Wert | Wirkung |
---|---|
Utility.side.front | Scannt nur die vordere (primäre) Seite des Dokuments |
Utility.side.back | Scannt nur die Rückseite (sekundäre) Seite des Dokuments |
Utility.side.front_back | Scannt sowohl vorne als auch hinter der Rückseite des Dokuments |
dataPointsAll(boolean dataPointCategory)
(optional) (standardmäßig zu False )
Legt das Flag so fest, dass die Datenpunktkategorie festgelegt wird
Wert | Wirkung |
---|---|
WAHR | Bietet das Scan -Ergebnis nur, wenn alle Datenpunkte gefunden werden |
FALSCH | Bietet das Scan -Ergebnis, wenn mindestens einer der Datenpunkte gefunden wird |
orientationFlat(boolean isOrientationFlat)
(optional) (Standardeinstellung zu False )
Legt den Wert fest, für den der Scanner die Ausrichtung in Bezug auf die Scanoberfläche sperren sollte. Mögliche Werte sind,
Wert | Wirkung |
---|---|
WAHR | Scans nur, wenn die Ausrichtung des Telefons (Kamera) senkrecht (flach) auf der Scanoberfläche ist. |
FALSCH | Scans ignoriert die Ausrichtung des Telefons (Kamera) auf die Scanoberfläche. |
aadhaarNumberMasked(boolean numberMasked)
(optional) (Standardeinstellung zu False ) (gilt nur für document.adr und landes.in)
Legt die Flag
Wert | Wirkung |
---|---|
WAHR | Maskiert die Aadhaar -Nummer im Scan -Ergebnis (Bild) |
FALSCH | Deaktiviert das Maskieren der Aadhaar -Nummer im Scan -Ergebnis |
removeWatermark()
(optional) (gilt nur für document.cql)
Legt das Flag fest, um das Wasserzeichen über das Bild des Blattausgangs zu entfernen. Wenn keine Methode aufgerufen wird, soll das Standardverhalten das Wasserzeichen einbeziehen.
setScanTimeLimit(timeInSec)
(optional)
Legt das Dokument -Scan -Zeitlimit (in Sec) fest.
Typ | Standardwert | Reichweite |
---|---|---|
Document.cql | 25 | 12 - 30 |
Andere Dokumente | 20 | 8 - 30 |
skipDocumentAlternateCaptureMode(boolean skipMode)
(optional) (Standardeinstellung zu False ) (gilt nur für document.e_mandate_cat1)
Legt das Flag fest, um den alternativen Erfassungsmodus zu aktivieren/zu deaktivieren. Derzeit nur für document.e_mandate_cat1 anwendbar
Wert | Wirkung |
---|---|
WAHR | Deaktiviert den alternativen Erfassungsmodus |
FALSCH | Ermöglicht den alternativen Erfassungsmodus |
Für alle Fragen/Feedback kontaktieren Sie uns unter [email protected]