本系统可在前端批量识别身份证照片,将识别到的身份证信息存入数据库,然后可以提供在前端导出到EXcel里,由于信息具有时效性,数据库里的身份证信息会在每日的凌晨一点自动清除。本系统经过改造可以,添加功能,可以作为毕业设计。文末附源码。
**

系统提出背景:

有一次去做核酸的时候,发现核酸站点,一名医护人员在取样,另一名在拿着身份证手工摘抄身份证号到记录簿上,当时想到,一个社区千百个人,这样工作量岂不是很大,于是就动了一个念头,那么,用我的专业知识是否能开发一套线上的系统,帮助他们快速识别身份证信息,然后提供批量操作功能。

系统分析

根据以上背景原因,开始着手分析系统应该具备的功能,通过仔细考虑以后,因为办公地点不同,办公地点线路问题,不能即时为电脑供电,所以没有做实时识别导入功能,当天医护人员可以将拍的照传到电脑上,一键批量导入,方便统计,
在前端主要设计两个页面,一个是导入页面,一个是导入成功以后,将信息显示在页面上,并且提供 选定导出项功能,后端则进行功能模块代码编写。
于是会产生这么几个问题:
1 每个用户同时进行操作的时候,如何保证数据不乱
2 每个用户导入的数据,该放为每个用户建立一张表,存放对应的数据,
3用户频繁请求时,如何避免重复提交等问题
4 系统的效率有多高,每次允许用户传多少张图片合适呢,等等,基于以上问题的分析,我展开了系统的整体和详细设计

系统设计

1 因为服务器是邀请式注册,服务器性能低,承受不住高并发,所以很难去开放式注册,只能面向小众社区,千百号人,如果使用的人多了也不太方便,这个会在下文细说

2 框架 框架还是采用熟悉的springboot+Thymeleaf开发,本系统,一个人经历了全栈开发,从设计到实施再到运维。

3 对于数据库方面,如果给每个用户开辟一张表,对于本系统来说没什么,可是以后遇到这样的业务场景,总不能 都开辟一张表,这样用户的基数庞大了,所以最终让用户插入的信息都插到一张表了,让用户登录的sessionid做隔断,查询的时候根据对应的session_id将用户的信息返回到前端即可。这样还方便定时任务统一将所有的信息清除掉。可谓是一箭多雕啊

4 在后端的配置文件里,更改Tomcat单次可以上传的最大容量,因为face++单次要求的图片为2mb,所以为了最大控制在50张以内,服务器承载的最大容量为100MB,虽然在前端提示是不超过50张,这里没有做图片的数量限制,实际上只要容量不超过100mb即可使用。

5 单节点测试:就是我只用一个用户进行批量测试,看看该接口的效率怎么样,果然免费的是最贵的,如果一次性请求的次数过快,接口就奔溃了,于是我进行了反反复复的测试。主要有以下两种方法:
**牺牲效率:**单次让用户上传的少一点,多上传几次,这样接口不会奔溃。
**牺牲时间:**每执行一次,让线程休眠一定时间,这样就是花费了一定的时间,可以让用户一次性的多上传一点。

在反复的思考下,我觉得本系统的意义就是在于批量上传识别,所以说,牺牲效率的方法不可取,那么选择牺牲时间的方法,那么牺牲时间要牺牲多长时间才合适,才能满足最大效率。于是我又经过大量的测试,开始从100ms,到1000ms之间找最值,当某次设定为600ms的时候,50张执行成功,但是紧接着在试一次失败了,于是,我就又写了一种方法,就是让每执行几次,休息二倍时间,那么执行几次合适,于是我又经过了大量测试,最终定格在让他执行10次,也就是每执行10次,休息1-1.5秒,这样在接口请求的情况下,该服务不容易被熔断。

6 单节点测试通过时,我就开启了多用户并发测试。这里的多用户是三个用户,因为我电脑只有三个浏览器,而且每次要提交50张图片,用其他的接口请求测试工具不太方便,当然可能也有可以批量传文件的,只不过我没发现而已,不测不知道,一测吓一跳,要不说程序开发的生命周期40%是在做测试工作,当进行三个用户测试的时候,服务又奔溃了,我一想,为什么单节点运行的好好地,一到了各自的线程里就会奔溃了,百思不得其解,突然恍然大悟,因为这又回到了那个问题,多线程并发的时候,也是在那一瞬间就对接口进行请求,造成了请求过快,所以奔溃的原因,这里可以有底气的说一句,如果我有钱开通付费服务,根本就不用考虑下边的解决办法,哈哈。有钱就是豪横。

