基于Ubuntu环境使用docker搭建对于中文识别的chineseocr_lite项目

光学字符识别(OCR)

  • 光学字符识别(OCR)目前已经有了很广泛的应用,很多开源项目都会嵌入OCR 来扩展原有的能力,例如身份证识别、出入停车场的车牌识别、拍照翻译等等
  • 本文介绍的开源的中文 OCR 项目,是基于 chineseocr 做出改进,是一个超轻量级的中文字符识别项目(其实一点也不轻量)
  • 官方地址

简介

  • chineseocr_lite 项目表示,相比 chineseocr,它采用了轻量级的主干网络 PSENet,轻量级的 CRNN 模型和行文本方向分类网络 AngleNet
  • chineseocr_lite 在横排文字和竖排文字的识别上都有不错的效果,而且它提供的交互式网页端能直接在页面插入图像与调用识别模型

项目实测

  • 由于Docker能够提供一个不依赖主机操作系统的隔离空间,并且兼具良好的安全性与可移植性,本项目将在Docker环境下对该轻量级模型进行测试
  • 先看看使用作者项目里自带图片的测试效果。识别结果与项目里提供的类似,这里耗时较长主要是由于我们测试时没有使用 GPU 的缘故

Docker环境搭建

运行环境

  • Ubuntu 18.04

  • Python 3.6.9

  • Pytorch 1.5.0.dev20200227+cpu(作者推荐 1.2.0)

命令操作

  • 使用命令查看当前的python的版本,python -V;如果不是3.6版本需要将3.6版本设置为默认版本。参考链接
  • 首先下载 Docker 镜像。这里推荐使用咱们中国人自己做的镜像 deepo,一行代码傻瓜式安装 tensorflow、pytorch、darknet 等目前最新的深度学习框架
  • deepo的官方地址
  • 命令安装deepo,我已经配置了docker的国内源镜像,参考我的其他文章。如果不配置,速度很慢,甚至下载不成功。这一步很费时间,相关下载的内容达到6G左右,下载完成之后自动解压安装,最后达到13G😭😭
docker pull ufoym/deepo
  • 使用命令查看下载的ufoym/deepo的镜像ID,需要拷贝一下,稍后会用到
docker images
  • 拉取完镜像后我们新建一个容器开始配置环境,使用如下命令新建容器并进入交互模式,我这里是将容器的data文件夹映射到Ubuntu系统的home/chy/Desktop/data文件,这个data不需要提前创建
docker run -it -p 6666:8080 -v home/chy/Desktop/data/:/data --name ocr 18824ddf5d2d
  • 这里 docker run 表示创建容器,-it 表示创建容器后立刻进入交互模式,-p 表示进行端口映射,这里将主机 6666 的端口映射到容器的 8080 端口。
  • -v 表示共享数据,我们将主机桌面上名为 data 的文件夹与容器共享,并将其在容器上挂载为/data,--name 表示将新建的容器命名为 ocr,18824ddf5d2d 为刚才下载的uform/deepo镜像的 ID
  • 命令执行完毕,就进入到容器里了,可以看到提示输入变成以用户名和容器拼接的字符串
  • 输入 ls 就可看到我们与容器共享的文件夹/data 了
  • cd 到/data 文件夹下拉取 chineseocr_lite 项目,前提需要git
git clone https://github.com/ouyanghuiyu/chineseocr_lite
  • 作者将项目所需要的运行程序的依赖环境写入到了requirements.txt文档中,我们需要cd 到 chineseocr_lite 下进行安装
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
  • 这里使用清华的源进行加速。依赖环境装好了,使用python3 app.py 8080 命令启动服务
  • 出现以下输出表示网页服务已成功启动

  • 需要注意的是,我们在创建容器时将主机的 6666 端口映射到了容器的 8080 端口,所以在Ubuntu系统的默认火狐浏览器里应该输入 http://127.0.0.1:6666/ocr 出现如下界面

踩坑指南

1,火狐浏览器报This address is restricted

  • 在地址栏里面输入: about:config 然后回车
  • 出现配置页面,在搜索框中输入network.security.ports.banned.override
  • 点击新建,选择string,输入1-65535即可

2,缺少共享文件库,会报以下错误

apt-get update
apt-get install apt-file
apt-file update
apt-file search libSM.so.6
apt-get install libsm6

apt-get install libxrender1
apt install python-qt4 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu环境使用conda安装轻量级中文ocr开源项目chineseocr_lite,最简单的方式

问题 接使用docker的方式来创建项目所报的错误选中文件之后,界面不停的绕圈,显示不了对于图片的识别结果,并且监控界面上出现错误提示如下ImportError: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory&a…

基于Ubuntu使用docker的方式来搭建基于Yolo3+crnn的Chineseocr识别

Docker Docker简单易用,具体的安装和配置可以看我的或者其他人的博客 安装完之后,输入以下命令安装chineseocr并且开启服务 docker pull zergmk2/chineseocr docker run -d -p 8080:8080 zergmk2/chineseocr 在浏览器输入http://127.0.0.1:8080/ocr网…

c/c++ 内存使用指南 和实践指导

如果你完全理解如下内容, 请联系我:szu030606163.com, 讨论更深层次合作 。 1. 大内高手—内存模型 单线程模型 多线程模型 2. 大内高手—栈/堆 backtrace的实现 alloca的实现 可变参数的实现。 malloc/free系列函数简介 new…

