基于Docker的OCR识别系统的诞生

开发字符OCR识系统的原因:

众所周知谷歌开源的tesseract-ocr是一套字符识别系统,其最新版本4.00采用了lstm(Long Short-Term Memory,长短时记忆网络)神经网络进行字符的训练与识别,其支持100多种语言(字符),对于比较标准的印刷体字符,其识别准确率非常高(在我们提供的数据集上,准确率可以达到98%)。

如何进行字符识别系统框架搭建:

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口【1】。

由于tesseract-ocr目前只支持ubuntu系统安装(4.00版本只支持ubuntu 16.0.4以上系统安装),而且安装过程比较复杂、耗时。鉴于此,我们采用ubuntu 16.0.4的Docker镜像,生成Docker容器,然后将tesseract-ocr字符识别服务安装到Docker容器中,最后部署一个flask服务,暴露服务端口,提供给其他业务系统使用。

考虑到Docker容器中的flask服务需要自启动,以及服务可能由于程序异常而造成停止服务的情况,因此,需要在容器中添加自启动程序以及服务监听程序。自启动以及监听程序可以利用linux的定时器crontab命令,添加一条定时任务(每一分钟检测一次),检测程序是否正常运行,当服务不正常时,重启flask服务。在将该容器的服务移植到其他linux服务器(宿主机)后,考虑到服务器可能断电,或者宕机的情况,也需要在宿主机上利用crontab添加一条定时任务,监测Docker容器是否正常运行,如果运行不正常,需要重启该Docker容器。

考虑到该容器移植的便利性,我们利用Docker的commit和save命令,将该容器提交成新的镜像,并将该镜像保存为tar包,部署该OCR应用容器时,只需要将该tar包拷贝到宿主机上,利用Docker的load以及run命令,启动该容器以及自启动容器内的OCR识别服务。

基于Docker的OCR识别系统的整个部署流程的关键操作步骤如下:

提交容器变化到镜像中

docker commit 【containerId】 ocr_images:ocr_api

保存镜像到tar包中

docker save ocr_images:ocr_api > ocr_images.tar

加载OCR服务镜像

docker load < ocr_images.tar

启动OCR服务容器

docker run -t -d -p 0.0.0.0:8000:8000 --name ocr_api ocr_images:ocr_api

OCR服务框架设计图

OCR识别系统的优点:

将该Docker服务(基于ubuntu
16.0.4,tesseract-ocr
4.00)打包成tar包后,就可以移植到任意linux平台上,包括移植到centos服务器上,移植到低版本的ubuntu上等等,充分发挥Docker容器的移植便利性,使该OCR服务能够非常便利的跨平台使用。

逐步优化的OCR识别系统:

由于该OCR识别系统比较耗时,我们在多台物理机上部署了若干个OCR识别服务,并进行了负载均衡,以满足勤智的字符识别业务需求,例如:实现了证件照、名片上文字的提取,法院判案中证明材料、裁判文书等字符提取任务,大大降低了对人工的依赖,提升工作效率。

[1]百度百科Docker介绍

时间: 2024-08-24 14:34:09

基于Docker的OCR识别系统的诞生的相关文章

基于opencv的车牌识别系统

前言 学习了很长一段时间了,需要沉淀下,而最好的办法就是做一个东西来应用学习的东西,同时也是一个学习的过程. 概述     OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算

基于ARM9的指纹识别系统的设计和实现

生物识别技术是利用人体固有的生理特性(如指纹.脸象.红膜等)和行为特征(如笔迹.声音.步态等)来进行个人身份的鉴定. 生物识别技术比传统的身份鉴定方法更具安全.保密和方便性.生物特征识别技术具有不易遗忘.防伪性能好.不易伪造或被盗.随身"携带"和随时随地可用等优点. 生物识别的工作原理是利用生物识别设备对生物特征进行取样,提取其唯一的特征并将其转化成数字代码,并进一步将这些代码组成特征模板,人们同识别设备交互进行身份认证时,识别设备获取其特征并与数据库中的特征模板进行比对,以确定是否匹