7解决方案,这个方案就是类似于分布式秒杀同一类商品的原理,多线程同时进行抢一个方法,谁抢到谁执行,起初我用的是非公平锁,然后执行的时候,发生了数据混乱,于是又改成了公平锁,当然对这个系统来说也比较友好,谁先来谁用,后来的排队,不能插队。测试通过
8 那么对于前端的用户,怎么能让他们知道提交成功了呢,避免重复提交。
起初我做了一个进度的页面,让他们实时的可以看到进度,可就是因为设计进度的方案,导致系统出现了很多bug,后来虽然进度的功能做出来了,但是我感觉没有必要做那个功能,于是在前端设计了一个提交等待的界面,当点击提交按钮的时候,出现遮罩层,给一个动画,防止用户重复提交,也可以避免同一用户不断提交,每当用户一提交了以后,等到执行结果才可继续提交,这样对多用户在并发的时候比较公平。

Tips:这里锁我用的是Lock锁,而且之前因为没有锁对位置,让每个线程持有了一把锁,所以导致服务又奔溃了,后来突然想到,应该是多线程抢一把锁,所以修正以后系统平稳运行,
不想用锁也可以用数据库来实现,插入一个主键方法,这样别的线程插入的时候就报错,不能执行只能等待了,但是这样得手动去实现等待队列,或者让线程休眠,因为我的识别方法和上面的请求进来没有分离,所以最用还是用了lock锁比较方便,读者以后遇到业务可以考虑一下那个方法。

系统实现:

本地运行平稳以后就要发布,我发布在了我的云服务器上
配置:阿里云ECS服务器(共享型),单核2G 1mb的带宽,不得不说1mb的带宽服务是真慢啊,今天正好阿里云的客服给我打了一个电话,我和他说了一下细节,经过沟通,我升级了几天的2mb带宽,这个速度明细就感觉比之前快了,访问网站以及请求数据变快了。都是金钱惹的祸啊!

正文: springboot项目默认打包方式 jar,而且jar部署也方便,我用了war,一直和服务器有冲突,环境不对,一气之下,我还是选择了jar的方式。下面请看步骤,

因为我 在我的云服务器上8080端口还跑着一个我的静态网页,所以我需要开放一个8081端口用来部署服务,
提示:Tomcat和jar只要端口号不冲突可以同时启动
因为80端口运行这nginx,所以开放一个81端口用来跑http服务,因为springboot项目运行的时候需要由http服务开通,这个bug我也解决了好久。
1 阿里云控制台 开放安全组,开放 8081,81端口,
2 在服务器里开放上述端口,开放步骤请点击此链接:

3 打包部署项目,请点击此链接:
4 如果80端口被占用,需要修改http端口,请点击此链接

5 开启httpd 服务,需要先下载,步骤请点击此链接

所有的服务启动起来以后,可以查看端口号,是否平稳运行,命令:
查看端口运行情况

netstat -ntlp

根据pid 杀掉进程:

kill -9 8640

后边的8640是pid

6 查看启动日志 请点击此链接

部署完毕。然后就可以在系统中通过对应的端口访问系统。

源码获取可以通过 :
1 去我的下载主页 下载,
https://download.csdn.net/download/delete_bug/85526999

2 通过关注公众号,后台回复:身份证识别系统获取

