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

相关推荐
翔云 OCR API1 天前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
yangshuquan3 天前
使用 C# + IronOcr,轻松实现图片文字自动识别(OCR)和提取
c#·ocr·编程技巧·winforms
明知道的博客5 天前
解决WSL环境下DeepSeek-OCR运行时内存不足问题
python·ocr·deepseek·deepseek-ocr
模型启动机7 天前
DeepSeek OCR vs Qwen-3 VL vs Mistral OCR:谁更胜一筹?
人工智能·ai·大模型·ocr·deepseek
AI人工智能+7 天前
文档抽取技术结合OCR、NLP和计算机视觉,能智能提取PDF、扫描件等版式文档中的结构化数据
pdf·ocr·文档抽取
旗讯数字7 天前
纸质手写表格二次录入效率低?旗讯 OCR 技术方案与行业落地实践
ocr
Olafur_zbj8 天前
【AI】使用OCR处理pdf
数据库·pdf·ocr
码二哥8 天前
借助豆包将vllm推理deepseek-ocr改成web服务访问
ocr·fastapi·vllm·豆包·deepseek-ocr
还是码字踏实8 天前
基于BM25的金融文档智能解析:基于OCR和紧凑型视觉语言模型的多阶段字段提取技术深度解读
金融·ocr·图像预处理·bm25页面预检索·紧凑型视觉语言模型vlm·多阶段金融文档解析框架
旗讯数字8 天前
旗讯 OCR 技术解析:金融行业手写表格识别方案与系统集成实践
大数据·金融·ocr