mininet 应用实践

教学目的与学时建议 能够运用 mininet 可视化工具创建计算机网络拓扑结构能够运用 mininet 交互界面创建拓扑结构能够运用 python 脚本构建计算机网络拓扑结构建议:2 学时 实验环境 下载并安装虚拟机 VMware workstation;下载虚拟机镜像( S…

实现基于darknet框架实现CTPN版本自然场景文字检测 与CNN+CTCOCR文字识别的ChineseOCR搭建

Github地址 Github源码地址 支持系统:mac/ubuntu python3.6 实现功能 文字检测; 文字识别; 支持GPU/CPU,CPU优化(opencv dnn) docker镜像服务(CPU优化版本) 下载镜像 链接:https://pan.baidu…

在服务器上搭建基于yolo3 与crnn 实现中文自然场景文字检测及识别,GPU版本

Github地址 参考地址作者大人,十分热心,对于我的问题,提供了大量的帮助,使我少走了很多的弯路,在此表示由衷的感谢 注意事项 使用nvidia-smi命令查看cuda的版本,必须是10.1或者10.0,10.2是万万…

算法入门篇 一 时间复杂度

时间复杂度 要求:只要高阶项,不要低阶项常数操作:操作花费的时间和数据量无关,比如数组寻址,直接利用偏移量找到对应元素的位置;非常数操作:比如list(链表);查找元素需要遍历链表&a…

算法入门篇二 认识O(NlogN)的排序

递归 例子引出 使用递归的方法求出数组中的最大值(利用的是栈)求中点的方法改进 mid (left right) / 2 //但是如果left和right的数很大,相加会造成内容溢出 改进为 mid left (right - left) / 2 //(right - left)得到整个的长度&…

算法入门篇三 详解桶排序和整理排序知识 堆的相关操作 补充 不完整

归并排序不使用递归 使用一个变量,使其按照1、2、4、8递增,控制左右两边1个元素、2个元素、4个元素等元素的合并 完全二叉树 完全二叉树 要不全是满的,要不叶子节点出现在最后一层,只要出现了叶子节点,后面的都是叶子…

2023年12月24日学习总结

今日to do list: 做kaggle上面的流量预测项目☠️ 学习时不刷手机🤡 okkkkkkkkkkkkkk 开始👍🍎 0、我在干什么? 我在预测一个名字叫做elborn基站的下行链路流量,用过去29天的数据预测未来10天的数据 1、…

Mac/Linux系统连接远端服务器以及相同IP地址的服务器账号密码重置,ssh失败问题

连接远端服务器 ssh 账号IP地址 输入完成之后会提示输入密码,密码输入正确后,就可以连接成功了 重置ssh密钥 如果连接的服务器除了IP地址没有改变,其余的账号、密码、系统等都变了的话,因为曾经连接过的历史数据会保存到本地&a…

Linux操作系统监视NVIDIA的GPU使用情况

对于GPU相关参数介绍 使用命令周期性查看GPU运行情况最常用的参数是 -n, 后面指定是每多少秒来执行一次命令。监视显存:设置为每 1s 显示一次显存的情况:使用命令ctrlz退出 watch -n 1 nvidia-smi 参数介绍 Fan:显示风扇转速&am…

算法入门篇四 桶排序

桶排序 计数排序(基于统计) 要求数据是有限的,和数据状况有关,比如对于200个人统计他们的年龄分布,这个时候需要申请200个桶,因此对于输入数据的规模有限制,如果输入规模是不定的,…

RTP概述

1.1. RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP&…

算法入门篇五 链表

牛客网 算法入门篇 判断一个链表是否为回文结构 给定一个单链表的头节点head,请判断这个链表是否为回文结构1->2->1,返回为True;1->2->3为False 思路: 1,遍历链表,将所有元素压入栈中,然后再…

实时流媒体编程基于Linux环境开发

一、流媒体简介 随着Internet的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等多媒体格式过渡。目前在网络上传输音频/视频(Audio/Video,简称A/V)等多媒体文件时,基本上只有…

算法入门篇六 二叉树

牛客网 算法入门篇 左程云老师 个人复习,如果侵全,设为私密 二叉树遍历(递归) 先序遍历(中,左,右) 中序遍历(左,中,右) 后序遍历&a…

算法入门篇七 前缀树

牛客网 左程云老师的算法入门课 找二叉树的节点的后继节点 原则 如果节点有右子树,那么后继节点就是右子树的最左边的第一个节点如果节点没有右子树,如果节点是父节点的右孩子,就继续往上找,直到找到一个父节点是沿途节点的父节…

算法入门篇八 贪心算法

牛客网 左程云老师的算法入门课 贪心算法 贪心算法的解题步骤 例子 题目要求 解题策略 按照结束时间早的会议先安排,比如先安排【2,4】,当4结束了,所有开始时间小于4的全部淘汰,【1,7】、【3&#xff…

算法入门篇九 暴力递归

牛客网 左程云老师的算法入门课 暴力递归 原则 汉诺塔问题 问题 打印n层汉诺塔从左边移动到最右边的过程 思想 一共六个过程,左到右、左到中,中到左,中到右,右到左,右到中,互相嵌套使用 左到右 将1…