使用阿里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、调试结果

相关推荐
AwakeFantasy11 小时前
聊聊近况和最近做的踩坑项目
人工智能·python·gpt·ocr
EntyIU2 天前
mineru从安装部署到测试使用完整指南
python·ocr
OCR_133716212752 天前
技术解读:国内第一梯队 OCR 大模型现状与技术路线分析
ocr
AI人工智能+2 天前
赋能智慧监管:基于深度学习的特种行业许可证全要素精准识别系统
计算机视觉·自然语言处理·ocr·特种行业许可证识别
AI人工智能+3 天前
施工许可证智能识别系统通过融合计算机视觉与自然语言处理技术,实现了建筑行业关键证件的自动化信息提取
人工智能·深度学习·计算机视觉·ocr·施工许可证识别
王莎莎-MinerU3 天前
MinerU 深度技术解析:从架构原理到生产部署的全面指南
css·人工智能·自然语言处理·架构·ocr·个人开发
庖丁AI4 天前
PDF表格提取工具怎么选?普通转换、OCR和解析工具的区别
pdf·ocr
weixin_397574094 天前
食品包装AI质检系统技术实现:从OCR提取到合规检测全链路
人工智能·ocr
OCR_133716212755 天前
2026大模型OCR横向测评:百度、腾讯、DeepSeek等主流模型选型对比
百度·ocr
AI人工智能+5 天前
医疗器械经营许可证识别技术通过深度学习与OCR技术实现高效资质审核
自然语言处理·ocr·医疗器械经营许可证识别