/**
* 身份认证
* @param userInfo
*/
@Override
public boolean verifyIDCard(String imageUrl, String inputName, String inputIdNumber,String type) {
try {
//imageUrl="https://59.25.126.35:8080/image/identityImage/9025fe7d-8852-4aae-bedb-73859eeaf79d.png";
log.info("认证的图片地址为"+imageUrl);
StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
.accessKeyId(ACCESS_KEY_ID)
.accessKeySecret(ACCESS_KEY_SECRET)
//.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // use STS token
.build());
AsyncClient client = AsyncClient.builder()
.region("cn-hangzhou") // Region ID
.credentialsProvider(provider)
.overrideConfiguration(
ClientOverrideConfiguration.create()
// Endpoint 请参考 https://api.aliyun.com/product/ocr-api
.setEndpointOverride("ocr-api.cn-hangzhou.aliyuncs.com")
//.setConnectTimeout(Duration.ofSeconds(30))
)
.build();
//InputStream bodyStream = new FileInputStream(new File("<your-file-path>"));
RecognizeAllTextRequest recognizeAllTextRequest = RecognizeAllTextRequest.builder()
//.body(bodyStream)
//.url("https://img.alicdn.com/tfs/TB1q5IeXAvoK1RjSZFNXXcxMVXa-483-307.jpg")
.url(imageUrl)
.type(type)// BusinessLicense 营业执照 IdCard 身份证号
.build();
CompletableFuture<RecognizeAllTextResponse> response = client.recognizeAllText(recognizeAllTextRequest);
RecognizeAllTextResponse resp = response.get();
log.info("OCR识别结果:"+new Gson().toJson(resp));
client.close();
if("IdCard".equals(type)){
//身份证认证
if (resp.getBody().getCode() == null) {
//错误码(当识别成功时不会返回)。
RecognizeAllTextResponseBody.SubImages subImages =resp.getBody().getData().getSubImages().get(0);
String ocrName = subImages.getKvInfo().getKvDetails().get("name").getValue();
String ocrIdNumber =subImages.getKvInfo().getKvDetails().get("idNumber").getValue();
// 比较姓名和身份证号是否一致
log.info("OCR识别身份证结果:"+ocrName+"-"+ocrIdNumber+"传入结果="+inputName+"-"+inputIdNumber);
return inputName.equals(ocrName) && inputIdNumber.equals(ocrIdNumber);
} else {
//错误信息(当识别成功时不会返回)。
log.info("OCR识别失败:未返回有效数据"+resp.getBody().getMessage());
return false;
}
}else if("BusinessLicense".equals(type)){
//营业执照认证
if (resp.getBody().getCode() == null) {
//错误码(当识别成功时不会返回)。
RecognizeAllTextResponseBody.SubImages subImages =resp.getBody().getData().getSubImages().get(0);
String ocrCompanyName = subImages.getKvInfo().getKvDetails().get("companyName").getValue();
String ocrCreditCode =subImages.getKvInfo().getKvDetails().get("creditCode").getValue();
// 比较姓名和身份证号是否一致
log.info("OCR识别营业执照结果:"+ocrCompanyName+"-"+ocrCreditCode+"传入结果="+inputName+"-"+inputIdNumber);
return inputName.equals(ocrCompanyName) && inputIdNumber.equals(ocrCreditCode);
} else {
//错误信息(当识别成功时不会返回)。
log.info("OCR识别失败:未返回有效数据"+resp.getBody().getMessage());
return false;
}
}else{
return false;
}
} catch (Exception e) {
log.info("OCR识别异常:" + e.getMessage());
return false;
}
}
<!--阿里云OCR识别 start-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-ocr_api20210707</artifactId>
<version>3.0.4</version>
</dependency>
<!--阿里云OCR识别 end-->