设为首页 收藏本站
查看: 851|回复: 0

[经验分享] 基于Docker的OCR识别系统的诞生

[复制链接]

尚未签到

发表于 2018-5-27 08:50:59 | 显示全部楼层 |阅读模式
  开发字符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
DSC0000.png

OCR服务框架设计图

  OCR识别系统的优点:
将该Docker服务(基于ubuntu16.0.4,tesseract-ocr 4.00)打包成tar包后,就可以移植到任意linux平台上,包括移植到centos服务器上,移植到低版本的ubuntu上等等,充分发挥Docker容器的移植便利性,使该OCR服务能够非常便利的跨平台使用。
  逐步优化的OCR识别系统:
由于该OCR识别系统比较耗时,我们在多台物理机上部署了若干个OCR识别服务,并进行了负载均衡,以满足勤智的字符识别业务需求,例如:实现了证件照、名片上文字的提取,法院判案中证明材料、裁判文书等字符提取任务,大大降低了对人工的依赖,提升工作效率。


  [1]百度百科Docker介绍

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481621-1-1.html 上篇帖子: 如何实现跨 Docker 主机存储? 下篇帖子: docker安装到使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表