基于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…

使用百度大脑,导入aip以及相应的库文件报错问题

参考文章 github链接地址 具体操作 pip install githttps://github.com/Baidu-AIP/python-sdk.gitmasterfrom aip import 对应服务即可

一个通用的makefile写法,自动推导文件的依赖关系

温习之用。 假设有两个头文件目录 header1,header2;两个cpp文件目录,src1,src2,一个lib目录 写一个完整的makefile步骤如下: 1 定义可执行文件的名称 TARGET MyPro 2 指定此编译工程所要使用的头文件所在的目录 INC -I. -Iheader1 -Iheader2 3 指…

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

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

50个c/c++源代码网站

C/C是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议&#xff…

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

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

python TypeError can only concatenate tuple not str to tuple

原因分析 这个错误出现是因为执行元组之间的合并例子 tuple1 ("str",1,["a","b","c"],4) tuple2 ("hello",) print(tuple1[0]) print (tuple1[1:3]) print (tuple1[1:]) print (tuple2 * 2) print (tuple1tuple2) 注意事…

23种设计模式 -比喻

1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory (下载源码就到源码网:…

python 版本2和3 在/取模方面的的差异

注意事项 python2 使用 /python3 使用 // 例子 二分法取数值 def binary_search(search_list,target):left 0right len(search_list) - 1while left < right:mid (left right) // 2if search_list[mid] < target:left mid 1continueif search_list[mid] target:r…

vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess

三个SDK函数: WinExec&#xff0c;ShellExecute &#xff0c;CreateProcess可以实现调用其他程序的要求&#xff0c;其中以WinExec最为简单&#xff0c;ShellExecute比WinExec灵活一些&#xff0c;CreateProcess最为复杂。WinExec 两个参数&#xff0c;前一个指定路径&#xf…

算法入门篇 一 时间复杂度

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

遍历文件夹下所有文件和文件夹

1 void find(char * lpPath){char szFind[MAX_PATH];WIN32_FIND_DATA FindFileData;strcpy(szFind,lpPath);strcat(szFind,"*.*");HANDLEhFind::FindFirstFile(szFind,&FindFileData);if(INVALID_HANDLE_VALUE hFind)  return;while(TRUE){if(FindFileData.dw…

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

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

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

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

C++著名程序库

1、C各大有名库的介绍——C标准库标准库中提供了C程序的基本设施。虽然C标准库随着C标准折腾了许多年&#xff0c;直到标准的出台才正式定型&#xff0c;但是在标准库的实现上却很令人欣慰得看到多种实现&#xff0c;并且已被实践证明为有工业级别强度的佳作。 1.1、Dinkumware…

2023年12月24日学习总结

今日to do list&#xff1a; 做kaggle上面的流量预测项目☠️ 学习时不刷手机&#x1f921; okkkkkkkkkkkkkk 开始&#x1f44d;&#x1f34e; 0、我在干什么&#xff1f; 我在预测一个名字叫做elborn基站的下行链路流量&#xff0c;用过去29天的数据预测未来10天的数据 1、…

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

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