阿里视觉AI训练营-day02-身份证识别系统搭建

本文涉及的产品
车辆物流识别,车辆物流识别 200次/月
票据凭证识别,票据凭证识别 200次/月
票证核验,票证核验 50次/账号
简介: 身份证识别系统搭建

本章内容出自《5天入门视觉AI》电子书,点击下载完整版。
身份证识别系统搭建

在进行实践之前,我们先看一下最终的效果,如下图所示,该系统是一个简单的身份证识别系统。
用户上传身份证人像面和国徽面之后,点击开始识别,就可以得到身份证正反面的内容了。

image.png

一、项目简介

下图是这个项目的文件结构,它是通过spring-boot-starter创建的一个spring-boot项目。

image.png

项目中主要文件的介绍如下:

Application:Spring-Boot的一个启动类;
MainController:控制器层,负责模版的渲染、路由等功能;
OcrService:负责通过SDK调用视觉智能开放平台的OCR能力;
index.html:基于thymeleaf的前端模版;
application.properties:包含若干配置项的配置文件;
pom.xml:pom依赖。

二、如何获取视觉智能开放平台提供的SDK?

进入到视觉智能开放平台的官网https://vision.aliyun.com/ 后往下拉,我们可以发现平台已经开放了包括人脸识别、文字识别、商品理解等在内的多项视觉AI能力,点击文字识别菜单,可以找到身份证识别项,然后我们点击进入,之后点击文档链接查看具体文档。

image.png

在文档页面,我们点击SDK参考,可以看到有两个Java的SDK说明,两个SDK的区别主要是新的JavaSDK支持本地上传图片,也就是说通过这个新的SDK可以直接把本地的图片交给视觉智能开放平台来进行OCR识别、人脸识别等任务。

image.png

点击Java(支持本地上传)进入相应的说明页,我们可以看出其中有很多SDK,我们需要找到需要的OCR SDK。如下图所示,我们可以通过https://mvnrepository.com/artifact/com.aliyun/ocr 来找到我们所需要的相应版本的SDK,然后获取我们需要的Maven坐标。

image.png

在获取了Maven坐标之后,如下图所示,我们可以通过在pom.xml文件中添加Maven依赖安装java SDK,这样便成功获取到了视觉智能开放平台提供的SDK。

image.png

三、项目实现逻辑
(一)前端

前端的实现是基于thymeleaf做的一个模版,其页面如下图所示,包括一个标题、2个表单、2个上传文件的组件以及一个开始识别的按钮。

image.png

下图所示是相应的标题、表单和按钮的实现代码。这里我们用到了bootstrap和jquery来进行页面的美化,我们用代理的方式来实现美化,相当于我们点击“上传人像面”的组件时候,会把表达上传到input组件中,再把input中的内容传给form表单,“上传国徽面”也是如此。在input组件中,我们限制了可以上传图片的类型,最前面还设置了一个alert,在用户上传的图片出现问题的时候会进行提示或者报错。

image.png

下图是在用户上传正确的图片并提交之后的相关代码逻辑,主要分为两部分:一是对上传的图片进行展示,二是对OCR识别出的信息进行展示,包括姓名、性别、民族、出生日期等信息。

image.png

(二)控制层

控制层主要包括如下几部分:

定义的若干个私有成员;
MainCntroller;
saveFile;
index;
uploadFile。

image.png

(1)私有成员
私有成员变量如下图所示,包括上传图片文件本地保存地址(uploadDirectory)、调用视觉智能开放平台能力的封装(ocrService)、上传图片的缓存路径地址(faceImage、backImage)、识别结果的缓存(faceResults、backResults)。

image.png

(2)MainController
MainController构造方法的代码如下图所示,其中file.upload.path变量是在配置文件中的,是本机的一个上传文件的目录地址,大家可以在实践的时候根据自己的情况进行设置。这里有个小技巧,这里配置的目录地址其实是项目target目录下的一个子目录,这是因为springboot会默认取target下的static目录作为静态文件的地址,如果我们这么设置的话,上传和读取文件对应的是同一目录,可以更方便的进行文件的读取和存储操作。

image.png

image.png

(3)saveFile
saveFile是一个私有方法,用来保存文件,其代码如下图所示。

image.png

(4)index
index是一个控制方法,是一开始进入页面时候用来加载模版的。首先是判断faceImage和backImage缓存是否一样,如果不一样,就全部清除掉;其次就是将已经上传的结果进行展示,起到一个重新刷新页面也不会丢失识别结果的作用。

image.png

