给大家带来一个安卓OCR身份识别技术,我这里用的是百度提供的技术。需要去百度的开发平台注册账号,以及APP。
这是APP获取Token的方法。
private void initAccessTokenWithAkSk() {
OCR.getInstance().initAccessTokenWithAkSk(new OnResultListener<AccessToken>() {
@Override
public void onResult(AccessToken result) {
String token = result.getAccessToken();
}
@Override
public void onError(OCRError error) {
error.printStackTrace();
alertText("AK,SK方式获取token失败", error.getMessage());
}
}, getApplicationContext(), "你的AK", "你的SK");
}
//然后就是吊起相机,在返回结果的方法里面,去获取图片,然后调用recIDCard方法。这个方法是百度的回调,进行身份识别。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_CAMERA && resultCode == Activity.RESULT_OK) {
if (data != null) {
String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE);
if (!TextUtils.isEmpty(contentType)) {
if (CameraActivity.CONTENT_TYPE_ID_CARD_FRONT.equals(contentType)) {
String filePath = getSaveFile(getApplicationContext(), "zhengmian.jpg").getAbsolutePath();
recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath);
} else if (CameraActivity.CONTENT_TYPE_ID_CARD_BACK.equals(contentType)) {
String filePath = getSaveFile(getApplicationContext(), "fanmian.jpg").getAbsolutePath();
recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath);
}
}
}
}
}
这是图片识别方法。
private void recIDCard(final String idCardSide, final String filePath) {
final IDCardParams param = new IDCardParams();
Bitmap bitmapOne = BitmapFactory.decodeFile(filePath, getBitmapOption(2));
File file = saveBitmapFile(bitmapOne, filePath);
param.setImageFile(file);
param.setIdCardSide(idCardSide);
param.setDetectDirection(true);
OCR.getInstance().recognizeIDCard(param, new OnResultListener<IDCardResult>() {
@Override
public void onResult(IDCardResult result) {
if (result != null) {
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
if (idCardSide.equals(IDCardParams.ID_CARD_SIDE_BACK)) {
mImageViewFanMian.setImageBitmap(bitmap);
}
if (idCardSide.equals(IDCardParams.ID_CARD_SIDE_FRONT)) {
mImageViewZhengMianZhao.setImageBitmap(bitmap);
}
String[] split = result.toString().split(",");
if (split.length == 8) {
}
}
}
@Override
public void onError(OCRError error) {
alertText("采集信息有误", error.getMessage());
}
});
}
在使用百度的OCR身份识别技术时,需要去百度开发者平台注册APP,需要OCR的jar包,以及相关文件。使用时请下载官方Demo 然后把相关文件转移进项目。