Octus SDK menggunakan teknologi pembelajaran mendalam canggih untuk pemindaian ID yang akurat dan cepat dan OCR. Bisnis dapat mengintegrasikan Octus SDK ke dalam aplikasi Android asli yang dilengkapi dengan layar dan konfigurasi yang sudah dibangun. SDK mengembalikan gambar yang dipindai, mengekstraksi data dan kode kesalahan. Dan sebagai tindakan pengaman, SDK tidak menyimpan data pribadi atau gambar ID yang dipindai.
Untuk daftar dokumen yang didukung per negara, lihat dokumen khusus yang didukung oleh Octus Country
Anda dapat menemukan versi terbaru dan rilis riwayat di sini
‼ Perhatian‼ → Perubahan Breaking Diperkenalkan di Octus SDK v3.8.0
. Kami telah memperkenalkan format lisensi baru. Jika Anda menggunakan versi sebelum v3.8.0
dan bermaksud untuk memperbarui ke v3.8.0
atau lebih tinggi, silakan hubungi [email protected]
untuk lisensi yang diperbarui.
Anda akan memerlukan lisensi yang valid untuk menggunakan Octus SDK, yang dapat diperoleh dengan menghubungi [email protected]
.
Bergantung pada lisensi - offline atau online - Anda telah memilih, fungsionalitas ping ke server penagihan akan dinonaktifkan atau diaktifkan. Misalnya, jika Anda memilih model SDK offline, maka tidak akan ada server ping yang diperlukan ke server penagihan kami untuk menagih Anda. Namun, jika Anda telah memilih harga berbasis transaksi, maka setelah setiap transaksi, permintaan ping akan dilakukan ke server penagihan kami. Ini tidak dapat diubah oleh aplikasi. Poin yang perlu diperhatikan adalah bahwa jika transaksi ping gagal karena alasan apa pun, seluruh transaksi akan batal tanpa hasil dari SDK.
Setelah Anda memiliki lisensi, ikuti instruksi di bawah ini untuk integrasi Octus SDK yang berhasil ke aplikasi Android Anda.
Bagian ini mencantumkan perpustakaan Octus SDK yang tersedia untuk Android dengan dependensi lulusan mereka, versi terbaru, dan ukurannya.
Perpustakaan SDK | Ketergantungan lulusan | Versi Terbaru | Ukuran |
---|---|---|---|
Octus SDK (wajib) | com.frslabs.android.sdk: octus | 9.1 MB | |
Core Face Bundled SDK (Diperlukan) | com.frslabs.android.sdk: inti-face-lundled | 6.2 MB | |
Teks inti yang dibundel SDK (diperlukan) | com.frslabs.android.sdk: inti-teks-dibundel | 4.0 MB | |
Core Scan Bundled SDK (wajib) | com.frslabs.android.sdk: inti-scan-bundled | 2.4 MB |
Octus menggunakan kemampuan deteksi wajah melalui salah satu dari dua dependensi ini, dan diperlukan untuk memasukkan salah satunya. Core Face dibundel SDK dan Core Face Unbundled SDK. Jika ukuran tidak menjadi masalah, kami sarankan untuk menggunakan inti face bundled SDK. Rincian lebih lanjut tentang dependensi ini ditemukan di bawah ini.
Sertakan ketergantungan ini jika ukuran SDK bukan masalah (tambahkan ~ 6,2 MB ke ukuran aplikasi). Ini adalah pendekatan yang disarankan.
Sertakan ketergantungan ini jika peningkatan ukuran SDK menjadi perhatian (menambah ~ 600 kb ke ukuran aplikasi). Namun, setelah lari pertama (dan hanya pada lari pertama), dependensi wajah diunduh saat pengguna ditampilkan layar dengan bilah kemajuan. SDK yang dibundel wajah inti tidak memiliki perilaku ini karena semua file terkait dibundel selama waktu kompilasi itu sendiri (karenanya peningkatan ukuran).
Octus juga menggunakan kemampuan deteksi teks melalui salah satu dari dua dependensi ini, dan diperlukan untuk memasukkan salah satunya. Teks inti yang dibundel SDK dan teks inti yang tidak terungkap SDK. Jika ukuran bukan masalah, kami sarankan untuk menggunakan teks inti yang dibundel SDK. Rincian lebih lanjut tentang dependensi ini ditemukan di bawah ini.
Sertakan ketergantungan ini jika ukuran SDK bukan masalah (tambahkan ~ 4,0 MB ke ukuran aplikasi). Ini adalah pendekatan yang disarankan.
Sertakan ketergantungan ini jika peningkatan ukuran SDK menjadi perhatian (menambah ~ 250 kb ke ukuran aplikasi). Namun, pada saat berjalan pertama (dan hanya pada menjalankan pertama), dependensi teks diunduh saat pengguna ditampilkan layar dengan bilah kemajuan. Teks inti yang dibundel SDK tidak memiliki perilaku ini karena semua file terkait dibundel selama waktu kompilasi itu sendiri (karenanya peningkatan ukuran).
Octus juga menggunakan kemampuan deteksi pemindaian melalui salah satu dari dua dependensi ini, dan diperlukan untuk memasukkan salah satunya. Pemindaian inti membundel SDK dan scan inti yang tidak terikat SDK. Jika ukuran tidak menjadi masalah, kami sarankan untuk menggunakan inti scan yang dibundel SDK. Rincian lebih lanjut tentang dependensi ini ditemukan di bawah ini.
Sertakan ketergantungan ini jika ukuran SDK bukan masalah (tambahkan ~ 2,4 MB ke ukuran aplikasi). Ini adalah pendekatan yang disarankan.
Sertakan ketergantungan ini jika peningkatan ukuran SDK menjadi perhatian (menambah ~ 200 kb ke ukuran aplikasi). Namun, pada saat berjalan pertama (dan hanya pada lari pertama), dependensi pemindaian diunduh saat pengguna ditampilkan layar dengan bilah kemajuan. Inti pemindaian yang dibundel SDK tidak memiliki perilaku ini karena semua file terkait dibundel selama waktu kompilasi itu sendiri (karenanya peningkatan ukuran).
Versi SDK minimum - 19 (kitkat) atau lebih tinggi
Pengguna yang ada menggunakan versi 2.xx dapat terus menggunakan SDK hingga November 2020 jika tidak ada perubahan yang dilakukan pada aplikasi. Dan aplikasi baru yang Anda kembangkan atau jika Anda memperbarui aplikasi yang ada, maka Anda harus menggunakan SDK Versi 3.xx yang kompatibel dengan Androidx. Dari 01 Agustus 2020 semua aplikasi baru yang mengintegrasikan SDK kami harus menggunakan versi 3.xx. Dukungan untuk versi 2.xx akan berhenti mulai 01 November 2020. Harap tulis kepada kami sebagai [email protected] jika Anda memerlukan informasi lebih lanjut tentang rilis Androidx.
Tambahkan kode berikut ke file Level build.gradle
project
Anda
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> '
}
}
}
}
}
Setelah itu, tambahkan kode berikut ke file Level build.gradle
app
// ...
defaultConfig {
// ...
ndk {
abiFilters " armeabi-v7a " , " arm64-v8a " , " x86 " , " x86_64 "
}
vectorDrawables . useSupportLibrary true
renderscriptTargetApi 21
renderscriptSupportModeEnabled false
}
// ...
Dan kemudian, temukan versi terbaru Octus SDK di sini dan tambahkan dependensi
// ...
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 memerlukan izin kamera untuk memulai pemindai
< 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 >
Inisialisasi instance Octus
dengan konfigurasi yang sesuai untuk memohon octus sdk
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 ();
}
}
// ...
}
Untuk semua parameters
dan nilainya yang mungkin, rujuk parameter octus
Aktivitas Anda harus menerapkan OctusResultCallback
untuk menerima hasilnya.
// ...
@ 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 ();
}
// ...
Untuk semua errorCode
dan artinya merujuk kode kesalahan octus
Hasil pemindaian diperoleh dari instance OctusResult
. Hasil oktus lengkap diberikan di bawah ini,
// ...
@ 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 ();
}
// ...
Di bawah ini adalah beberapa metode publik OctusResult
secara singkat
Metode publik | ||
---|---|---|
Rangkaian | getaadhaarmaskstatus () | Mendapat status masking nomor Aadhaar. Nilai yang mungkin adalah, |
Kode kesalahan dan artinya ditabulasi di bawah ini
Kode | Pesan |
---|---|
801 | Pindai waktu |
802 | Parameter ID tidak valid berlalu |
803 | Izin kamera ditolak |
804 | Pindai terputus |
805 | Lisensi kedaluwarsa |
806 | Lisensi tidak valid |
807 | Resolusi kamera tidak valid |
811 | QR tidak terdeteksi |
812 | Parsing QR gagal |
814 | Kesalahan kamera |
108 | Internet tidak tersedia |
401 | Batas API terlampaui |
429 | Terlalu banyak permintaan |
501, 502 | Proteus Edge IO error |
503 | Kesalahan ketergantungan GMS |
504 | Kesalahan Ketergantungan Modul Wajah |
setLicenseKey(String octusLicenseKey)
(diperlukan)
Menerima kunci lisensi octus sebagai String
setScanMode(Utility.ScanMode scanMode)
(diperlukan)
Mengatur Mode Pemindaian
Nilai | Memengaruhi |
---|---|
Utility.scanmode.auto | Secara otomatis mulai memindai segera setelah pratinjau kamera siap |
Utility.scanmode.manual | Menampilkan tombol yang digunakan untuk memulai pemindaian saat diklik |
setDocumentType(Document documentType)
(diperlukan)
Menetapkan dokumen yang harus dipindai. Nilai yang mungkin adalah,
Nilai | Memengaruhi |
---|---|
Dokumen.pan | Kartu pan |
Document.adr | Kartu Aadhaar |
Document.vid | ID Pemilih |
Document.nid | ID Nasional |
Document.ppt | Paspor |
Document.vsa | Visa |
Document.drv | SIM |
Document.cql | Periksa daun |
Document.ssn | Nomor Jaminan Sosial |
Document.frm16 | Formulir 16 |
Document.gst | Formulir GST |
Document.img_adr | Capture Capture Aadhaar |
Document.img_any | Capture gambar polos |
setDocumentCountry(Country country)
(wajib)
Menetapkan negara yang terkait dengan dokumen tersebut.
Untuk daftar lengkap negara yang didukung merujuk parameter negara
setDocumentSubType(Utility.SubType subType)
(diperlukan)
Mengatur Sub Jenis Dokumen. Mayoritas dokumen hanya mendukung Utility.SubType.OCR
sebagai sub tipe.
Dokumen di mana Utility.SubType.OCR
dan Utility.SubType.QR_CODE
berlaku adalah,
Document.ADR
Document.DRV
Dokumen di mana Utility.SubType.MRZ
dan Utility.SubType.OCR
diterapkan adalah,
Document.NID
Dokumen di mana hanya Utility.SubType.MRZ
berlaku,
Document.PPT
Document.VSA
Dokumen di mana hanya Utility.SubType.PDF417
berlaku,
Document.DRV
untuk Country.NG
Document.VID
untuk Country.NG
Nilai yang mungkin untuk sub tipe adalah,
Nilai | Memengaruhi |
---|---|
Utility.subtype.ocr | Memindai dokumen dalam mode OCR |
Utility.subtype.qr_code | Memindai dokumen dalam mode QR |
Utility.subtype.mrz | Memindai dokumen dalam mode MRZ |
Utility.subtype.pdf417 | Memindai dokumen dalam mode pdf417 |
setLanguage(Utility.Language language)
(opsional) (default ke utility.danguage.en )
Mengatur bahasa yang terkait dengan dokumen. Nilai yang mungkin adalah,
Nilai | Memengaruhi |
---|---|
Utility.danguage.en | Bahasa inggris |
Utility.danguage.fr | Perancis |
Utility.danguage.es | Spanyol |
Utility.erbanguage.ar | Arab |
Utility.danguage.hi | Hindi |
showInstruction(boolean show)
(opsional) (default ke false )
Mengatur Bendera untuk mengaktifkan/menonaktifkan layar instruksi sebelum pemindaian. Nilai yang mungkin adalah,
Nilai | Memengaruhi |
---|---|
BENAR | Mengaktifkan layar instruksi |
PALSU | Menonaktifkan layar instruksi |
setScanAlertType(Utility.Alert alertType)
(opsional) (default ke utility.alert.sound_vibration )
Menetapkan jenis peringatan saat SDK mengembalikan hasilnya
Nilai | Memengaruhi |
---|---|
Utility.alert.sound | Memicu suara bip setelah pemindaian selesai |
Utility.alert.vibration | Memicu respons haptic ringan (peringatan getaran) setelah pemindaian selesai |
Utility.alert.none | Menonaktifkan umpan balik tentang pemindaian yang sedang diselesaikan |
Utility.alert.sound_vibration | Memicu suara bip dan respons haptic setelah pemindaian selesai |
setDocumentSide(Utility.Side documentSide)
(opsional) (default ke utility.side.front_back )
Menetapkan nilai sisi dokumen yang akan dipindai
Nilai | Memengaruhi |
---|---|
Utility.side.front | Hanya memindai sisi depan (primer) dari dokumen |
Utility.side.back | Hanya memindai sisi belakang (sekunder) dari dokumen |
Utility.side.front_back | Memindai sisi depan dan belakang dokumen |
dataPointsAll(boolean dataPointCategory)
(opsional) (default ke false )
Menetapkan flag untuk mengatur kategori titik data
Nilai | Memengaruhi |
---|---|
BENAR | Memberikan hasil pemindaian hanya jika semua titik data ditemukan |
PALSU | Memberikan hasil pemindaian jika setidaknya salah satu titik data ditemukan |
orientationFlat(boolean isOrientationFlat)
(opsional) (default ke false )
Menetapkan nilai yang harus dikunci oleh pemindai orientasi sehubungan dengan permukaan pemindaian. Nilai yang mungkin adalah,
Nilai | Memengaruhi |
---|---|
BENAR | Hanya pemindaian saat orientasi ponsel (kamera) tegak lurus (datar) ke permukaan pemindaian. |
PALSU | Pindai mengabaikan orientasi ponsel (kamera) ke permukaan pemindaian. |
aadhaarNumberMasked(boolean numberMasked)
(opsional) (default ke false ) (hanya berlaku untuk document.adr dan country.in)
Mengatur bendera untuk mengaktifkan/menonaktifkan masking nomor Aadhaar
Nilai | Memengaruhi |
---|---|
BENAR | Topeng nomor Aadhaar dalam hasil pemindaian (gambar) |
PALSU | menonaktifkan menutupi nomor Aadhaar dalam hasil pemindaian |
removeWatermark()
(Opsional) (hanya berlaku untuk Document.cql)
Mengatur flag untuk menghapus tanda air di atas gambar output periksa daun. Jika metode tidak dipanggil, perilaku default adalah untuk memasukkan tanda air.
setScanTimeLimit(timeInSec)
(opsional)
Menetapkan batas waktu pemindaian dokumen (dalam SEC).
Jenis | Nilai default | Jangkauan |
---|---|---|
Document.cql | 25 | 12 - 30 |
Dokumen lain | 20 | 8 - 30 |
skipDocumentAlternateCaptureMode(boolean skipMode)
(opsional) (default ke false ) (hanya berlaku untuk dokumen.e_mandate_cat1)
Mengatur bendera untuk mengaktifkan/menonaktifkan mode penangkapan alternatif. Saat ini, hanya berlaku untuk document.e_mandate_cat1
Nilai | Memengaruhi |
---|---|
BENAR | Menonaktifkan mode penangkapan alternatif |
PALSU | Mengaktifkan mode penangkapan alternatif |
Untuk pertanyaan/umpan balik apa pun, hubungi kami di [email protected]