(5)uploadFile
uploadFile也是一个控制方法,有三个参数,一个正面的人像面的文件,一个背面的国徽面的文件,还有一个用来重定向的参数。首先,判断两张图片是否是空的,如果是空的,将会重定向到index,相当于重新进入首页,并且会有一个message来提示用户必须要上传一个文件,否则是无效的;接下来判断上传目录是否存在,如果不存在就递归的进行创建;然后如果人像面的文件不为空,将其保存到本地,紧接着调用视觉智能开放平台的能力去进行识别,在拿到结果之后将上传的图片和识别结果加入到缓存池中,国徽面的处理方式也类似;最后几行代码是异常的处理,并且会告知用户是哪种报错。

image.png

(三)OcrService

CcrService的实现代码如下所示。首先,是4个私有变量,ocrClient、runtime、accessKeyId和accessKeySecret,其中accessKeyId和accessKeySecret要在配置文件中进行配置;其次是一个初始化方法,初始化Client和runtime;接下来是真正调用视觉智能开放平台身份证识别的方法,具体来说,在设置好request之后,我们将request和runtime作为参数传递给ocrClient来调用身份证识别的方法,之后我们得到相应的response,也就是识别的结果,之后我们将结果处理成哈希Map返回给控制层。

image.png

控制层拿到返回的结果之后,结合前端的优化进行结果的展示,至此,我们便完成了一个身份证识别系统的构建。

目录
相关文章
|
6天前
|
机器学习/深度学习 人工智能 数据可视化
首个全自动科学发现AI系统,Transformer作者创业公司Sakana AI推出AI Scientist
【9月更文挑战第11天】Sakana AI公司近日推出全球首个全自动科学发现AI系统——AI Scientist,实现了人工智能在科学研究领域的重大突破。AI Scientist不仅能独立完成从假设提出到实验设计、数据分析及论文撰写的全过程,还能通过模拟评审提升研究成果的质量。该系统已成功应用于机器学习的多个子领域,并产出达到顶级会议标准的论文。尽管其高效性备受赞誉,但也引发了关于研究可信度和潜在风险的讨论。Sakana AI强调,系统具备可追溯的决策过程与严格的评审机制,确保了研究的可靠性和透明度。论文详情参见:[链接]。
24 6
|
26天前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
3天前
|
消息中间件 人工智能 运维
|
20天前
|
人工智能 前端开发 Java
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
本文介绍了如何使用 **Spring Cloud Alibaba AI** 构建基于 Spring Boot 和 uni-app 的聊天机器人应用。主要内容包括:Spring Cloud Alibaba AI 的概念与功能,使用前的准备工作(如 JDK 17+、Spring Boot 3.0+ 及通义 API-KEY),详细实操步骤(涵盖前后端开发工具、组件选择、功能分析及关键代码示例)。最终展示了如何成功实现具备基本聊天功能的 AI 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
152 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
|
1月前
|
人工智能 自然语言处理 云计算
iOS迎来AI升级:揭秘Apple全新“智能”系统
iOS迎来AI升级:揭秘Apple全新“智能”系统
iOS迎来AI升级:揭秘Apple全新“智能”系统
|
21天前
|
存储 人工智能 自然语言处理
利用AI技术实现智能客服系统
【8月更文挑战第27天】本文将介绍如何利用人工智能(AI)技术构建一个智能客服系统,以提高客户服务效率和质量。我们将从需求分析、系统设计、功能实现等方面进行详细阐述,并通过实际代码示例展示如何实现一个简单的智能客服系统。
|
24天前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
24天前
|
人工智能 分布式计算 架构师
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
大数据及AI典型场景实践问题之基于MaxCompute构建Noxmobi全球化精准营销系统如何解决
|
28天前
|
机器学习/深度学习 人工智能 监控
探索视觉AI:超越计算机视觉的边界
【8月更文挑战第20天】
40 2
|
16天前
|
人工智能 监控 安全
AI计算机视觉笔记十三:危险区域识别系统
本文介绍了如何在 IPC 监控视频中实现区域入侵检测,通过 YOLOv5 和 ByteTrack 实现人物检测与多目标跟踪。系统能在检测到人员进入预设的危险区域时发出警报,保障安全。主要步骤包括:1)使用 YOLOv5 识别人物;2)使用 ByteTrack 进行多目标跟踪;3)利用射线法判断物体是否进入禁区内。项目基于 Python 开发,使用海思、君正、RK 等摄像头模组,代码已在 RV1126 上验证,计划移植至 RK3568 平台。项目结构清晰,包含模型训练、跟踪算法及图形化界面展示等功能。