百度Ocr身份证识别

article/2025/9/11 23:53:59

 controller代码

 //可以写入配置文件String clientId = "去百度云注册账号获取";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "去百度云注册账号获取";/*** 身份证正面* @return*/@GetMapping("/IdCard/front/{uid}")@ApiOperation(value = "身份证正面")public IdCard idCardFront(@PathVariable(name = "uid")int uid){//Token有效期为30天 2592000秒 可以将token存入redis避免重复获取,也可以每次请求获取String Token =authService.getAuth(clientId,clientSecret);//filePath 为本地身份证地址 需要从数据库查询PmsPhoto pmsPhoto = pmsPhotoService.selectPmsPhotoById(uid);//拿到百度返回的json串String idcardResult = idcardService.idcard(pmsPhoto.getIdcardFrontBig(),Token);//将json串转化成类IdCard idcard = jsonService.getIdcardFront(idcardResult);PmsUser pmsUser=new PmsUser();//copy对象BeanUtils.copyProperties(idcard, pmsUser);pmsUser.setId(uid);pmsUserService.updatePmsUser(pmsUser);return idcard;}

获取Ocr权限 authService  获取Token

 /*** 获取API访问token* 该token有一定的有效期,需要自行管理,当失效时需重新获取.* @param ak - 百度云官网获取的 API Key* @param sk - 百度云官网获取的 Secret Key* @return assess_token 示例:* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"*/public String getAuth(String ak, String sk) {// 获取token地址String authHost = "https://aip.baidubce.com/oauth/2.0/token?";String getAccessTokenUrl = authHost// 1. grant_type为固定参数+ "grant_type=client_credentials"// 2. 官网获取的 API Key+ "&client_id=" + ak// 3. 官网获取的 Secret Key+ "&client_secret=" + sk;try {URL realUrl = new URL(getAccessTokenUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();connection.setRequestMethod("GET");connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.err.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = new BufferedReader(new  InputStreamReader(connection.getInputStream()));String result = "";String line;while ((line = in.readLine()) != null) {result += line;}/*** 返回结果示例*/System.err.println("result:" + result);JSONObject jsonObject = JSONObject.parseObject(result);String access_token = jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("获取token失败!");e.printStackTrace(System.err);}return null;}

idcardService根据百度ocr示例代码进行修改,param参数可以根据百度Ocr示例参数进行自定义

  // 请求urlstatic String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard";// aes key 从console控制台获取static String aesKey = "454872cbcd90a105";static byte[] originAesKey = null;public static String idcard(String filePath,String Token) {try {// 本地文件路径
//            String filePath = "D:\\a\\hyy.jpg";byte[] imgData = FileUtil.readFileByBytes(filePath);//加密图片String imgStr = encryptImg(aesKey, imgData);String imgParam = URLEncoder.encode(imgStr, "UTF-8");String param = "id_card_side=" + "front" +"&image=" + imgParam +"&AESEncry=" + true ;String encryptResult = HttpUtil.post(url, Token, param);//解密图片String decryptResult = parseResult(encryptResult);return decryptResult;} catch (Exception e) {e.printStackTrace();}return null;}
jsonService 从百度返回的json数据中取出自己需要的
  public IdCard getIdcardFront(String idcardResult){JSONObject words_result =JSONObject.parseObject(idcardResult);//从JSONObject中取对应的值JSONObject JsonidCard = new JSONObject();JsonidCard.put("name", words_result.getJSONObject("words_result").getJSONObject("姓名").get("words"));JsonidCard.put("nation", words_result.getJSONObject("words_result").getJSONObject("民族").get("words"));JsonidCard.put("address", words_result.getJSONObject("words_result").getJSONObject("住址").get("words"));JsonidCard.put("sex", words_result.getJSONObject("words_result").getJSONObject("性别").get("words"));JsonidCard.put("birth", words_result.getJSONObject("words_result").getJSONObject("出生").get("words"));JsonidCard.put("number", words_result.getJSONObject("words_result").getJSONObject("公民身份号码").get("words"));//JSONObject转对象IdCard idCard = JSON.toJavaObject(JsonidCard,IdCard.class);return idCard;}

总结:1.支持本地图片和url

           2.需要Maven依赖和工具类支持,可以从以下文档获取,也可以从官方文档获取

           3.代码仅供参考更详细内容可以参考以下文档:

     (117条消息) Java集成第三方OCR识别——文档篇_Monster_起飞的博客-CSDN博客_java ocr库icon-default.png?t=M85Bhttps://blog.csdn.net/Monsterof/article/details/124428930

 

 

 


http://chatgpt.dhexx.cn/article/MfTp65S1.shtml

相关文章

华为云-身份证识别-OCR

使用华为云的AI身份证识别-OCR服务功能需要对应的服务器 华为云的OCR身份证识别需要开通服务区域与调用服务的区域保持一致&#xff0c;目前貌似只有四个服务区才有身份证识别服务&#xff0c;如果购买的服务器不是这四个区的貌似就不能使用这个身份证识别 华为云文字识别 OCR…

OCR身份证识别简单算法流程

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 做OCR身份证识别的调研&#xff0c;正好整理一下从基础的图像处理角度的算法流程。 OCR简介 光学字符识别 Optical Character Recognition&#xff08;OCR&#xff09;其…

身份证扫描件联网OCR识别

前言: 1、调用百度API&#xff0c;联网OCR识别&#xff1b; 2、申请Key试用&#xff0c;每天50000次免费调用&#xff0c;超过次数识别失败。商用或超出免费次数自行联系百度付费。百度付费流程&#xff1b; 3、图片编码后不能超过4M&#xff0c;分辨率4096&#xff0a;4096&a…

【python】小游戏-下载即可玩

首先我们需要先下载pycharm&#xff0c;随后我们winR 调出命令控制行 大家可以下载pycharm后&#xff0c;winr 输入cmd 调出命令控制行&#xff0c;随后输入 pip install freegames 安装游戏 pip install freegames 下载好后会跳出来这样的页面 (后带翻译),由于我提前安装完了…

简单的Python小游戏制作

今天呢&#xff0c;给大家展示一下Python有趣的小地方&#xff0c;展示给大家看看&#xff0c;我做的小游戏&#xff0c;是否有大家小时候的回忆呢。下面就废话不多说了&#xff0c;给大家展示一遍&#xff01;感兴趣的小伙伴不懂也没事&#xff0c;可以下载一个PyCharm&#x…

用python制作几款简单又好玩的小游戏,找回童年的记忆

今天给大家带来几个Python小游戏&#xff0c;找回童年的同时学习编程&#xff01; 一、接金币 普通难度&#xff1a;❤ 玩法介绍&#xff1a;吃金币&#xff0c;控制左右键&#xff0c;有手就行。 源码分享 import os import cfg import sys import pygame import random…

简易的Python小游戏

文章目录 一、第一次写Python小游戏二、对小游戏进行改进1.对玩家进行提示2.提供多次机会给玩家3.每次答案应该是随机的 三、总结 一、第一次写Python小游戏 刚开始学习Python这门计算机语言&#xff0c;所以在网上找了一个非常简易的小游戏来进行模仿编写&#xff0c;目的是从…

python小游戏代码200行左右,python编程小游戏代码

大家好&#xff0c;本文将围绕python小游戏代码200行左右展开说明&#xff0c;小游戏程序代码python是一个很多人都想弄明白的事情&#xff0c;想搞清楚python编程小游戏代码需要先了解以下几个事情。 1、python简单小游戏代码 怎么用Python制作简单小游戏 1、Python猜拳小游戏…

python入门小游戏代码20行,python入门小游戏代码

python入门可以做的小游戏 1、Python入门拼图小游戏简单介绍&#xff1a;将图像分为mn个矩形块&#xff0c;并将图像右下角的矩形块替换为空白块后&#xff0c;将这些矩形块随机摆放成原图像的形状。 2、Python入门推箱子小游戏简单介绍&#xff1a;这是来自日本的一个经典游…

Python自制小游戏【附源码 直接运行】

上班不知道怎么摸鱼&#xff1f;代码敲累了直接自制小游戏放松一下&#xff01;今天给大家分享七个小游戏&#xff0c;可以从周一玩到周日&#xff0c;不重样的那种。 赶紧点赞收藏起来吧&#xff01; 1.消消乐 源代码与学习资料领取 &#x1f449; https://jq.qq.com/?_wv1…

用Python制作简单的小游戏

朋友们大家好&#xff0c;相信大部分人都喜欢玩游戏&#xff0c;无论是在工作间隙还是下班回家的路上&#xff0c;可能都会拿起手机玩游戏打发时间&#xff0c;亦或是在游戏中寻找乐趣&#xff0c;放松自己。上 我跟大家分享的内容主要是用Python的Pygame Zero模块来制作小游戏…

用Python实现的这五个小游戏,你真的学会了嘛?

相关文件 源码分享&#xff0c;问题解答&#xff01;&#xff01; 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件三连哟~~ 对了大家可以关注小编的公众号哟~~ 有很多资源可以领取的哟&#xff01;&#xff01; Python日志 游戏名称 五子棋雷霆战机贪吃蛇…

Python实现四个经典小游戏合集

这篇文章主要介绍了利用Python编写一个经典小游戏的合集,包括:贪吃蛇,扫雷,俄罗斯方块,五子棋。感兴趣的小伙伴可以跟随小编一起学习一下 目录 一、效果展示 1、俄罗斯方块2、扫雷3、五子棋4、贪吃蛇二、代码展示 1、俄罗斯方块2、扫雷3、五子棋4、贪吃蛇 一、效果展示 …

10个python入门小游戏,零基础打通关,就能掌握编程基础

前言 不会python就不能用python开发入门级的小游戏&#xff1f; 当然不是&#xff0c;我收集了十个python入门小游戏的源码和教程&#xff0c;并且即使你没有python基础&#xff0c;只要跟着这十个小游戏的开发详细教程去做&#xff0c;以及有了全部的源码&#xff0c;那就能…

python小游戏源码

见缝插针小游戏&#xff0c;设置关卡&#xff0c;难度逐渐增大&#xff0c;效果图如下&#xff0c;需要的话去个人主页提取资源 部分代码如下&#xff1a; def __init__(self, angle): self.x x0 self.y y0 length self.center (self.x, self.y) …

10个python经典小游戏(上)-五一嗨起来(动图演示+源码分享)

&#x1f41a;作者简介&#xff1a;苏凉&#xff08;专注于网络爬虫&#xff0c;数据分析&#xff09; &#x1f433;博客主页&#xff1a;苏凉.py的博客 &#x1f451;名言警句&#xff1a;海阔凭鱼跃&#xff0c;天高任鸟飞。 &#x1f4f0;要是觉得博主文章写的不错的话&…

30个Python小游戏,小白练手,我都能玩一天

大家好&#xff0c;我是雨雨~ 今天给大家带来30个py小游戏&#xff0c;一定要收藏&#xff01;全部源码都整理好了小游戏源码腾讯文档-在线文档https://docs.qq.com/doc/DRnZDTnFGVUFMc3FL 有手就行 1、吃金币 【有手就行系列不介绍玩法了附源码】 源码分享&#xff1a; i…

6个Python童年小游戏,开始敲起来,玩吧!

你的童年&#xff0c;我的童年好像都一样&#xff0c;谁的童年又没玩过游戏呢&#xff0c;这些小游戏应该只有玩过才会懂吧 虽然程序员敲代码多年&#xff0c;但童心还是一直都在的&#xff0c;今天就分享一些私藏的童年游戏&#xff0c;十几行代码就能进入使用Python开发的小…

Java开发面试简历这么写,命中率达70%

上篇文章我们了解到&#xff0c;想要有面试机会&#xff0c;首先要完成一份好的简历。但是在撰写简历的时候&#xff0c;往往有一些细节很容易被忽视&#xff0c;导致面试机会远远不如自己的期望值。一份经过优化的简历&#xff0c;面试的命中率可以达到70%。那我们就来看看&am…

java开发个人简历模板_java程序开发个人简历模板

java程序开发需要有扎实的程序编码知识&#xff0c;下面java程序开发个人简历模板是小编为大家带来的&#xff0c;欢迎浏览。 java程序开发个人简历模板 延伸阅读 面试&#xff0c;简历很重要&#xff0c;那好的简历模板应该如何制作呢? 写简历之前&#xff0c;你得先站在用人…