身份证正反面识别,身份证扫描识别,二代身份证OCR识别,OCR极速识别身份证所有信息正反面均可。离线无需联网,极速秒扫。
(),
OcrDecodeFactory.initOCR(context);
OcrDecodeFactory.newBuilder(context)
.requestCode(REQUEST_CODE)
.ocrType(binding.type.getSelectedItemPosition()) //0, 1, 2
.broadcastAction(broadcastAction) //
.startOcrActivity(); //
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE && resultCode == RESULT_OK){
String result = data.getStringExtra("OCRResult");
try {
JSONObject jo = new JSONObject(result);
StringBuffer sb = new StringBuffer();
sb.append(String.format(" = %s\n", jo.opt("type")));
sb.append(String.format(" = %s\n", jo.opt("name")));
sb.append(String.format(" = %s\n", jo.opt("sex")));
sb.append(String.format(" = %s\n", jo.opt("folk")));
sb.append(String.format(" = %s\n", jo.opt("birt")));
sb.append(String.format(" = %s\n", jo.opt("num")));
sb.append(String.format(" = %s\n", jo.opt("addr")));
sb.append(String.format(" = %s\n", jo.opt("issue")));
sb.append(String.format(" = %s\n", jo.opt("valid")));
sb.append(String.format(" = %s\n", jo.opt("imgPath")));
sb.append(String.format(" = %s\n", jo.opt("headPath")));
sb.append("\n\n");
sb.append(String.format(" = %s\n", jo.opt("nation")));
sb.append(String.format(" = %s\n", jo.opt("startTime")));
sb.append(String.format(" = %s\n", jo.opt("drivingType")));
sb.append(String.format(" = %s\n", jo.opt("registerDate")));
binding.textview.setText(sb.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
//
private class ResultReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(broadcastAction.equals(intent.getAction())){
String result = intent.getStringExtra("OCRResult");
Toast.makeText(context, ": " + result, Toast.LENGTH_LONG).show();
}
}
}
aar libs, build.gradle:
android{
repositories {
flatDir {
dirs 'libs'
}
}
defaultConfig {
manifestPlaceholders = [
//debug.keystore, .
//**: KEYapplicationId **
"OCR_API_KEY" : "26f1f6a0d4d7cb0dd0e9b28f4cedef83"
]
ndk {
//abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'arm64-v8a'
//armeabi x86 , Android11 ABI
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation (name: 'library-ocr-2.0-SNAPSHOT', ext: 'aar')
//Gradle7 : implementation(files("./libs/library-ocr-2.0-SNAPSHOT.aar"))
}
,,API.
//1. Application
OcrDecodeFactory.initOCR(context);
//2.
OcrDecode ocrDecode = OcrDecodeFactory.newBuilder(context)
.saveImage(saveImage) //, ,
.ocrType(ocrType) //0, 1, 2
.margin(getResources().getDimension(R.dimen.public_40_dp)) //, 48dp, 20dp
.build();
/*
3.
3.1 , onSuccess, json
3.2 decode , , , SimpleCameraActivity
*/
ocrDecode.decode(byte[] jpeg, callback);
ocrDecode.decode(String path, callback);
//, UI
private OcrDecodeCallback callback = new OcrDecodeCallback() {
@Override
public void onSuccess(final String json) {
}
@Override
public void onFail(final int cause) {
/*
LibraryInitOCR.DECODE_FAIL
LibraryInitOCR.DECODE_UNAUTHORIZED
LibraryInitOCR.DECODE_AUTO_FOCUS
*/
}
};
//4.Activity onDestroy
ocrDecode.close();
app/proguard-rules.pro
2.0
1. , ,
2. Android 12 exported
3.
so armeabi-v7a arm64-v8a
(image/pay.png) .
applicationIdsha1KEY.
sha1 :
:
keytool -list -v -keystore .keystore -storepass
, , , , ..., aar.
AAR ,
, .