ocr身份证识别api 如何用阿里云的API进行身份证识别
摘要由作者通过智能技术生成

一、身识别身份如何用阿里云的份证API进行身份证识别

以下内容属于引用复制,但可以回复你的进行问题:

准备工作:在libs下添加 alicloud-Android-apigateway-sdk-1.0.1.jar,commons-codec-1.10-1.jar

在build.gradle添加 compile'com.squareup.okhttp3:okhttp:3.4.1'

在onCreate,或者afterViews初始化API网关

private void initGatewaySdk(){

//初始化API网关

ApiGatewayClient.init(getApplicationContext(), false);

}

调用拍照功能

private void getPhotoCard(){

final String status= Environment.getExternalStorageState();

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.M){

requestPermissions(new String[]{ Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, CAMERA_REQUEST_CODE);

}

if(status.equals(Environment.MEDIA_MOUNTED)){

defaultPhotoAddress= PHOTO_DIR+"/"+ getPhotoName();

PreferenceUtils.modifyStringValueInPreferences(CardActivity.this, Preferences.IMAGE_3, defaultPhotoAddress);

imageUri= Uri.fromFile(new File(defaultPhotoAddress));

Intent intentPhoto= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture

intentPhoto.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

startActivityForResult(intentPhoto, CAMERA_REQUEST_CODE);

} else{

Toast.makeText(CardActivity.this,"没有sd卡", Toast.LENGTH_SHORT).show();

}

}

可以对照片进行裁剪

private void cropImageUri(Uri desUri, int outputX, int outputY, int requestCode){

Intent intent= new Intent("com.android.camera.action.CROP");

intent.setDataAndType(desUri,"image/*");

intent.putExtra("crop","true");

intent.putExtra("aspectX", 5);

intent.putExtra("aspectY", 3);

intent.putExtra("outputX", outputX);

intent.putExtra("outputY", outputY);

intent.putExtra("scale", true);

intent.putExtra(MediaStore.EXTRA_OUTPUT, desUri);

intent.putExtra("return-data", false);

intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

intent.putExtra("noFaceDetection", true);

startActivityForResult(intent, requestCode);

}

用base64上传照片

private void trygetCardNum(){

if(NetworkUtils.isConnectWithTip(this,"您未连接网络,无法获取数据")){

LoadingUtil.show(this);

String imgBase64="";

try{

defaultPhotoAddress= PreferenceUtils.getStringValueInPreferences(this,证识 Preferences.IMAGE_3);

File file= new File(defaultPhotoAddress);

byte[] content= new byte[(int) file.length()];

FileInputStream finputstream= new FileInputStream(file);

finputstream.read(content);

finputstream.close();

imgBase64= new String(Base64.encodeBase64(content));

// imgBase64= Base64Img.Bitmap2StrByBase64(bitmap);

if(imgBase64!=null||!imgBase64.equals("")){

PreferenceUtils.modifyStringValueInPreferences(CardActivity.this, Preferences.IMAGE_3, null);

}

} catch(IOException e){

e.printStackTrace();

return;

}

//获取服务

RpcService rpcService= ApiGatewayClient.getRpcService();

final ApiRequest apiRequest= new ApiRequest();

//设置请求地址、Path及Method

apiRequest.setAddress("");

apiRequest.setPath("/rest/160601/ocr/ocr_idcard.json");

apiRequest.setMethod(HttpMethod.POST);

//按照文档设置二进制形式Body,身识别身份支持设置Query参数、份证Header参数、进行Form形式Body

apiRequest.setStringBody("{ \"inputs\":[{ \"image\":{ \"dataType\":50,证识\"dataValue\":\""+imgBase64+"\"},\"configure\":{ \"dataType\":50,\"dataValue\":\"{ \\\"side\\\":\\\"face\\\"}\"}}]}");

//设置支持自签等形式的证书,如果服务端证书合法请勿设置该值,身识别身份仅在开发测试或者非常规场景下设置。份证

apiRequest.setTrustServerCertificate(true);

//设置超时

apiRequest.setTimeout(10000);

rpcService.call(apiRequest,进行 new ApiResponseCallback(){

@Override

public void onSuccess(ApiResponse apiResponse){

//处理apiResponse

LoadingUtil.dismiss();

String s= apiResponse.getStringBody();

NumBean result= JSONObject.parseObject(s, NumBean.class);

String dataValue= result.getOutputs().get(0).getOutputValue().getDataValue();

DataValueBean dataValueBean= JSONObject.parseObject(dataValue, DataValueBean.class);

Number= dataValueBean.getNum();

name= dataValueBean.getName();

address= dataValueBean.getAddress();

birth= dataValueBean.getBirth();

nationality= dataValueBean.getNationality();

sex= dataValueBean.getSex();

if(dataValueBean.getError_msg()==null){

runOnUiThread(new Runnable(){

public void run(){

if(Number== null||Number.equals("")||name== null||name.equals("")||address== null||address.equals("")||birth== null||birth.equals("")||sex== null||sex.equals("")){

Toast.makeText(CardActivity.this,"扫描失败,请重试",证识 Toast.LENGTH_LONG).show();

}else{

//扫描成功

}

}

});

}else{

errString= dataValueBean.getError_msg();

runOnUiThread(new Runnable(){

public void run(){

Toast.makeText(CardActivity.this,"扫描失败,请重试",身识别身份 Toast.LENGTH_LONG).show();

}

});

}

}

@Override

public void onException(ApiInvokeException e){

//处理异常

LoadingUtil.dismiss();

runOnUiThread(new Runnable(){

public void run(){

Toast.makeText(CardActivity.this,"扫描失败,请重试",份证 Toast.LENGTH_LONG).show();

}

});

}

});

}

}

