当前位置: 首页 > news >正文

实名认证 —— 腾讯云身份证认证接口

目录

引言:

流程分析:

前置操作:

接口定义:


引言:

用户在注册成功之后,应该引导他去做实名认证,这就需要用到腾讯云身份证识别和云存储功能了

身份证识别API地址:文字识别 身份证识别_腾讯云本文档介绍了腾讯云OCR接口IDCardOCR的功能、使用方法及开发者资源。该接口支持中国大陆二代身份证正反面所有字段的高精度识别(准确度99%以上),并提供身https://cloud.tencent.com/document/product/866/33524

腾讯云文字识别(Optical Character Recognition,OCR )基于行业前沿的深度学习技术,将图片上的文字内容智能识别成为可编辑的文本。支持通用文字、卡证文字、票据单据、特定场景等多场景下的印刷体、手写体文字识别,同时支持票据核验功能,支持提供定制化服务,可以有效地代替人工录入信息。

流程分析:

文档地址:身份证识别 - 腾讯云腾讯云为数百万的企业和开发者提供安全、稳定的云服务器、云主机、CDN、对象存储、域名注册、云存储、云数据库等云服务,帮助用户解决游戏、视频、移动、微信、互联网+等行业的架构难题,是全球领先的云计算服务商。https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-11-19&Action=IDCardOCR

前置操作:

引入ocr相关依赖:

<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>${tencentcloud.version}</version>
</dependency>

还需引入自定义配置类,可见下面博客前置操作:腾讯云对象存储服务COS-CSDN博客

接口定义:

首先定义一个识别操作的Controller:

@Tag(name = "腾讯云识别接口管理")
@RestController
@RequestMapping(value="/ocr")
@SuppressWarnings({"unchecked", "rawtypes"})
public class OcrController {@Autowiredprivate OcrService ocrService;@Operation(summary = "身份证识别")@PostMapping("/idCardOcr")public Result<IdCardOcrVo> idCardOcr(@RequestPart("file") MultipartFile file) {IdCardOcrVo idCardOcrVo = ocrService.idCardOcr(file);return Result.ok(idCardOcrVo);}
}

随后在Service实现业务逻辑:

