使用阿里OCR身份证识别

1、开通服务

免费试用

2、获取accesskay

AccessKeyId和AccessKeySecret 要同时复制保存下来 因为后面好像看不AccessKeySecret了

3.Api 参考

https://help.aliyun.com/zh/ocr/developer-reference/api-ocr-api-2021-07-07-recognizeidcard?spm=a2c4g.11186623.0.0.7a9f4b1e5C0zS3

4、SDK示例

5、引入Maven依赖

XML 复制代码
         <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>ocr_api20210707</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.79</version>
        </dependency>

6、controller

java 复制代码
package org.example.controller;

import cn.csliu.entity.IdCardRoot;
import com.aliyun.ocr_api20210707.Client;
import com.aliyun.ocr_api20210707.models.*;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.Common;
import com.aliyun.teautil.models.RuntimeOptions;
import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSON;
import java.io.InputStream;




@RestController
public class IDCartController {

    public static Client createClient() throws Exception {
        Config config = new Config()
                .setAccessKeyId("你的AccessKeyID")
                .setAccessKeySecret("你的AccessKeySercet");
        // Endpoint 请参考 https://api.aliyun.com/product/ocr-api
        //设置阿里云 OCR 服务的 API 终端地址。
        config.endpoint = "ocr-api.cn-hangzhou.aliyuncs.com";
        return new Client(config);
    }

    @SneakyThrows
    @PostMapping("/ocr")
     public Object getOcrInfo(@RequestParam("file") MultipartFile file) throws Exception {
        Client client = IDCartController.createClient();
        //将fille文件转化为stream流
        InputStream bodyStream = file.getInputStream();

        RecognizeIdcardRequest recognizeIdcardRequest = new RecognizeIdcardRequest();
        recognizeIdcardRequest.setBody(bodyStream);
        RecognizeIdcardResponse response = null;
        String data = "";
        IdCardRoot idCardRoot = null;
        RuntimeOptions runtime = new RuntimeOptions();
        try {
             // 复制代码运行请自行打印 API 的返回值
            response = client.recognizeIdcardWithOptions(recognizeIdcardRequest, runtime);

            RecognizeIdcardResponseBody body = response.getBody();
            data= body.getData();
            idCardRoot = JSON.parseObject(data, IdCardRoot.class);
        } catch (TeaException error) {
            // 如有需要,请打印 error
            Common.assertAsString(error.message);
         } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 如有需要,请打印 error
            Common.assertAsString(error.message);
         }

        return idCardRoot;

     }
}

7、entity 实现类

java 复制代码
package org.example.entity;

import lombok.Data;

@Data
public class IdCardBack {
    private IdCardDataBackData data;
}
java 复制代码
package org.example.entity;

import lombok.Data;

/**
 * @author mucd
 */
@Data
public class IdCardDataBackData {
    /**
     * 办理地址
     */
    private String issueAuthority;

    /**
     * 生效-到期
     */
    private String validPeriod;
}
java 复制代码
package org.example.entity;

import lombok.Data;

/**
 * @author mucd
 */
@Data
public class IdCardDataFaceData {
    private String name; //姓名
    private String sex; //性别
    private String birthDate; //出生日期
    private String ethnicity;//民族
    private String address; //地址
    private String idNumber;//身份证号码
}
java 复制代码
package org.example.entity;

import lombok.Data;

@Data
public class IdCardDataType {
    private IdCardFace face;
    private IdCardBack back;
}
java 复制代码
package org.example.entity;

import lombok.Data;

@Data
public class IdCardFace {
    private IdCardDataFaceData data;
}
java 复制代码
package org.example.entity;

import lombok.Data;

@Data
public class IdCardRoot {
    private IdCardDataType data;
}

8、调试结果

相关推荐
熊猫钓鱼>_>1 天前
深入解析 Monkey OCR:本地化、多语言文本识别的利器与实践指南
ocr
代码AI弗森2 天前
PDF OCR + 大模型:让文档理解不止停留在识字
pdf·ocr
AI人工智能+4 天前
应用银行卡识别技术,构建更安全、便捷的数字身份认证与支付生态
人工智能·ocr·银行卡识别
deephub5 天前
Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22
人工智能·深度学习·神经网络·ocr
ccut 第一混6 天前
c#联合Halcon进行OCR字符识别(含halcon-25.05 百度网盘)
c#·ocr·halcon
R-G-B8 天前
【04】OpenCV C++实战篇——实战:发票精准定位,提取指定单元格数据。(倾角计算、旋转矫正、产品定位、目标定位、OCR文字提取)
c++·opencv·ocr·发票精准定位·提取指定单元格数据·倾角计算·旋转矫正
EkihzniY9 天前
单层 PDF 与双层 PDF:一字之差,功能大不同
pdf·ocr
郭庆汝12 天前
本地服务器端部署基于大模型的通用OCR项目——dots.ocr
ocr
EkihzniY14 天前
OCR 精准识别验讫章:让登记与校验更智能
ocr
CodeCraft Studio14 天前
使用 Aspose.OCR 将图像文本转换为可编辑文本
java·人工智能·python·ocr·.net·aspose·ocr工具