光学字符识别(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