Octus SDK는 정확하고 빠른 ID 스캔 및 OCR을 위해 고급 딥 러닝 기술을 사용합니다. 비즈니스는 Octus SDK를 사전 제작 된 화면 및 구성과 함께 제공되는 기본 Android 앱에 통합 할 수 있습니다. SDK는 스캔 된 이미지, 추출 된 데이터 및 오류 코드를 반환합니다. 안전 조치로서 SDK는 스캔 된 개인 데이터 또는 ID 이미지를 저장하지 않습니다.
국가당 지원되는 문서 목록은 낙지 국가 별 지원 문서를 참조하십시오.
여기에서 최신 버전과 릴리스 기록을 찾을 수 있습니다.
Octus Octus SDK v3.8.0
에서 도입 된 해석 변화. 우리는 새로운 라이센스 형식을 소개했습니다. v3.8.0
이전에 버전을 사용하고 있고 v3.8.0
이상으로 업데이트하려는 경우, 업데이트 된 라이센스는 [email protected]
에 문의하십시오.
Octus SDK를 사용하려면 유효한 라이센스가 필요합니다. 이는 [email protected]
에 문의하여 얻을 수 있습니다.
라이센스에 따라 오프라인 또는 온라인으로 선택한 경우 청구 서버에 대한 핑 기능이 비활성화되거나 활성화됩니다. 예를 들어, 오프라인 SDK 모델을 선택한 경우 청구서에 청구서에 서버 핑이 필요하지 않습니다. 그러나 거래 기반 가격을 선택한 경우 각 거래 후에는 청구 서버에 PIN 요청이 이루어집니다. 이것은 앱으로 지나치게 과대 평가할 수 없습니다. 주목할만한 점은 어떤 이유로 핑 트랜잭션에 실패하면 SDK의 결과없이 전체 트랜잭션이 무효화된다는 것입니다.
라이센스가 있으면 아래 지침을 따르면 Octus SDK를 Android 응용 프로그램에 성공적으로 통합하십시오.
이 섹션에는 Gradle 종속성, 최신 버전 및 크기가있는 Android에서 사용할 수있는 Octus SDK 라이브러리가 나와 있습니다.
SDK 라이브러리 | Gradle 의존성 | 최신 버전 | 크기 |
---|---|---|---|
낙지 SDK (필수) | com.frslabs.Android.sdk : 낙지 | 9.1 MB | |
코어 페이스 번들 SDK (필수) | com.frslabs.android.sdk : 코어-페이스-묶음 | 6.2 MB | |
핵심 텍스트 번들 SDK (필수) | com.frslabs.android.sdk : Core-Text-Bundled | 4.0 MB | |
코어 스캔 번들 SDK (필수) | com.frslabs.android.sdk : Core-Scan-Bundled | 2.4 MB |
낙서는이 두 가지 종속성 중 하나를 통해 얼굴 감지 기능을 사용하며 그 중 하나를 포함해야합니다. 코어 페이스 번들 SDK 및 코어 페이스 unnundled SDK. 크기가 문제가되지 않으면 Core Face Bundled SDK를 사용하는 것이 좋습니다. 이러한 종속성에 대한 자세한 내용은 아래를 참조하십시오.
SDK의 크기가 문제가되지 않은 경우이 종속성을 포함하십시오 (앱 크기에 ~ 6.2MB 추가). 이것은 권장되는 접근법입니다.
SDK 크기의 증가가 우려되는 경우이 종속성을 포함하십시오 (앱 크기에 ~ 600 KB를 추가). 그러나 처음 실행되면 (그리고 첫 번째 실행에만) 얼굴 의존성이 다운로드되는 동안 사용자에게 진행률 표시 줄이있는 화면이 표시됩니다. Core Face Bundled SDK는 컴파일 시간 자체 중에 모든 관련 파일이 번들로 표시 되므로이 동작이 없습니다 (따라서 크기 증가).
낙지는 또한이 두 가지 종속성 중 하나를 통해 텍스트 감지 기능을 사용하며 그 중 하나를 포함해야합니다. 핵심 텍스트 번들 SDK 및 핵심 텍스트 UNUNDLED SDK. 크기가 문제가되지 않으면 핵심 텍스트 번들 SDK를 사용하는 것이 좋습니다. 이러한 종속성에 대한 자세한 내용은 아래를 참조하십시오.
SDK의 크기가 문제가되지 않은 경우이 종속성을 포함하십시오 (앱 크기에 ~ 4.0MB를 추가). 이것은 권장되는 접근법입니다.
SDK 크기의 증가가 우려되는 경우이 종속성을 포함하십시오 (앱 크기에 ~ 250 kb 추가). 그러나 처음 실행되면 (그리고 첫 번째 실행에만) 텍스트 종속성이 다운로드되는 동안 사용자에게 진행률 표시 줄이있는 화면이 표시됩니다. 핵심 텍스트 번들 SDK는 컴파일 시간 자체 중에 모든 관련 파일이 번들로 표시 되므로이 동작이 없습니다 (따라서 크기 증가).
Octus also uses scan detection capabilities via either of these two dependencies, and it is required to include any one of them. Core Scan Bundled SDK and Core Scan Unbundled SDK. If size is not an issue, we recommend going with the Core Scan Bundled SDK. More details about these dependencies are found below.
Include this dependency if size of the SDK is not an issue (Adds ~2.4 MB to the app size). This is the recommended approach.
Include this dependency if increase in SDK size is a concern (Adds ~200 KB to the app size). 그러나 처음 실행되면 (그리고 첫 번째 실행에만) 스캔 종속성이 다운로드되는 동안 사용자에게 진행률 표시 줄이있는 화면이 표시됩니다. 핵심 스캔 번들 SDK는 컴파일 시간 자체 중에 모든 관련 파일이 번들로 표시 되므로이 동작이 없습니다 (따라서 크기 증가).
최소 SDK 버전 -11 (KitKat) 이상
버전 2.xx를 사용하는 기존 사용자는 앱을 변경하지 않으면 2020 년 11 월까지 SDK를 계속 사용할 수 있습니다. 개발중인 새로운 응용 프로그램 또는 기존 응용 프로그램을 업데이트하는 경우 Androidx 호환되는 SDK 버전 3.xx를 사용해야합니다. 2020 년 8 월 1 일부터 SDK를 통합하는 모든 새로운 응용 프로그램은 3.xx 버전을 사용해야합니다. 버전 2.xx에 대한 지원은 2020 년 11 월 1 일부터 중단됩니다. Androidx 릴리스에 대한 자세한 정보가 필요한 경우 [email protected]으로 문의하십시오.
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
// ...
}
옥타는 카메라가 스캐너를 시작하기 위해 권한을 요구합니다
< 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 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 ();
}
}
// ...
}
모든 parameters
와 가능한 값에 대해 문어 매개 변수를 참조하십시오.
귀하의 활동은 결과를 받으려면 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
인스턴스에서 얻습니다. 완전한 낙지 결과는 아래에 나와 있습니다.
// ...
@ 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 | 유효하지 않은 ID 매개 변수가 통과되었습니다 |
803 | 카메라 권한이 거부되었습니다 |
804 | 스캔이 중단되었습니다 |
805 | License expired |
806 | 라이센스가 잘못되었습니다 |
807 | 잘못된 카메라 해상도 |
811 | QR이 감지되지 않았습니다 |
812 | QR 파싱이 실패했습니다 |
814 | 카메라 오류 |
108 | 인터넷을 사용할 수 없습니다 |
401 | API 제한이 초과되었습니다 |
429 | 너무 많은 요청 |
501, 502 | Proteus Edge IO 오류 |
503 | GMS 종속성 오류 |
504 | 얼굴 모듈 종속성 오류 |
setLicenseKey(String octusLicenseKey)
(필수)
문어 라이센스 키를 String
로 허용합니다
setScanMode(Utility.ScanMode scanMode)
(필수)
스캐닝 모드를 설정합니다
값 | 효과 |
---|---|
utility.scanmode.auto | 카메라 미리보기가 준비 되 자마자 자동 스캔을 시작합니다. |
utility.scanmode.manual | 클릭하면 스캔을 시작하는 데 사용되는 버튼을 표시합니다. |
setDocumentType(Document documentType)
(필수)
스캔 해야하는 문서를 설정합니다. 가능한 값은
값 | 효과 |
---|---|
문서 | 팬 카드 |
document.adr | Aadhaar 카드 |
document.vid | 유권자 ID |
document.nid | 국가 ID |
document.ppt | 여권 |
document.vsa | 비자 |
document.drv | 운전 면허 |
document.cql | 잎을 확인하십시오 |
Document.ssn | 사회 보장 번호 |
Document.frm16 | 양식 16 |
document.gst | GST 양식 |
document.img_adr | 이미지 캡처 Aadhaar |
document.img_any | 일반 이미지 캡처 |
setDocumentCountry(Country country)
(필수)
문서와 관련된 국가를 설정합니다.
지원 국가의 전체 목록은 국가 매개 변수를 참조하십시오.
setDocumentSubType(Utility.SubType subType)
(필수)
문서 하위 유형을 설정합니다. 문서의 대부분은 전용 Utility.SubType.OCR
하위 유형으로 지원합니다.
Utility.SubType.OCR
및 Utility.SubType.QR_CODE
Apply가 모두있는 문서,
Document.ADR
Document.DRV
Utility.SubType.MRZ
및 Utility.SubType.OCR
apply가 모두있는 문서,
Document.NID
Utility.SubType.MRZ
가 적용되는 문서
Document.PPT
Document.VSA
Utility.SubType.PDF417
만 적용되는 문서
Country.NG
용 Document.DRV
Country.NG
용 Document.VID
하위 유형에 대한 가능한 값은
값 | 효과 |
---|---|
유틸리티 .subtype.ocr | OCR 모드에서 문서를 스캔합니다 |
Utility.SubType.QR_CODE | Scans the document in QR mode |
유틸리티 .subtype.mrz | MRZ 모드에서 문서를 스캔합니다 |
유틸리티 .subtype.pdf417 | PDF417 모드로 문서를 스캔합니다 |
setLanguage(Utility.Language language)
(선택 사항) (기본값으로 유틸리티 .language.en )
문서와 관련된 언어를 설정합니다. 가능한 값은
값 | 효과 |
---|---|
유틸리티 .language.en | 영어 |
유틸리티 .language.fr | 프랑스 국민 |
유틸리티 .language.es | 스페인 사람 |
유틸리티.language.ar | 아라비아 말 |
유틸리티 .language.hi | 힌디 어 |
showInstruction(boolean show)
(선택 사항) (기본값으로 거짓 )
스캔하기 전에 명령어 화면을 활성화/비활성화하려면 플래그를 설정합니다. 가능한 값은
값 | 효과 |
---|---|
진실 | 지침 화면을 활성화합니다 |
거짓 | 지침 화면을 비활성화합니다 |
setScanAlertType(Utility.Alert alertType)
(선택 사항) ( 유틸리티 에 대한 기본값.alert.sound_vibration)
SDK가 결과를 반환 할 때 경고 유형을 설정합니다.
값 | 효과 |
---|---|
utility.alert.sound | 스캔이 완료된 후 경고음 소리를 유발합니다 |
utility.alert.vibration | 스캔이 완료된 후 가벼운 햅틱 응답 (진동 알림)을 트리거합니다. |
utility.alert.ne | 완료중인 스캔에 대한 피드백을 비활성화합니다 |
utility.alert.sound_vibration | 스캔이 완료된 후 경고음과 햅틱 응답을 트리거합니다. |
setDocumentSide(Utility.Side documentSide)
(선택 사항) (기본값으로 유틸리티 .Side.front_back )
스캔 할 문서 측의 값을 설정합니다.
값 | 효과 |
---|---|
utility.side.front | 문서의 전면 (1 차) 만 스캔합니다 |
utility.side.back | 문서의 뒷면 (2 차) 단지 스캔합니다 |
utility.side.front_back | 문서의 전면과 뒷면을 모두 스캔합니다 |
dataPointsAll(boolean dataPointCategory)
(선택 사항) (거부 ~ false )
데이터 포인트 범주를 설정하도록 플래그를 설정합니다
값 | 효과 |
---|---|
진실 | 모든 데이터 포인트가 발견 된 경우 에만 스캔 결과를 제공합니다. |
거짓 | 데이터 포인트 중 하나를 찾은 경우 스캔 결과를 제공합니다. |
orientationFlat(boolean isOrientationFlat)
(선택 사항) (거부 ~ false )
스캐너가 스캔 표면과 관련하여 방향을 잠그는 값을 설정합니다. 가능한 값은
값 | 효과 |
---|---|
진실 | 전화 (카메라)의 방향이 스캔 표면에 수직 (평평한) 일 때만 스캔합니다. |
거짓 | 스캔 표면에 전화 (카메라)의 방향을 무시하는 스캔. |
aadhaarNumberMasked(boolean numberMasked)
(선택 사항) ( 기본값으로 거짓 으로) (document.adr 및 country.in에만 적용됨)
Aadhaar 번호 마스킹을 활성화/비활성화하도록 플래그를 설정합니다
값 | 효과 |
---|---|
진실 | 스캔 결과에서 Aadhaar 번호를 마스킹합니다 (이미지) |
거짓 | 스캔 결과에서 Aadhaar 번호를 마스킹하는 것은 비활성화됩니다 |
removeWatermark()
(선택 사항) (document.cql에만 적용)
체크 리프 출력 이미지에서 워터 마크를 제거하도록 플래그를 설정합니다. 메소드가 호출되지 않으면 기본 동작은 워터 마크를 포함시키는 것입니다.
setScanTimeLimit(timeInSec)
(선택 사항)
문서 스캔 시간 제한 (초)을 설정합니다.
유형 | 기본값 | 범위 |
---|---|---|
document.cql | 25 | 12-30 |
다른 문서 | 20 | 8-30 |
skipDocumentAlternateCaptureMode(boolean skipMode)
(Optional) (Defaults to false ) (Applies ONLY to Document.E_MANDATE_CAT1)
Sets the flag to enable/disable alternate capture mode. 현재 문서에만 적용됩니다 .e_mandate_cat1
값 | 효과 |
---|---|
진실 | 대체 캡처 모드를 비활성화합니다 |
거짓 | 대체 캡처 모드를 활성화합니다 |
쿼리/피드백을 받으려면 [email protected]
으로 문의하십시오