附:

public class NumBean implements Serializable{

private List<OutputsBean> outputs;

public List<OutputsBean> getOutputs(){

return outputs;

}

public void setOutputs(List<OutputsBean> outputs){

this.outputs= outputs;

}

public static class OutputsBean{

private String outputLabel;

private OutputMultiBean outputMulti;

private OutputValueBean outputValue;

public String getOutputLabel(){

return outputLabel;

}

public void setOutputLabel(String outputLabel){

this.outputLabel= outputLabel;

}

public OutputMultiBean getOutputMulti(){

return outputMulti;

}

public void setOutputMulti(OutputMultiBean outputMulti){

this.outputMulti= outputMulti;

}

public OutputValueBean getOutputValue(){

return outputValue;

}

public void setOutputValue(OutputValueBean outputValue){

this.outputValue= outputValue;

}

public static class OutputMultiBean{

}

public static class OutputValueBean{

private int dataType;

private String dataValue;

public int getDataType(){

return dataType;

}

public void setDataType(int dataType){

this.dataType= dataType;

}

public String getDataValue(){

return dataValue;

}

public void setDataValue(String dataValue){

this.dataValue= dataValue;

}

}

}

}

public class DataValueBean implements Serializable{

private String address;

private String birth;

private String config_str;

private String error_msg;

private String name;

private String nationality;

private String num;

private String request_id;

private String sex;

private boolean success;

public String getAddress(){

return address;

}

public void setAddress(String address){

this.address= address;

}

public String getBirth(){

return birth;

}

public void setBirth(String birth){

this.birth= birth;

}

public String getConfig_str(){

return config_str;

}

public void setConfig_str(String config_str){

this.config_str= config_str;

}

public String getError_msg(){

return error_msg;

}

public void setError_msg(String error_msg){

this.error_msg= error_msg;

}

public String getName(){

return name;

}

public void setName(String name){

this.name= name;

}

public String getNationality(){

return nationality;

}

public void setNationality(String nationality){

this.nationality= nationality;

}

public String getNum(){

return num;

}

public void setNum(String num){

this.num= num;

}

public String getRequest_id(){

return request_id;

}

public void setRequest_id(String request_id){

this.request_id= request_id;

}

public String getSex(){

return sex;

}

public void setSex(String sex){

this.sex= sex;

}

public boolean isSuccess(){

return success;

}

public void setSuccess(boolean success){

this.success= success;

}

}

在AndroidManifest.xml下添加

<meta-data android:name="com.alibaba.apigateway.appKey" android:value=""/>