在线批量身份证识别系统相关推荐

  1. 达摩院视觉AI训练营-搭建身份证识别系统-学习笔记

    搭建身份证识别系统目录 一.成为开发者 二.能力调试 三.能力开通 四.创建AccessKey 五.启动开发 参考案例 总结 一.成为开发者 请您使用阿里云账号登录阿里云视觉智能开放平台.如还未持有阿 ...

  2. 【阿里云高校计划】身份证识别系统搭建 day2 【抛砖引玉】

    身份证识别系统搭建 [阿里云高校计划]身份证识别系统搭建 day2 [抛砖引玉] 身份证识别系统搭建 一.项目简介 二.获取视觉智能开放平台提供的SDK 三.项目实现 (一)前端index.html ...

  3. 【阿里云高校计划】实现简单的身份证识别系统!

    实现简单的身份证识别系统: 借助阿里云视觉平台提供的ocr识别能力完成简单的身份证识别系统. (这个系统最终在web前端页面上呈现.) 实现的核心逻辑: 最终的wed端界面效果 项目结构: { App ...

  4. OCR--服务器端身份证识别系统的原理及应用

    服务器端身份证识别系统即部署在服务器中的OCR SDK,私有本地服务器或云服务器均可,APP和业务系统可通过web service接口调用该识别服务,客户在设备端拍摄图像后上传,上传到已部署身份证识别 ...

  5. 又一神器,批量证件识别系统OCR,身份证识别导出EXCEL表格,居住证识别导出EXCEL表格,后期还会有社保卡识别导出EXCE表格,营业执照识别导出EXCEL表格,刚芭蕾加油!!!

    老规矩上图,操作界面很简单,先看一下截面图 一秒钟识别一张,直接出来就是表格数据,前几天有人跟我说需要这样的系统 可以批量导入身份证.社保卡.居住证后期还有工商营业执照批量导入进去然后识别成表格导出来 ...

  6. 【身份证识别】基于matlab GUI形态学二代身份证识别系统【含Matlab源码 947期】

    ⛄一.身份证号码识别简介 1 引言 作为居民身份的象征,身份证是居民身份的唯一标识,它已成为生活中必不可少的证件.在火车站.酒吧等公共场所,流动人口大人员复杂,警察需要对公民的身份证进行核对,排除可疑 ...

  7. 【毕业设计】深度学习身份证识别系统 - 机器视觉 python

    文章目录 0 前言 1 实现方法 1.1 原理 1.1.1 字符定位 1.1.2 字符识别 1.1.3 深度学习算法介绍 1.1.4 模型选择 2 算法流程 3 部分关键代码 4 效果展示 5 最后 ...

  8. 毕业设计 身份证识别系统 - 图像识别 深度学习

    文章目录 0 前言 1 实现方法 1.1 原理 1.1.1 字符定位 1.1.2 字符识别 1.1.3 深度学习算法介绍 1.1.4 模型选择 2 算法流程 3 部分关键代码 4 效果展示 5 最后 ...

  9. 手机扫描身份证识别技术的出现,为移动互联时代普及了实名认证管理

    近几年,为了更好地保障公民的安全和合法权益不受侵犯,越来越多的行业开始进行身份证实名制登记管理,例如公安户籍管理.海关边检.航空安检.银行实名制.证券股票开户.保险.酒店登记.网吧实名制等.同时随着国 ...

  10. Lesson 6.1 身份证识别: 提取字段

    Lesson 6.1 身份证识别: 提取字段 小编最近试试识别身份证上面的文字. 第一步还是图像分割,第一步还是提取文本行,然后提取字段. 看上去,第一个感觉就是所有文字都是黑色的.可以简单过滤一下图 ...

最新文章

  1. virtualbox不能识别u盘等移动设备
  2. 你真会IDEA的调试功能吗?这4个技巧带你起飞!
  3. 文巾解题3. 无重复字符的最长子串
  4. PhoneGap工作原理及需改进的地方(转)
  5. Linux Capabilities 入门教程--进阶实战篇
  6. 你看不懂的spring原理是因为不知道这几个概念
  7. 《零基础看得懂的C++入门教程 》——(10)面向对象
  8. 新浪uc2010官方下载
  9. python读取与写入配置文件
  10. 昆明北大附中2021高考成绩查询入口,昆明高考成绩单:昆明多所高中高考数据来啦!...
  11. 书单|阅读让人越来越低
  12. bp神经网络的训练过程,一文搞定bp神经网络
  13. mac蓝牙键盘工具分享——通过mac键盘给iPhone、iPad打字
  14. ASCII 字母字符 63———127
  15. 苹果手机实现NTU校园网连接自动化
  16. 解决 ArcGIS Server 10.2.2 无法打开http://localhost:6080/arcgis/manager/
  17. 驳少壮不努力,老大搞IT
  18. C语言练习二 :找出一个二维数组的鞍点
  19. 2017.7.4 ACM校内赛 Round 2
  20. Ubuntu18 USB网卡驱动安装踩坑记录

热门文章

  1. 全球压缩毛巾行业调研及趋势分析报告
  2. 小白入门必看——idea中JAVA配置
  3. 油猴GM_download使用及下载扩展名flac,油猴脚本修改下载扩展名
  4. mysql手机号段地区库_最新全国手机号段归属地数据库下载(mysql+xlsx+txt格式)46万条...
  5. IPMP、PMP、ACP、PRINCE2的区别
  6. (CVPR_2021) Center-based 3D Object Detection and Tracking
  7. 离散数学左孝凌版答案
  8. python怎么随机分组_Python|random之随机抽人分组
  9. 服务器主板能插几块硬盘,如何知道自己的主板最大支持多少的硬盘啊
  10. 小七揭密delphi源码免杀系列教程