OCTUS SDK utilise des technologies avancées d'apprentissage en profondeur pour une numérisation ID précise et rapide et l'OCR. Les entreprises peuvent intégrer le SDK Octus dans les applications Android natives qui sont livrées avec des écrans et des configurations prédéfinis. Le SDK renvoie les images numérisées, les données extraites et les codes d'erreur. Et en tant que mesure de sécurité, le SDK ne stocke aucune des données personnelles ou des images d'identification qui sont analysées.
Pour la liste des documents pris en charge par pays, reportez-vous aux documents pris en charge spécifiques du pays octus
Vous pouvez trouver la dernière version et publier l'historique ici
‼ Attention‼ → Changement de rupture introduit sur Octus SDK v3.8.0
. Nous avons introduit un nouveau format de licence. Si vous utilisez des versions avant v3.8.0
et que vous avez l'intention de mettre à jour la v3.8.0
ou plus, veuillez contacter [email protected]
pour une licence mise à jour.
Vous aurez besoin d'une licence valide pour utiliser le SDK Octus, qui peut être obtenu en contactant [email protected]
.
Selon la licence - hors ligne ou en ligne - vous avez opté pour les fonctionnalités de ping aux serveurs de facturation sera désactivée ou activée. Par exemple, si vous avez opté pour le modèle SDK hors ligne, il n'y aura pas de ping de serveur nécessaire à notre serveur de facturation pour vous facturer. Cependant, si vous avez choisi une tarification basée sur les transactions, après chaque transaction, une demande de ping sera faite à notre serveur de facturation. Cela ne peut pas être remplacé par l'application. Un point à noter est que si la transaction de ping échoue pour une raison quelconque, l'ensemble de la transaction sera vide sans aucun résultat du SDK.
Une fois que vous avez la licence, suivez les instructions ci-dessous pour une intégration réussie du SDK Octus sur votre application Android.
Cette section répertorie les bibliothèques SDK Octus qui sont disponibles pour Android avec leurs dépendances Gradle, la dernière version et leur taille.
Bibliothèque SDK | Dépôt de grade | Dernière version | Taille |
---|---|---|---|
Octus SDK (requis) | com.frslabs.android.sdk: octus | 9.1 Mb | |
SDK coérément groupé (requis) | com.frslabs.android.sdk: core-face-bundled | 6,2 Mb | |
SDK de base en texte (requis) | com.frslabs.android.sdk: core-text-bundled | 4,0 Mb | |
SDK groupé à balayage central (requis) | com.frslabs.android.sdk: core-scan bundled | 2,4 Mb |
Octus utilise des capacités de détection de visage via l'une ou l'autre de ces deux dépendances, et il est nécessaire d'inclure l'un d'eux. Le SDK coérément groupé et le SDK non dégroupé face. Si la taille n'est pas un problème, nous vous recommandons d'opter avec le SDK coérément groupé. Plus de détails sur ces dépendances se trouvent ci-dessous.
Incluez cette dépendance si la taille du SDK n'est pas un problème (ajoute ~ 6,2 Mo à la taille de l'application). Ceci est l'approche recommandée.
Incluez cette dépendance si l'augmentation de la taille du SDK est une préoccupation (ajoute ~ 600 Ko à la taille de l'application). Cependant, lors de la première exécution (et uniquement lors de la première exécution), les dépendances du visage sont téléchargées tandis que les utilisateurs sont affichés un écran avec une barre de progression. Le SDK groupé en face n'a pas ce comportement car tous les fichiers associés sont regroupés pendant le temps de compilation lui-même (d'où l'augmentation de la taille).
Octus utilise également des capacités de détection de texte via l'une ou l'autre de ces deux dépendances, et il est nécessaire d'inclure l'un d'eux. SDK du texte de base et du texte de base SDK non déposé. Si la taille n'est pas un problème, nous vous recommandons d'aller avec le SDK de base du texte. Plus de détails sur ces dépendances se trouvent ci-dessous.
Incluez cette dépendance si la taille du SDK n'est pas un problème (ajoute ~ 4,0 Mo à la taille de l'application). Ceci est l'approche recommandée.
Incluez cette dépendance si l'augmentation de la taille du SDK est une préoccupation (ajoute ~ 250 Ko à la taille de l'application). Cependant, lors de la première exécution (et uniquement lors de la première exécution), les dépendances de texte sont téléchargées tandis que les utilisateurs sont affichés un écran avec une barre de progression. Le SDK de base en texte n'a pas ce comportement car tous les fichiers associés sont regroupés pendant le temps de compilation lui-même (d'où l'augmentation de la taille).
Octus utilise également des capacités de détection de numérisation via l'une ou l'autre de ces deux dépendances, et il est nécessaire d'inclure l'un d'eux. Le SDK groupé et le SDK non insufflé. Si la taille n'est pas un problème, nous vous recommandons d'opter avec le SDK groupé à balayage central. Plus de détails sur ces dépendances se trouvent ci-dessous.
Incluez cette dépendance si la taille du SDK n'est pas un problème (ajoute ~ 2,4 Mo à la taille de l'application). Ceci est l'approche recommandée.
Incluez cette dépendance si l'augmentation de la taille du SDK est une préoccupation (ajoute ~ 200 Ko à la taille de l'application). Cependant, lors de la première exécution (et uniquement lors de la première exécution), les dépendances de numérisation sont téléchargées tandis que les utilisateurs sont affichés un écran avec une barre de progression. Le SDK groupé de noyau n'a pas ce comportement car tous les fichiers associés sont regroupés pendant le temps de compilation lui-même (d'où l'augmentation de la taille).
Version du SDK minimum - 19 (KitKat) ou supérieur
Les utilisateurs existants utilisant la version 2.xx peuvent continuer à utiliser les SDK jusqu'en novembre 2020 si aucune modification n'est apportée à l'application. Et toutes les nouvelles applications que vous développez ou si vous mettez à jour votre application existante, vous devez utiliser SDK version 3.xx qui est compatible Androidx. À partir du 01 août 2020, toutes les nouvelles applications intégrant notre SDK doivent utiliser la version 3.xx. La prise en charge de la version 2.xx cessera le 01 novembre 2020. Veuillez nous écrire en [email protected] Si vous avez besoin de plus d'informations sur la version Androidx.
Ajoutez le code suivant au fichier project
build.gradle
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> '
}
}
}
}
}
Après cela, ajoutez le code suivant au fichier app
build.gradle
// ...
defaultConfig {
// ...
ndk {
abiFilters " armeabi-v7a " , " arm64-v8a " , " x86 " , " x86_64 "
}
vectorDrawables . useSupportLibrary true
renderscriptTargetApi 21
renderscriptSupportModeEnabled false
}
// ...
Et puis, trouvez la dernière version du SDK Octus ici et ajoutez les dépendances
// ...
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 nécessite l'autorisation de la caméra pour initier son scanner
< 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 >
Initialisez l'instance Octus
avec les configurations appropriées pour invoquer le SDK octus
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 ();
}
}
// ...
}
Pour tous parameters
et leurs valeurs possibles, référez-vous aux paramètres octus
Votre activité doit mettre en œuvre OctusResultCallback
pour recevoir le résultat.
// ...
@ 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 ();
}
// ...
Pour tous errorCode
et leurs significations, référez les codes d'erreur octus
Le résultat du scan est obtenu à partir de l'instance OctusResult
. Le résultat complet des octus est donné ci-dessous,
// ...
@ 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 ();
}
// ...
Voici quelques méthodes publiques d' OctusResult
en bref
Méthodes publiques | ||
---|---|---|
Chaîne | getaadhaarmaskstatus () | Obtient le statut de masquage du numéro Aadhaar. Les valeurs possibles sont, |
Les codes d'erreur et leur signification sont tabulés ci-dessous
Code | Message |
---|---|
801 | Scan chronométré |
802 | Les paramètres d'identification non valides sont passés |
803 | Autorisation de la caméra refusée |
804 | Scan interrompu |
805 | Licence expirée |
806 | Licence non valide |
807 | Résolution de la caméra non valide |
811 | QR non détecté |
812 | L'analyse QR a échoué |
814 | Erreur de caméra |
108 | Internet indisponible |
401 | Limite API dépassée |
429 | Trop de demandes |
501, 502 | Erreur IO de Proteus Edge |
503 | Erreur de dépendance GMS |
504 | Erreur de dépendance du module face |
setLicenseKey(String octusLicenseKey)
(requis)
Accepte la clé de licence Octus comme une String
setScanMode(Utility.ScanMode scanMode)
(requis)
Définit le mode de balayage
Valeur | Effet |
---|---|
Utility.scanmode.auto | Commence automatiquement à numériser dès que l'aperçu de la caméra est prêt |
Utility.scanMode.manual | Affiche un bouton utilisé pour démarrer la numérisation lorsque vous cliquez sur |
setDocumentType(Document documentType)
(requis)
Définit le document qui doit être scanné. Les valeurs possibles sont,
Valeur | Effet |
---|---|
Document.pan | Carte panoramique |
Document.adr | Carte aadhaar |
Document.vid | Carte d'électeur |
Document.nid | Id national |
Document.ppt | Passeport |
Document.vsa | Visa |
Document.drv | Permis de conduire |
Document.cql | Vérifier la feuille |
Document.ssn | Numéro de sécurité sociale |
Document.frm16 | Formulaire 16 |
Document.gst | Forme de TPS |
Document.img_adr | Capture d'image Aadhaar |
Document.img_any | Capture d'image simple |
setDocumentCountry(Country country)
(requis)
Définit le pays associé au document.
Pour la liste complète des pays pris en charge, référez les paramètres du pays
setDocumentSubType(Utility.SubType subType)
(requis)
Définit le sous-type de document. La majorité des documents prennent en charge uniquement Utility.SubType.OCR
en tant que sous-type.
Documents où à la fois Utility.SubType.OCR
et Utility.SubType.QR_CODE
s'appliquent,
Document.ADR
Document.DRV
Documents où à la fois Utility.SubType.MRZ
et Utility.SubType.OCR
appliquent,
Document.NID
Documents où seul Utility.SubType.MRZ
s'appliquent,
Document.PPT
Document.VSA
Documents où seul l' Utility.SubType.PDF417
s'applique est,
Document.DRV
pour Country.NG
Document.VID
pour Country.NG
Les valeurs possibles pour le sous-type sont,
Valeur | Effet |
---|---|
Utility.subtype.ocr | Analyse le document en mode OCR |
Utility.subtype.qr_code | Scanne le document en mode QR |
Utility.subtype.mrz | Scanne le document en mode MRZ |
Utility.subtype.pdf417 | Analyse le document en mode PDF417 |
setLanguage(Utility.Language language)
(facultatif) (par défaut à utility.language.en )
Définit la langue associée au document. Les valeurs possibles sont,
Valeur | Effet |
---|---|
Utility.language.en | Anglais |
Utility.language.fr | Français |
Utility.language.es | Espagnol |
Utility.language.ar | arabe |
Utility.language.hi | hindi |
showInstruction(boolean show)
(facultatif) (par défaut est false )
Définit l'indicateur pour activer / désactiver l'écran d'instructions avant la numérisation. Les valeurs possibles sont,
Valeur | Effet |
---|---|
vrai | Active l'écran d'instructions |
FAUX | Désactive l'écran d'instructions |
setScanAlertType(Utility.Alert alertType)
(facultatif) (par défaut à utility.alert.sound_vibration )
Définit le type d'alerte lorsque le SDK renvoie le résultat
Valeur | Effet |
---|---|
Utilitaire.Alert.sound | Déclenche un son bip une fois le scan terminé |
Utilitaire.Alert.vibration | Déclenche une réponse haptique légère (alerte de vibration) une fois le scan terminé |
Utility.alert.mone | Désactive tous les commentaires sur le scan terminé |
Utility.alert.sound_vibration | Déclenche à la fois le son bip et la réponse haptique une fois le scan terminé |
setDocumentSide(Utility.Side documentSide)
(facultatif) (par défaut à utility.side.front_back )
Définit la valeur du côté document à analyser
Valeur | Effet |
---|---|
Utility.side.front | Analyse uniquement le côté avant (primaire) du document |
Utility.side.back | Analyse uniquement le côté arrière (secondaire) du document |
Utility.side.front_back | Scans à l'avant et à l'arrière du document |
dataPointsAll(boolean dataPointCategory)
(facultatif) (par défaut à false )
Définit l'indicateur pour définir la catégorie de point de données
Valeur | Effet |
---|---|
vrai | Fournit le résultat de scan uniquement si tous les points de données sont trouvés |
FAUX | Fournit le résultat de scan si au moins l'un des points de données est trouvé |
orientationFlat(boolean isOrientationFlat)
(facultatif) (par défaut est false )
Définit la valeur pour laquelle le scanner doit verrouiller l'orientation par rapport à la surface de balayage. Les valeurs possibles sont,
Valeur | Effet |
---|---|
vrai | Les analyses uniquement lorsque l'orientation du téléphone (caméra) est perpendiculaire (plate) à la surface de balayage. |
FAUX | Scans ignorant l'orientation du téléphone (appareil photo) à la surface de balayage. |
aadhaarNumberMasked(boolean numberMasked)
(facultatif) (par défaut à false ) (s'applique uniquement à document.adr et country.in)
Définit le drapeau pour activer / désactiver le masquage du numéro Aadhaar
Valeur | Effet |
---|---|
vrai | Masque le numéro Aadhaar dans le résultat de scan (image) |
FAUX | désactive le masquage du numéro Aadhaar dans le résultat de la numérisation |
removeWatermark()
(facultatif) (s'applique uniquement à document.cql)
Définit le drapeau pour éliminer le filigrane sur l'image de sortie de la feuille de vérification. Si la méthode n'est pas appelée, le comportement par défaut consiste à inclure le filigrane.
setScanTimeLimit(timeInSec)
(facultatif)
Définit la limite de temps d'analyse de document (en SEC).
Taper | Valeur par défaut | Gamme |
---|---|---|
Document.cql | 25 | 12 - 30 |
Autres documents | 20 | 8 - 30 |
skipDocumentAlternateCaptureMode(boolean skipMode)
(facultatif) (par défaut à false ) (s'applique uniquement à document.e_mandate_cat1)
Définit l'indicateur pour activer / désactiver le mode de capture alternatif. Pour le moment, uniquement applicable pour document.e_mandate_cat1
Valeur | Effet |
---|---|
vrai | Désactive le mode de capture alternatif |
FAUX | Active le mode de capture alternatif |
Pour toute question / commentaire, contactez-nous à [email protected]