Octus SDKは、正確で高速なIDスキャンとOCRのために、高度なディープラーニングテクノロジーを使用しています。企業は、事前に構築された画面と構成に伴うネイティブAndroidアプリにOctus SDKを統合できます。 SDKは、スキャンされた画像、抽出されたデータ、エラーコードを返します。安全尺度として、SDKはスキャンされた個人データまたはID画像を保存しません。
国ごとのサポートされているドキュメントのリストについては、オクタスの国固有のサポートドキュメントを参照してください
ここで最新バージョンとリリース履歴を見つけてリリースできます
octus SDK v3.8.0
で導入された注意→破壊変化。新しいライセンス形式を導入しました。 v3.8.0
より前にバージョンを使用しており、 v3.8.0
以上に更新する予定の場合は、更新されたライセンスについて[email protected]
お問い合わせください。
[email protected]
に連絡することで取得できるOctus SDKを使用するには、有効なライセンスが必要です。
ライセンス(オフラインまたはオンライン)に応じて、選択したことがあります。請求サーバーへのPING機能は無効または有効になります。たとえば、オフラインSDKモデルを選択した場合、請求するために請求サーバーにサーバーpingが必要ではありません。ただし、トランザクションベースの価格設定を選択した場合、各トランザクションの後、請求サーバーにPINGリクエストが行われます。これはアプリでは上向きにすることはできません。注意すべき点は、Pingトランザクションが何らかの理由で失敗した場合、SDKの結果なしにトランザクション全体が無効になるということです。
ライセンスを取得したら、Octus SDKをAndroidアプリケーションに成功させるための以下の指示に従ってください。
このセクションには、Gradle依存関係、最新バージョン、およびサイズを備えたAndroidで利用できるOctus SDKライブラリをリストします。
SDKライブラリ | グレードの依存関係 | 最新バージョン | サイズ |
---|---|---|---|
オクタスSDK(必須) | com.frslabs.android.sdk:Octus | 9.1 MB | |
コアフェイスバンドルSDK(必須) | com.frslabs.android.sdk:コアフレースバンドル | 6.2 MB | |
コアテキストバンドルSDK(必須) | com.frslabs.android.sdk:コアテキストバンドル | 4.0 MB | |
コアスキャンバンドルSDK(必須) | com.frslabs.android.sdk:コアスキャンバンドル | 2.4 MB |
Octusは、これら2つの依存関係のいずれかを介して顔検出機能を使用しており、そのいずれかを含める必要があります。コアフェイスバンドルSDKとコアフェイスバンドルされていないSDK。サイズが問題でない場合は、Core FaceバンドルSDKを使用することをお勧めします。これらの依存関係の詳細は、以下にあります。
SDKのサイズが問題ではない場合は、この依存関係を含めます(アプリサイズに〜6.2 MBを追加します)。これが推奨されるアプローチです。
SDKサイズの増加が懸念事項である場合、この依存関係を含めます(アプリサイズに〜600 kbを追加します)。ただし、最初の実行時(および最初の実行時にのみ)、ユーザーに進行状況バーがある画面が表示されている間、顔の依存関係がダウンロードされます。コアフェイスバンドルされたSDKには、すべての関連ファイルがコンパイル時間自体にバンドルされるため、この動作はありません(したがってサイズの増加)。
Octusはまた、これら2つの依存関係のいずれかを介してテキスト検出機能を使用しており、それらのいずれかを含める必要があります。コアテキストは、SDKとコアテキストのバンドルされていないSDKをバンドルしました。サイズが問題でない場合は、コアテキストバンドルSDKを使用することをお勧めします。これらの依存関係の詳細は、以下にあります。
SDKのサイズが問題ではない場合は、この依存関係を含めます(アプリサイズに〜4.0 MBを追加します)。これが推奨されるアプローチです。
SDKサイズの増加が懸念事項である場合、この依存関係を含めます(アプリサイズに〜250 kbを追加します)。ただし、最初の実行時(および最初の実行時のみ)、テキストの依存関係はダウンロードされ、ユーザーは進行状況バーのある画面が表示されます。コアテキストバンドルSDKには、すべての関連ファイルがコンパイル時間自体にバンドルされるため、この動作はありません(したがってサイズの増加)。
Octusはまた、これら2つの依存関係のいずれかを介してスキャン検出機能を使用しており、それらのいずれかを含める必要があります。コアスキャンバンドルされたSDKとコアスキャンバンドルされていないSDK。サイズが問題でない場合は、コアスキャンバンドルされたSDKを使用することをお勧めします。これらの依存関係の詳細は、以下にあります。
SDKのサイズが問題ではない場合は、この依存関係を含めます(アプリサイズに〜2.4 MBを追加します)。これが推奨されるアプローチです。
SDKサイズの増加が懸念事項である場合、この依存関係を含めます(アプリサイズに〜200 kbを追加します)。ただし、最初の実行時(および最初の実行時のみ)、ユーザーに進行状況バーがある画面が表示されている間、スキャン依存関係がダウンロードされます。コアスキャンバンドルされたSDKには、すべての関連ファイルがコンパイル時間自体にバンドルされるため、この動作はありません(したがってサイズの増加)。
最小SDKバージョン-19 (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
とその可能な値については、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
とそれらの意味について、オクタスエラーコードを参照してください
スキャンの結果は、 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 | ライセンスの有効期限が切れました |
806 | ライセンスが無効です |
807 | カメラの解像度が無効です |
811 | QRは検出されません |
812 | QR解析は失敗しました |
814 | カメラエラー |
108 | インターネットは利用できません |
401 | API制限が超えました |
429 | リクエストが多すぎます |
501、502 | プロテウスエッジIOエラー |
503 | GMS依存関係エラー |
504 | フェイスモジュールの依存関係エラー |
setLicenseKey(String octusLicenseKey)
(必須)
OctusライセンスキーをString
として受け入れます
setScanMode(Utility.ScanMode scanMode)
(必須)
スキャンモードを設定します
価値 | 効果 |
---|---|
utility.scanmode.auto | カメラのプレビューの準備ができたらすぐにスキャンを自動的に開始します |
utility.scanmode.manual | クリックしたときにスキャンを開始するために使用されるボタンを表示します |
setDocumentType(Document documentType)
(必須)
スキャンする必要があるドキュメントを設定します。考えられる値は、
価値 | 効果 |
---|---|
document.pan | パンカード |
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
の両方のrutility.subtype.ocr.ocr.code.qr_codeの両方のドキュメントは、
Document.ADR
Document.DRV
Utility.SubType.MRZ
とUtility.SubType.OCR
Applyの両方のドキュメントは、
Document.NID
Utility.SubType.MRZ
のみが適用される文書は、
Document.PPT
Document.VSA
Utility.SubType.PDF417
のみが適用されるドキュメントは、
Document.DRV
for Country.NG
Document.VID
for 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)
(オプション) (デフォルトはfalse )
スキャンする前に、命令画面を有効/無効にするフラグを設定します。考えられる値は、
価値 | 効果 |
---|---|
真実 | 命令画面を有効にします |
間違い | 命令画面を無効にします |
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)
(オプション) (defaults ofutility.side.front_back )
スキャンするドキュメント側の値を設定します
価値 | 効果 |
---|---|
utility.side.front | ドキュメントのフロント(プライマリ)側のみをスキャンします |
utility.side.back | ドキュメントの背面(二次)側のみをスキャンします |
utility.side.front_back | ドキュメントの前面と背面の両方をスキャンします |
dataPointsAll(boolean dataPointCategory)
(オプション) (デフォルトはfalse )
フラグを設定して、データポイントカテゴリを設定します
価値 | 効果 |
---|---|
真実 | すべてのデータポイントが見つかった場合にのみスキャン結果を提供します |
間違い | 少なくともデータポイントの1つが見つかった場合、スキャン結果を提供します |
orientationFlat(boolean isOrientationFlat)
(オプション) (デフォルトはfalse )
スキャナーがスキャン面に対して方向をロックする値を設定します。考えられる値は、
価値 | 効果 |
---|---|
真実 | スキャン(カメラ)の方向がスキャン面に対して垂直(フラット)である場合にのみスキャンします。 |
間違い | スキャン面への電話(カメラ)の向きを無視するスキャン。 |
aadhaarNumberMasked(boolean numberMasked)
(オプション) (デフォルトはfalse ) (document.adr and country.inにのみ適用されます)
Aadhaar番号のマスキングを有効/無効にするようにフラグを設定します
価値 | 効果 |
---|---|
真実 | スキャン結果にaadhaar番号をマスク(画像) |
間違い | スキャン結果にAadhaar番号をマスキングすることを無効にします |
removeWatermark()
(オプション) (document.cqlにのみ適用)
チェックリーフ出力画像の上に透かしを削除するためにフラグを設定します。メソッドが呼び出されない場合、デフォルトの動作は透かしを含めることです。
setScanTimeLimit(timeInSec)
(オプション)
ドキュメントスキャン時間制限(秒)を設定します。
タイプ | デフォルト値 | 範囲 |
---|---|---|
document.cql | 25 | 12-30 |
その他のドキュメント | 20 | 8-30 |
skipDocumentAlternateCaptureMode(boolean skipMode)
(オプション) (デフォルトはfalse ) (document.e_mandate_cat1にのみ適用されます)
フラグを設定して、代替キャプチャモードを有効/無効にします。現時点では、document.e_mandate_cat1にのみ適用されます
価値 | 効果 |
---|---|
真実 | 代替キャプチャモードを無効にします |
間違い | 代替キャプチャモードを有効にします |
クエリ/フィードバックについては、 [email protected]
までお問い合わせください