基于SPCE061A的指纹识别系统

1 引言 指纹是指手指末端正面皮肤上凸凹不平产生的纹路.尽管指纹只是人体皮肤的一小部分,但是,它蕴涵大量的信息.这些皮肤的纹路在图案.断点和交叉点上是各不相同的,在信息处理中将它们称作"特征",依靠特征的唯一性,就可以把用户同他的指纹对应起来,通过比较输入的指纹特征和预先保存的合法指纹特征,就可以验证用户的真实身份. 以前的各种指纹识别系统属于光学识别系统,由于光不能穿透皮肤表层,所以只能够扫描手指皮肤的表面,或者扫描到死性皮肤层,但不能深入真皮层.在这种情况下,手指表面的干净程度,直

python基于OpenCV的人脸识别系统

想获得所有的代码,请下载(来自我的CSDN): https://download.csdn.net/download/qq_40875849/11292912 主函数: from recognition import recognition from training import training from datasets import datasets from delFile import del_file def main(): facedict = {} cur_path = r'.

车架号识别,Vin码识别,OCR识别,独树旗帜的译图

OCR车架号识别技术 北京译图智讯科技有限公司OCR识别系统,是我们结合多年OCR文字识别经验,针对移动互联网数据采集业务推出的一款专业的OCR SDK,程序适用于iOS与Android两个平台集成,而且全国仅有一家支持服务器端集成,适合各种行业由人工输入方式转化为摄像头OCR识别模式自动扫描录入,可以与各种业务系统.作业流程进行捆绑集成,将企业信息化提高到更高的智能水平. 车架号识别特点 1.逐条采集数据,视频流自动获取最佳帧图像OCR识别,无需点击拍照按钮: 2.可根据客户需求自定义模板OC

基于SVM与人工神经网络的车牌识别系统

最近研究了支持向量机(Support Vector Machine,SVM)和人工神经网络(Artifical Neural Network,ANN)等模式识别理论,结合OpenCV的书:<Mastering OpenCV with Practical Computer Vision Projects>,将两种思想运用到车辆的车牌识别算法中.车辆识别结合了多种图像处理技术,如视频监控.图像检测.图像分割和光学字符识别(OCR)等,在道路交通监控中有着重要的作用.以下内容主要包含几个方面: 车牌

基于docker、kubernetes部署openstack到atomic系统上

声明: 本人阅读笔记,翻译类文章仅作意译.如有不对之处,请指出. 需要更本源的理解,请自行阅读英文. 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 新浪微博:寻觅神迹 内容系本人学习.研究和总结,如有雷同,实属荣幸! 基于docker.kubernetes部署openstack到atomic系统上 openstack的服务定义,是不是看起来很简洁? openstack的实际组件构成,是不是看起来很复杂? 所有的openstack

【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核

篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblogs.com/baiboy/p/wpf1.html 篇三:批量处理后的txt文件入库处理:http://www.cnblogs.com/baiboy/p/wpf2.html 篇四:关于OneNote入库处理以及审核:http://www.cnblogs.com/baiboy/p/wpf3.html [

基于QT和OpenCV的人脸识别系统

1 系统方案设计 1.1 引言 人脸是一个常见而复杂的视觉模式,人脸所反映的视觉信息在人与人的交流和交往中有着重 要的作用和意义,对人脸进行处理和分析在视频监控.出入口控制.视频会议以及人机交互等领 域都有着广泛的应用前景,因此是模式识别和计算机视觉领域持续的研究热点. 本系统在 FriendlyARM Tiny6410 开发板基础上,利用 OpenCV 计算机视觉库和 QT 图形库,通 过普通的 USB 摄像头实现了自动人脸识别,准确率较高,方便易用. 1.2 系统总体架构 "人脸识别&quo