Octus SDK использует расширенные технологии глубокого обучения для точного и быстрого сканирования и OCR. Предприятия могут интегрировать Octus SDK в нативные приложения Android, которые поставляются с предварительно созданными экранами и конфигурациями. SDK возвращает отсканированные изображения, извлеченные коды данных и ошибок. И как мера безопасности, SDK не хранит ни одного из персональных данных или идентификационных изображений, которые сканируются.
Для списка поддерживаемых документов на страну см. В поддержку поддержки Octus Country, поддерживаемые документы
Вы можете найти последнюю версию и историю выпуска здесь
‼ Внимание‼ → нарушение изменения, введенные на Octus SDK v3.8.0
. Мы представили новый формат лицензии. Если вы используете версии до v3.8.0
и намереваетесь обновиться до v3.8.0
или выше, пожалуйста, свяжитесь с поддержкой по адресу по [email protected]
для обновленной лицензии.
Вам понадобится действующая лицензия для использования Octus SDK, которую можно получить, связавшись с [email protected]
.
В зависимости от лицензии - офлайн или онлайн - вы выбрали, функциональность PING на серверах выставления счетов будет отключена или включена. Например, если вы выбрали автономную модель SDK, то для нашего сервера для выставления счетов не будет необходимости сервера. Однако, если вы выбрали цену на основе транзакций, то после каждой транзакции будет сделан запрос PING на нашем платежном сервере. Это не может быть ускорено приложением. Следует отметить, что если транзакция PING не пройдет по какой -либо причине, вся транзакция будет недействительной без каких -либо результатов SDK.
После того, как вы получите лицензию, следуйте приведенным ниже инструкциям для успешной интеграции Octus SDK в ваше приложение для Android.
В этом разделе перечислены библиотеки Octus SDK, которые доступны для Android с их зависимостью градл, последней версией и их размером.
Библиотека SDK | Зависимость Градл | Последняя версия | Размер |
---|---|---|---|
Octus SDK (требуется) | com.frslabs.android.sdk: Octus | 9,1 МБ | |
Основное лицо в комплекте SDK (требуется) | com.frslabs.Android.sdk: Core-Face-Bundled | 6,2 МБ | |
Основной текст в комплекте SDK (требуется) | com.frslabs.android.sdk: Core-Text-Bundled | 4,0 МБ | |
Основное сканирование SDK (требуется) | com.frslabs.android.sdk: Core-Scan-Bundled | 2,4 МБ |
Octus использует возможности обнаружения лиц через любую из этих двух зависимостей, и он должен включать любой из них. Основное лицо в комплекте SDK и основное лицо раскрыта SDK. Если размер не является проблемой, мы рекомендуем пойти с основным SDK. Более подробная информация об этих зависимостях найдена ниже.
Включите эту зависимость, если размер SDK не является проблемой (добавляет ~ 6,2 МБ к размеру приложения). Это рекомендуемый подход.
Включите эту зависимость, если увеличение размера SDK является проблемой (добавляет ~ 600 кб к размеру приложения). Однако после первого запуска (и только при первом запуске) зависимости лица загружаются, в то время как пользователям отображается экран с панелью прогресса. Основное лицо, связанное с SDK, не имеет такого поведения, поскольку все связанные файлы связаны во время самого компиляции (отсюда увеличение размера).
Octus также использует возможности обнаружения текста через любую из этих двух зависимостей, и он должен включать любой из них. Основной текст в комплекте SDK и основной текст разбросал SDK. Если размер не является проблемой, мы рекомендуем пойти с основным текстом SDK. Более подробная информация об этих зависимостях найдена ниже.
Включите эту зависимость, если размер SDK не является проблемой (добавляет ~ 4,0 МБ к размеру приложения). Это рекомендуемый подход.
Включите эту зависимость, если увеличение размера SDK является проблемой (добавляет ~ 250 т.п.н. к размеру приложения). Однако после первого запуска (и только при первом запуска) текстовые зависимости загружаются, в то время как пользователям отображается экран с панелью прогресса. Основной текст в комплекте SDK не имеет такого поведения, так как все связанные файлы связаны во время самого сбора (отсюда увеличение размера).
Octus также использует возможности обнаружения сканирования через любую из этих двух зависимостей, и он должен включать любой из них. Основное сканирование в комплекте SDK и Core Scan с рассмотрением SDK. Если размер не является проблемой, мы рекомендуем пойти с основным сканированным SDK. Более подробная информация об этих зависимостях найдена ниже.
Включите эту зависимость, если размер SDK не является проблемой (добавляет ~ 2,4 МБ к размеру приложения). Это рекомендуемый подход.
Включите эту зависимость, если увеличение размера SDK является проблемой (добавляет ~ 200 КБ к размеру приложения). Однако после первого запуска (и только при первом запуске) зависимости сканирования загружаются, в то время как пользователям показан экран с панелью хода. Основное сканирование SDK не имеет такого поведения, так как все связанные файлы связаны во время самого компиляции (следовательно, увеличение размера).
Минимальная версия SDK - 19 (kitkat) или выше
Существующие пользователи, использующие версию 2.xx, могут продолжать использовать SDK до ноября 2020 года, если в приложение не внесено никаких изменений. И любые новые приложения, которые вы разрабатываете, или если вы обновляете существующее приложение, то вы должны использовать версию SDK 3.xx, которая совместима с Androidx. С 01 августа 2020 года все новые приложения, интегрирующие наш SDK, должны использовать версию 3.xx. Поддержка версии 2.xx прекратится с 01 ноября 2020 года. Пожалуйста, напишите нам как [email protected], если вам нужна дополнительная информация об выпуске Androidx.
Добавьте следующий код в файл вашего уровня 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> '
}
}
}
}
}
После этого добавьте следующий код в файл уровня вашего app
build.gradle
// ...
defaultConfig {
// ...
ndk {
abiFilters " armeabi-v7a " , " arm64-v8a " , " x86 " , " x86_64 "
}
vectorDrawables . useSupportLibrary true
renderscriptTargetApi 21
renderscriptSupportModeEnabled false
}
// ...
А потом найдите здесь последнюю версию Octus SDK и добавьте зависимости
// ...
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 требует разрешения камеры, чтобы инициировать свой сканер
< 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 >
Инициализировать экземпляр Octus
с соответствующими конфигурациями, чтобы вызвать 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 ();
}
}
// ...
}
Для всех parameters
и их возможных значений обратитесь к параметрам Octus
Ваша деятельность должна реализовать OctusResultCallback
, чтобы получить результат.
// ...
@ 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 ();
}
// ...
Для всех errorCode
и их значений ссылаются на коды ошибок Octus
Результат сканирования получается из экземпляра OctusResult
. Полный результат Octus приведен ниже,
// ...
@ 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 ();
}
// ...
Ниже приведены некоторые публичные методы OctusResult
вкратце
Общественные методы | ||
---|---|---|
Нить | getaadhaarmaskstatus () | Получает статус маскировки номера Aadhaar. Возможные значения - это, |
Коды ошибок и их значение приведены ниже
Код | Сообщение |
---|---|
801 | Сканировать время |
802 | Неверные параметры идентификатора прошли |
803 | Разрешение камеры отрицается |
804 | Сканирование прервано |
805 | Лицензия истек |
806 | Лицензия недействительна |
807 | Неверное разрешение камеры |
811 | QR не обнаружен |
812 | QR SAINING не удалось |
814 | Ошибка камеры |
108 | Интернет недоступен |
401 | Предел API превышен |
429 | Слишком много запросов |
501, 502 | Протеус Edge IO ошибка |
503 | Ошибка зависимости GMS |
504 | Ошибка зависимости модуля лица |
setLicenseKey(String octusLicenseKey)
(требуется)
Принимает лицензионный ключ Octus в качестве String
setScanMode(Utility.ScanMode scanMode)
(требуется)
Устанавливает режим сканирования
Ценить | Эффект |
---|---|
Utility.scanmode.auto | Автоматически начинает сканировать, как только предварительный просмотр камеры готов |
Utility.scanmode.manual | Отображает кнопку, используемую для запуска сканирования при нажатии |
setDocumentType(Document documentType)
(требуется)
Устанавливает документ, который необходимо сканировать. Возможные значения - это,
Ценить | Эффект |
---|---|
Document.pan | Can Card |
Document.adr | Aadhaar Card |
Document.vid | Идентификатор избирателя |
Document.nid | Национальный идентификатор |
Document.ppt | Паспорт |
Document.VSA | Виза |
Document.drv | Водительские права |
Document.cql | Проверьте лист |
Document.ssn | Номер социального страхования |
Document.frm16 | Форма 16 |
Document.gst | Форма GST |
Document.img_adr | Изображение захват Аадхаар |
Document.img_any | Простой захват изображения |
setDocumentCountry(Country country)
(требуется)
Устанавливает страну, связанную с документом.
Для полного списка поддерживаемых стран ссылаться на параметры страны
setDocumentSubType(Utility.SubType subType)
(требуется)
Устанавливает подкапс документа. Большинство документов поддерживают только Utility.SubType.OCR
в качестве подзадна.
Документы, в которых Utility.SubType.OCR
и Utility.SubType.QR_CODE
применяются,
Document.ADR
Document.DRV
Документы, в которых Utility.SubType.MRZ
и Utility.SubType.OCR
применяются,
Document.NID
Документы, где только Utility.SubType.MRZ
применяется,
Document.PPT
Document.VSA
Документы, в которых только Utility.SubType.PDF417
применяются,
Document.DRV
для Country.NG
Document.VID
для Country.NG
Возможные значения для субпод типа:
Ценить | Эффект |
---|---|
Utility.subtype.ocr | Сканирует документ в режиме OCR |
Utility.subtype.qr_code | Сканирует документ в режиме QR |
Utility.subtype.mrz | Сканирует документ в режиме MRZ |
Utility.subtype.pdf417 | Сканирует документ в режиме PDF417 |
setLanguage(Utility.Language language)
(необязательно) (по умолчанию на utility.language.en )
Устанавливает язык, связанный с документом. Возможные значения - это,
Ценить | Эффект |
---|---|
Utility.language.en | Английский |
Utility.language.fr | Французский |
Utility.language.es | испанский |
Utility.language.ar | арабский |
Utility.language.hi | хинди |
showInstruction(boolean show)
(необязательно) (по умолчанию ложно )
Устанавливает флаг, чтобы включить/отключить экран инструкции перед сканированием. Возможные значения - это,
Ценить | Эффект |
---|---|
истинный | Включает экран инструкции |
ЛОЖЬ | Отключает экран инструкции |
setScanAlertType(Utility.Alert alertType)
(необязательно) (по умолчанию в utility.alert.sound_vibration )
Устанавливает тип оповещения, когда SDK возвращает результат
Ценить | Эффект |
---|---|
Utility.alert.Sound | Запускает звук звукового сигнала после завершения сканирования |
Utility.alert.vibration | Запускает легкий тактичный ответ (оповещение вибрации) после завершения сканирования |
Utility.alert.none | Отключает любые отзывы о завершении сканирования |
Utility.alert.sound_vibration | Запускает звук звукового сигнала и тактичный ответ после завершения сканирования |
setDocumentSide(Utility.Side documentSide)
(необязательно) (по умолчанию в utility.side.front_back )
Устанавливает значения стороны документа, который будет отсканирован
Ценить | Эффект |
---|---|
Utility.side.front | Сканирует только переднюю (первичную) сторону документа |
Utility.side.back | Сканирует только заднюю (вторичную) сторону документа |
Utility.side.front_back | Сканирует как переднюю, так и задницу стороны документа |
dataPointsAll(boolean dataPointCategory)
(необязательно) (по умолчанию false )
Устанавливает флаг, чтобы установить категорию точки данных
Ценить | Эффект |
---|---|
истинный | Обеспечивает результат сканирования, только если найдены все точки данных |
ЛОЖЬ | Обеспечивает результат сканирования, если будет найдено как минимум одна из точек данных |
orientationFlat(boolean isOrientationFlat)
(необязательно) (по умолчанию ложно )
Устанавливает значение, для которого сканер должен заблокировать ориентацию относительно поверхности сканирования. Возможные значения - это,
Ценить | Эффект |
---|---|
истинный | Сканирование только при ориентации телефона (камера) перпендикулярно (плоская) на поверхность сканирования. |
ЛОЖЬ | Сканы, игнорируя ориентацию телефона (камеры) на поверхность сканирования. |
aadhaarNumberMasked(boolean numberMasked)
(необязательно) (по умолчанию false ) (применяется только к документу.
Устанавливает флаг, чтобы включить/отключить маскировку номера Aadhaar
Ценить | Эффект |
---|---|
истинный | Маскируется номер Аадхаара в результате сканирования (изображение) |
ЛОЖЬ | Отключает маскировку номера Аадхаара в результате сканирования |
removeWatermark()
(необязательно) (применяется только к Document.cql)
Устанавливает флаг, чтобы удалить водяной знак через выходное изображение листа. Если метод не называется, поведение по умолчанию должно включать водяной знак.
setScanTimeLimit(timeInSec)
(необязательно)
Устанавливает ограничение времени сканирования документа (в SEC).
Тип | Значение по умолчанию | Диапазон |
---|---|---|
Document.cql | 25 | 12 - 30 |
Другие документы | 20 | 8 - 30 |
skipDocumentAlternateCaptureMode(boolean skipMode)
(необязательно) (по умолчанию false ) (применяется только к Document.e_mandate_cat1)
Устанавливает флаг, чтобы включить/отключить альтернативный режим захвата. На данный момент, применимо только к документу.e_mandate_cat1
Ценить | Эффект |
---|---|
истинный | Отключает альтернативный режим захвата |
ЛОЖЬ | Включает режим альтернативного захвата |
Для любых запросов/отзывов, свяжитесь с нами по адресу [email protected]