當前位置:編程學習大全網 - 源碼破解 - 如何用阿裏雲的API進行身份證識別

如何用阿裏雲的API進行身份證識別

以下內容屬於引用復制,但可以回復妳的問題:

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

在build.gradle添加 compile'com.squareup.ok.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="" />

  • 上一篇:無心法師第二季第十壹集大結局是什麽?
  • 下一篇:歐易是什麽平臺
  • copyright 2024編程學習大全網