本文主要写百度文字识别中的常用的银行卡识别和身份证识别
1.在百度AI官网创建一个应用,记得把包名写对,以获取对应的API Key和Secret Key
2.下载识别sdk,根据开发文档中的要求放入所需内容
3.初始化(Applistion)
public class MyApplition extends Application { private Context context; @Override public void onCreate() { super.onCreate(); this.context=getApplicationContext(); OCR.getInstance(context).initAccessTokenWithAkSk(new OnResultListener<AccessToken>() { @Override public void onResult(AccessToken result) { // 调用成功,返回AccessToken对象 String token = result.getAccessToken(); } @Override public void onError(OCRError error) { // 调用失败,返回OCRError子类SDKError对象 } }, getApplicationContext(), "你的AK", "你的SK"); } }
银行卡识别
bankcard.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { intent = new Intent(MainActivity.this, CameraActivity.class); intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, social.milin.tech.photocard.FileUtil.getGivFile(getApplication()).getAbsolutePath()); intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_BANK_CARD); startActivityForResult(intent, REQUEST_CODE_CAMERB); } });
身份证识别(分为正面和反面) //下面只是识别正面
mancard.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, CameraActivity.class); intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, social.milin.tech.photocard.FileUtil.getSaveFile(getApplication()).getAbsolutePath()); intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT); startActivityForResult(intent, REQUEST_CODE_CAMERA); } });
//获取返回结果
@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); String filePath = FileUtil.getSaveFile(getApplicationContext()).getAbsolutePath(); if (!TextUtils.isEmpty(contentType)) { if (CameraActivity.CONTENT_TYPE_ID_CARD_FRONT.equals(contentType)) { recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath); } else if (CameraActivity.CONTENT_TYPE_ID_CARD_BACK.equals(contentType)) { recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath); } } } }else if(requestCode == REQUEST_CODE_CAMERB && resultCode == Activity.RESULT_OK){ if (data != null) { String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE); String filePath = FileUtil.getGivFile(getApplicationContext()).getAbsolutePath(); if (!TextUtils.isEmpty(contentType)) { if (CameraActivity.CONTENT_TYPE_BANK_CARD.equals(contentType)) { recIDCard2(filePath); } else if (CameraActivity.CONTENT_TYPE_BANK_CARD.equals(contentType)) { recIDCard2(filePath); } } } } }
身份证
private void recIDCard(String idCardSide, String filePath) { IDCardParams param = new IDCardParams(); param.setImageFile(new File(filePath)); // 设置身份证正反面 param.setIdCardSide(idCardSide); // 设置方向检测 param.setDetectDirection(true); // 设置图像参数压缩质量0-100, 越大图像质量越好但是请求时间越长。 不设置则默认值为20 param.setImageQuality(20); //获取图片的结果 OCR.getInstance(MainActivity.this).recognizeIDCard(param, new OnResultListener<IDCardResult>() { @Override public void onResult(IDCardResult result) { if (result != null) { name.setText("姓名:"+result.getName()); mycard.setText("身份证号:"+result.getIdNumber()); } } @Override public void onError(OCRError error) { } }); }
//银行卡
private void recIDCard2(String filePath) { BankCardParams param = new BankCardParams(); param.setImageFile(new File(filePath)); //获取图片的结果 OCR.getInstance(MainActivity.this).recognizeBankCard(param, new OnResultListener<BankCardResult>() { @Override public void onResult(BankCardResult bankCardResult) { if (bankCardResult != null) { System.out.println("银行"+bankCardResult.getBankName()); System.out.println("卡号"+bankCardResult.getBankCardNumber()); } } @Override public void onError(OCRError ocrError) { } }); }
//上面所用到的FileUtil
public class FileUtil { public static File getSaveFile(Context context) { File file = new File(context.getFilesDir(), "pic.jpg"); return file; } public static File getGivFile(Context context) { File file = new File(context.getFilesDir(), "conf.jpg"); return file; } }
就可以获取到相应信息了