安卓OCR身份证识别技术

来源:互联网 发布:linux utf8转gbk乱码 编辑:程序博客网 时间:2024/05/22 01:33

给大家带来一个安卓OCR身份识别技术,我这里用的是百度提供的技术。需要去百度的开发平台注册账号,以及APP。
这是APP获取Token的方法。
private void initAccessTokenWithAkSk() {
OCR.getInstance().initAccessTokenWithAkSk(new OnResultListener() {
@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方法。这个方法是百度的回调,进行身份识别。 @Overrideprotected 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() {
@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 然后把相关文件转移进项目。