<meta-data android:name="com.alibaba.apigateway.appSecret" android:value=""/>

二、请问证件的进行“OCR识别”是什么意思啊

证件的OCR识别”就是针对证件类文档进行识别的技术,原理就是利用OCR识别技术,通过拍摄证件图像或者从相册中加载图像,过滤证件的背景底纹干扰,自动分析证件各文字进行字符切分、识别,最后将识别结果按各栏目分别导入到软件的数据库对应的字段当中。推荐安装云脉证件识别,人们就不用再依靠手工输入相关证件信息,可以实现自动识别采集。

云脉OCR证件识别一般包括身份证识别、驾照识别、行驶证识别、车牌识别、驾照副页识别、行驶证副页识别、护照识别、企业三证识别、户口本识别、港澳通行证识别,云脉SaaS平台都能下载上述识别api接口

三、身份证ocr识别失败是什么意思

ocr识别失败是指没有有效的提取图片信息,无法提取证件上的文字信息上传。

OCR识别技术无法保证100%识别成功、识别正确,只能无限接近与100%,这种情况属正常现象,可以选择手动录入,OCR文字识别是指电子设备检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程,

对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程,如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,衡量一个OCR系统性能好坏的主要指标有,拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性。

OCR简介:

光学文字识别的概念是在1929年由德国科学家Tausheck最先提出来的,美国科学家Handel也提出了利用技术对文字进行识别的想法,而最早对印刷体汉字识别进行研究的是IBM公司的Casey和Nagy。

早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。以同样拥有方块文字的日本为例,1960年左右开始研究OCR的基本识别理论,初期以数字为对象。

20世纪70年代初,日本的学者开始研究汉字识别,并做了大量的工作,中国在OCR技术方面的研究工作起步较晚,在70年代才开始对数字、英文字母及符号的识别进行研究,70年代末开始进行汉字识别的研究。到1986年汉字识别的研究进入一个实质性的阶段。

研究单位相继推出了中文OCR产品早期的OCR软件,由于识别率及产品化等多方面的因素,未能达到实际要求,由于硬件设备成本高,运行速度慢,也没有达到实用的程度,只有个别部门,如信息部门、新闻出版单位等使用OCR软件。

进入20世纪90年代以后,随着平台式扫描仪的广泛应用,以及我国信息自动化和办公自动化的普及,大大推动了OCR技术的进一步发展,使OCR的识别正确率、识别速度满足了广大用户的要求。

参考资料:增值税发票ocr识别

举报/反馈

评论

发表
一、请问证件的“OCR识别”是什么意思啊证件的OCR识别”就是针对证件类文档进行识别的技术,原理就是利用OCR识别技术,通过拍摄证件图像或者从相册中加载图像,过滤证件的背景底纹干扰,自动分析证件各文字
2024-09-11 04:34 举报
回复
一、影视投资合同本合同由下列各方于20xx年[ ]月[ ]日在签订:甲方:乙方:鉴于:1、甲方是依法注册成立并取得合法从事电视剧制作、发行资格的电视剧制作发行单位,具有履行本合同的能力和资质;2、乙方
2024-09-11 04:22 举报
回复
一、ocr图像识别软件怎么使用我给你一个捷速ocr的使用方法:第一步:打开我们下载好的软件,会出现一个对话框,选择上面的“从图片中选文件”。然后在对话框中,打开需要编辑的图片。第二步:图片就会出现在编
2024-09-11 03:56 举报
回复
一、电脑上有哪些好用的OCR文字识别软件其实可以不用电脑也轻松实现,手机上有ocr识别软件,使用非常方便,随时随地都可以进行识别,下面分享一款好用的手机ocr识别软件。需要的工具:掌上识别王具体的步骤
2024-09-11 03:38 举报
回复
一、建行二维码收款每天要收多少金额才可以使用建行惠懂你贷款1-3w。根据查询中国建设银行官网显示,惠懂你贷款条件是必须是持有正规经营执照的合法小微企业,必须是中国内地企业,不含港澳台等,而二维码收款每
2024-09-11 03:20 举报
回复
查看更多评论