实现步骤:

  1. 先将图片转换成base64编码格式字符串。
  2. 按照腾讯官方文档格式,校验身份证信息:
    public class Sample
    {public static void main(String [] args) {try{// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性// 以下代码示例仅供参考,建议采用更安全的方式来使用密钥// 请参见:https://cloud.tencent.com/document/product/1278/85305// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取Credential cred = new Credential(System.getenv("TENCENTCLOUD_SECRET_ID"), System.getenv("TENCENTCLOUD_SECRET_KEY"));// 使用临时密钥示例// Credential cred = new Credential("SecretId", "SecretKey", "Token");// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("ocr.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的OcrClient client = new OcrClient(cred, "ap-guangzhou", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象IDCardOCRRequest req = new IDCardOCRRequest();// 返回的resp是一个IDCardOCRResponse的实例,与请求对象对应IDCardOCRResponse resp = client.IDCardOCR(req);// 输出json格式的字符串回包System.out.println(AbstractModel.toJsonString(resp));} catch (TencentCloudSDKException e) {System.out.println(e.toString());}}
    }
  3. 将返回结果resp内的属性值付给idCardOcrVo后,上传身份证正面图片到腾讯云COS。
@Slf4j
@Service
@SuppressWarnings({"unchecked", "rawtypes"})
public class OcrServiceImpl implements OcrService {@Autowiredprivate TencentCloudProperties tencentCloudProperties;@Autowiredprivate CosService cosService;// 身份证识别@Overridepublic IdCardOcrVo idCardOcr(MultipartFile file) {try{// 图片转换base64格式字符串byte[] base64 = Base64.encodeBase64(file.getBytes());String fileBase64 = new String(base64);// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密Credential cred = new Credential(tencentCloudProperties.getSecretId(),tencentCloudProperties.getSecretKey());// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("ocr.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的OcrClient client = new OcrClient(cred,tencentCloudProperties.getRegion(), clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象IDCardOCRRequest req = new IDCardOCRRequest();//设置文件req.setImageBase64(fileBase64);// 返回的resp是一个IDCardOCRResponse的实例,与请求对象对应IDCardOCRResponse resp = client.IDCardOCR(req);// 转换为IdCardOcrVo对象IdCardOcrVo idCardOcrVo = new IdCardOcrVo();if (StringUtils.hasText(resp.getName())) {// 身份证正面idCardOcrVo.setName(resp.getName());idCardOcrVo.setGender("男".equals(resp.getSex()) ? "1" : "2");idCardOcrVo.setBirthday(DateTimeFormat.forPattern("yyyy/MM/dd").parseDateTime(resp.getBirth()).toDate());idCardOcrVo.setIdcardNo(resp.getIdNum());idCardOcrVo.setIdcardAddress(resp.getAddress());// 上传身份证正面图片到腾讯云cosCosUploadVo cosUploadVo = cosService.upload(file, "idCard");idCardOcrVo.setIdcardFrontUrl(cosUploadVo.getUrl());idCardOcrVo.setIdcardFrontShowUrl(cosUploadVo.getShowUrl());} else {// 身份证反面// 证件有效期:"2010.07.21-2020.07.21"String idcardExpireString = resp.getValidDate().split("-")[1];idCardOcrVo.setIdcardExpire(DateTimeFormat.forPattern("yyyy.MM.dd").parseDateTime(idcardExpireString).toDate());// 上传身份证反面图片到腾讯云cosCosUploadVo cosUploadVo = cosService.upload(file, "idCard");idCardOcrVo.setIdcardBackUrl(cosUploadVo.getUrl());idCardOcrVo.setIdcardBackShowUrl(cosUploadVo.getShowUrl());}return idCardOcrVo;} catch (Exception e) {throw new GuiguException(ResultCodeEnum.DATA_ERROR);}}
}

随后编写feign:

@FeignClient(value = "service-driver")
public interface OcrFeignClient {/*** 身份证识别* @param file* @return*/@PostMapping(value = "/ocr/idCardOcr", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)Result<IdCardOcrVo> idCardOcr(@RequestPart("file") MultipartFile file);
}

http://www.lryc.cn/news/611765.html

相关文章:

  • 机器学习之随机森林
  • Numpy科学计算与数据分析专题
  • CRMEB会员电商系统集群部署 + 腾讯云日志托管优化方案
  • zsh: command not found: code报错解决办法
  • python基础:类
  • LLM——浅谈 LangGraph 中断式工作流:构建一个可交互的问答流程
  • Effective C++ 条款26: 尽可能延后变量定义式的出现时间
  • RN项目环境搭建和使用-Mac版本(模拟器启动不起来的排查)
  • Solidity 编程进阶
  • 阿里国际招AI产品经理咯
  • 用 “私房钱” 类比闭包:为啥它能访问外部变量?
  • Google Chrome <139.0.7236.0 UAF漏洞
  • RabbitMQ面试精讲 Day 12:镜像队列与Quorum队列对比
  • MATLAB下载教程MATLAB R2025a 保姆级安装步骤(附安装包)
  • 双馈和永磁风机构网型跟网型联合一次调频并入同步机电网,参与系统一次调频,虚拟惯量下垂,虚拟同步机VSG控制matlab/simulink
  • matlab——simulink学习(5向NXP库中添加新模块)
  • 计算机网络:如何判断B或者C类IP地址是否划分了子网
  • Linux之Shell脚本基本语法
  • 3步学会使用渲染101--3DMAX云渲染
  • 【计算机网络 | 第3篇】物理媒介
  • 【数据结构与算法-Day 12】深入浅出栈:从“后进先出”原理到数组与链表双实现
  • 探索Linux MMC子系统的奥秘
  • TypeScript 元组类型精简知识点
  • 大数据存储域——HDFS存储系统
  • MCP协议与Spring AI框架实战
  • NY112NY117美光固态闪存NY119NY123
  • 新手向:Python实现简易计算器
  • 疯狂星期四文案网第30天运营日记
  • mysql索引的用法
  • Suno API V5模型 python源码 —— 使用灵感模式进行出创作