OCR开源项目
转发自https://www.toutiao.com/a6802032805313249806/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1×tamp=1584238304&app=news_article&utm_source=weixin&
utm_medium=toutiao_android&req_id=202003151011440101300361421C7DB985&group_id=6802032805313249806
实测超轻量中文OCR开源项目,总模型仅17M
想要试试中文 OCR?这个项目可以考虑,轻量模型,不需要 GPU 也能跑得动。
光学字符识别(OCR)现在已经有很广泛的应用了,很多开源项目都会嵌入已有的 OCR 项目来扩展能力,例如 12306 开源抢票软件,它就会调用其它开源 OCR 服务来识别验证码。很多流行的开源项目,其背后或多或少都会出现 OCR 的身影。
如果要说到中文 OCR,像身份证识别、火车票识别都是常规操作,它也可以实现更炫酷的功能,例如翻译笔在书本上滑动一行,自动获取完整的图像,并识别与翻译中文。
目前比较常用的中文 OCR 开源项目是 chineseocr,它基于 YOLO V3 与 CRNN 实现中文自然场景文字检测及识别,目前该项目已经有 2.5K 的 Star 量。而本文介绍的是另一个新 开源的中文 OCR 项目,它基于 chineseocr 做出改进,是一个超轻量级的中文字符识别项目。
项目地址:https://github.com/ouyanghuiyu/chineseocr_lite
该 chineseocr_lite 项目表示,相比 chineseocr,它采用了轻量级的主干网络 PSENet,轻量级的 CRNN 模型和行文本方向分类网络 AngleNet。尽管要实现多种能力,但 chineseocr_lite 总体模型只有 17M。
目前 chineseocr_lite 支持任意方向文字检测,在识别时会自动判断行文本方向。我们可以先看看项目作者给出的效果示例:
可以看到,chineseocr_lite 在横排文字和竖排文字的识别上都有不错的效果,而且它提供的交互式网页端能直接在页面插入图像与调用识别模型。为了进一步挖掘该轻量级模型的效果,机器之心也上手测试了一番。
项目实测
由于Docker能够提供一个不依赖主机操作系统的隔离空间,并且兼具良好的安全性与可移植性,我们决定在Docker下对该轻量级模型进行测试。至于测试过程中的环境配置与采坑过程,后文会一一道来。
先看看使用作者项目里自带图片的测试效果。识别结果与项目里提供的类似,这里耗时较长主要是由于我们测试时没有使用 GPU 的缘故。
下面我们找一些其它图片来测试一下它的效果。
可以看到该模型对于常规印刷字体的识别效果还是很好的。接下来我们决定找一个书法图片为难一下它,竟然一个也没有识别对?不过对于这样一个主打超轻量,总模型大小不超过 20M 的 OCR 项目来说,还要啥自行车。
Docker 环境搭建
我们的运行环境
- Ubuntu 18.04
- Python 3.6.9
- Pytorch 1.5.0.dev20200227+cpu(作者推荐 1.2.0)
首先下载 Docker 镜像。这里推荐使用咱们中国人自己做的镜像 deepo,一行代码傻瓜式安装 tensorflow、pytorch、darknet 等目前最新的深度学习框架。
deepo 链接:https://hub.docker.com/r/ufoym/deepo
当安装好 Docker 后,用以下代码获取包含所有深度学习框架的镜像:
docker pull ufoym/deepo
在这里我们使用猪厂提供的国内源来加速下载:
docker pull hub-mirror.c.163.com/ufoym/deepo
在高校的小伙伴推荐使用如下中科大的源,尽享丝般顺滑,10M/s 不是梦!
docker pull docker.mirrors.ustc.edu.cn/ufoym/deepo
拉取完镜像后我们新建一个容器开始配置环境,使用如下命令新建容器并进入交互模式:
docker run -it -p 6666:8080 -v ~/Desktop/data/:/data --name ocr 18824ddf5d2d
这里 docker run 表示创建容器,-it 表示创建容器后立刻进入交互模式,-p 表示进行端口映射,这里我们将主机 6666 的端口映射到容器的 8080 端口。
-v 表示共享数据,我们将主机桌面上名为 data 的文件夹与容器共享,并将其在容器上挂载为/data,--name 表示将新建的容器命名为 ocr,18824ddf5d2d 为刚才下载镜像的 ID,可使用 docker images 命令进行查看。
现在我们就进入到容器里了,输入 ls 就可看到我们与容器共享的文件夹/data 了。
cd 到/data 文件夹下拉取 chineseocr_lite 项目:
git clone https://github.com/ouyanghuiyu/chineseocr_lite
作者很 nice 得提供了运行程序的依赖环境,cd 到 chineseocr_lite 下进行安装:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
这里我们使用了清华的源进行加速。依赖环境装好了,python3 app.py 8080 走起!出现以下输出表示网页服务已成功启动。
需要注意的是,我们在创建容器时将主机的 6666 端口映射到了容器的 8080 端口,所以在浏览器里我们应该输入 http://127.0.0.1:6666/ocr (http://127.0.0.1:8080/ocr),出现如下界面:
踩坑指南
机器之心也将测试这个项目过程中踩过的坑记录了下来,避免各位对这个项目感兴趣的小伙伴中同样的招。当在容器里安装好 requirement 就万事大吉了吗?不存在的,电脑表示不出错是不可能的,这辈子都不可能不报错。直接运行后出现如下错误:
原因是缺少共享文件库,使用如下方法解决:
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 安装之。进行这样一番操作之后,就可以顺利运行了。完结撒花~
Docker 配置参考教程:https://zhuanlan.zhihu.com/p/64493662
OCR开源项目的更多相关文章
- 百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。
百度为何开源深度机器学习平台? 有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举. 5月20日,百度在github上开源了其 ...
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...
- 开源项目大全 >> ...
http://www.isenhao.com/xueke/jisuanji/kaiyuan.php 监控系统-Nagios 网络流量监测图形分析工具-Cacti 分布式系统监视-zabbix 系统 ...
- 59.Android开源项目及库 (转)
转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_so ...
- iOS及Mac开源项目和学习资料【超级全面】
UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...
- 值得学习的C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...
- C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- iOS开发--iOS及Mac开源项目和学习资料
文/零距离仰望星空(简书作者)原文链接:http://www.jianshu.com/p/f6cdbc8192ba著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 原文出处:codecl ...
- iOS、mac开源项目及库汇总
原文地址:http://blog.csdn.net/qq_26359763/article/details/51076499 iOS每日一记------------之 中级完美大整理 iOS.m ...
- Android开源项目及库搜集
TimLiu-Android 自己总结的Android开源项目及库. github排名 https://github.com/trending,github搜索:https://github.com/ ...
随机推荐
- PXE自动安装linux系统
一.PXE自动安装Linux系统的大致流程 1.环境准备 2.安装所需的必要软件包并开启对应的服务 3.准备安装源 4.准备自动应答文件,并放到可以被访问到的地方 5.配置DHCP服务并启动 6.将必 ...
- python获取上周的起始日期
import datetime def get_date_of_last_week(form='%Y-%m-%d'): """ 获取上周开始结束日期 :param for ...
- JavaScript 静态方法
JavaScript 静态方法 静态方法是使用 static 关键字修饰的方法,又叫类方法,属于类的,但不属于对象,在实例化对象之前可以通过 类名.方法名 调用静态方法. 静态方法不能在对象上调用,只 ...
- 【windows】bat脚本、批处理文件
::当前盘符 @echo current pan : %~d0 ::当前路径 @echo current path : %cd%\ ::当前bat文件路径 @echo the bat's path : ...
- 使用yum快速安装mysql-5.7(用于测试)
1)CentOS 7 下安装 MySQL 5.7 下载并安装MySQL官方的 Yum Repository [wget -i -c http://dev.mysql.com/get/mysql57-c ...
- 微服务笔记之Euraka(2)
Eureka Server启动过程 入口:SpringCloud充分利用了SpringBoot的自动装配的特点 Eureka-server的jar包,发现在MERA-INF下面有配置文件spring. ...
- 使用fopen,fscanf等函数报安全性问题的错误,unsafe...
方法一:项目-属性-C/C++-预处理器定义,添加_CRT_SECURE_NO_WARNINGS. 方法二:使用fopen_s,fscanf_s等安全函数.
- JavaScript&TypeScript学习总结
目录 一.JavaScript学习总结 1.什么是JavaScript 2.变量 3.变量命名 4.操作符 5.遍历语句 6.函数 7.对象 8.数组 二.TypeScript学习总结 1.什么是Ty ...
- windows 系统进行升级之后,如何删除 Windows.old 文件夹。
首先用鼠标右键点击 C 盘,在弹出的下拉列表里找到"属性"并点击它. 步骤阅读 2 在打开的 C 盘属性里的常规找到"磁盘清理",点击它打开. 步骤阅读 3 这 ...
- 2.4 OpenEuler中C语言中的函数调用测试
2.4 OpenEuler中C语言中的函数调用测试 任务详情 在X86_64架构下实践2.4中的内容 通过GDB查看寄存器的内容,把教材中的图填入具体的值 把2.4的C代码在OpenEuler中重新实 ...