开发者社区> 赵士龙> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 身份证识别系统搭建
+关注继续查看

本章内容出自《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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云高校计划视觉AI五天训练营教程-02_身份证识别系统搭建
人工智能已经普及的时代,各行各业都充斥着AI的身影。大部分人认为人工智能起点高,入门难,想要使用AI服务又无法独立完成编写,阿里云视觉平台是基于阿里巴巴视觉智能技术实践经验,面向视觉智能技术企业和开发商(含开发者),为其提供高易用、普惠的视觉API服务,帮助企业快速建立视觉智能技术的应用能力的综合性视觉AI能力平台。
0 0
阿里云高校计划视觉AI五天训练营 Day 2——身份证识别系统
本文介绍了如何使用阿里云视觉智能开放平台相关服务的PHP SDK,具体包括SDK的获取和安装方法以及SDK代码示例。
0 0
阿里云高校计划视觉AI五天训练营教程 Day 2 - 身份证识别系统搭建
实战讲述如何使用阿里云视觉平台API快速开发在线视觉AI平台,主要如何为如何搭建身份证识别系统,进而扩展到其他的识别系统。
0 0
阿里云高校计划视觉AI五天训练营教程 Day 2 - 身份证识别系统搭建
本篇文章是基于阿里云高校计划AI课程第二讲,身份证识别系统搭建。在阿里云视觉开放平台上已有调试功能。
0 0
视觉AI训练营-DAY 2 身份证识别系统搭建
视觉AI训练营-DAY 2 身份证识别系统搭建
0 0
zbm
视觉AI训练营-DAY 2 身份证识别系统搭建
身份证识别系统搭建-达摩院视觉智能实验室
0 0
视觉AI训练营DAY3 身份证识别系统搭建
简要介绍了电子相册的功能,搭建与相关程序函数的作用。
0 0
+关注
赵士龙
我爱学习,但学习似乎并不爱我
文章
问答
来源圈子
更多
相关文档:
文章排行榜
最热
最新
相关电子书
更多
视觉AI能力的开放现状及ModelScope实战
立即下载
通用多模态AI构建
立即下载
阿里云AI产品必知必会系列电子书
立即下载