SpringBoot集成阿里云OCR实现身份证识别
OCR身份证识别
官网地址:https://help.aliyun.com/zh/ocr/developer-reference/api-ocr-api-2021-07-07-recognizeidcard
身份信息认证(二要素核验)
官网地址:https://api.aliyun.com/document/Dytnsapi/2020-02-17/CertNoTwoElementVerification
代码实现
引入依赖
<!-- 阿里云ocr -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ocr_api20210707</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dytnsapi20200217</artifactId>
<version>2.10.0</version>
</dependency>
工具类
package com.qiangesoft.ocr.utils;
import com.aliyun.dytnsapi20200217.models.*;
import com.aliyun.dytnsapi20200217.models.CertNoTwoElementVerificationRequest;
import com.aliyun.ocr_api20210707.Client;
import com.aliyun.ocr_api20210707.models.RecognizeIdcardRequest;
import com.aliyun.ocr_api20210707.models.RecognizeIdcardResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
/**
* 阿里云ocr识别
*
* @author qiangesoft
* @date 2025-03-27
*/
public class AliyunOcr {
private static final String ACCESS_KEY_ID = "xxx";
private static final String ACCESS_KEY_SECRET = "xxx";
/**
* 调用OCR识别身份证信息
* https://help.aliyun.com/zh/ocr/developer-reference/api-ocr-api-2021-07-07-recognizeidcard
*
* @param imgUrl
* @return
* @throws Exception
*/
public static RecognizeIdcardResponse recognizeIDCard(String imgUrl) throws Exception {
Config config = new Config()
.setAccessKeyId(System.getenv(ACCESS_KEY_ID))
.setAccessKeySecret(System.getenv(ACCESS_KEY_SECRET));
config.endpoint = "ocr-api.cn-hangzhou.aliyuncs.com";
Client client = new Client(config);
RecognizeIdcardRequest recognizeIdcardRequest = new RecognizeIdcardRequest();
recognizeIdcardRequest.setUrl(imgUrl);
RuntimeOptions runtime = new RuntimeOptions();
return client.recognizeIdcardWithOptions(recognizeIdcardRequest, runtime);
}
/**
* 调用身份信息核验API
* https://api.aliyun.com/document/Dytnsapi/2020-02-17/CertNoTwoElementVerification
*
* authCode从这里获取:https://dytns.console.aliyun.com/analysis/square?spm=api-workbench.api_explorer.0.0.14c610915R4RUL
*
* @param name
* @param idCard
* @return
* @throws TencentCloudSDKException
*/
public static CertNoTwoElementVerificationResponse idCardVerification(String name, String idCard) throws Exception {
Config config = new Config()
.setAccessKeyId(System.getenv(ACCESS_KEY_ID))
.setAccessKeySecret(System.getenv(ACCESS_KEY_SECRET));
config.endpoint = "dytnsapi.aliyuncs.com";
com.aliyun.dytnsapi20200217.Client client = new com.aliyun.dytnsapi20200217.Client(config);
CertNoTwoElementVerificationRequest certNoTwoElementVerificationRequest = new CertNoTwoElementVerificationRequest()
.setAuthCode("your_value")
.setCertName(name)
.setCertNo(idCard);
return client.certNoTwoElementVerificationWithOptions(certNoTwoElementVerificationRequest, new RuntimeOptions());
}
}