tr - Text Recognition 实现的是OCR的技术
github项目地址:github.com/myhub/tr
项目的简介(主要是从项目的Readme获得):
一款针对扫描文档的离线文本识别SDK,核心代码全部采用C++开发,并提供Python接口
- c++接口支持
- 支持Windows系统
- 添加python2支持
- 去除opencv-python、Pillow依赖,降低部署难度
- 支持多线程
- 支持GPU
Requirements
- Windows 7+/Ubuntu 16.04/Ubuntu 18.04
- python2/python3,需要安装numpy
- Windows系统需要安装
VC_redist.x64.exe
GPU版本安装说明(实践得:cpu速度极慢,建议gpu进行安装)
- 如果对速度有要求,推荐安装GPU版本
要使用GPU版本,复制tr_gpu文件夹里面的文件到tr文件夹
- 注意: 需要先安装
CUDA 10.1
以及cuDNN 7.6.5
安装方式
Docker的安装方式被舍弃我舍弃掉了(有兴趣的可以自行尝试),这里使用setup.py的安装方式
git clone https://github.com/myhub/tr.git
cd ./tr
sudo python setup.py install
测试
python2 demo.py # python2兼容测试
python3 test.py # 可视化测试
python3 test-multi-thread.py # 多线程测试
实战步骤
首先gpu版本需要安装CUDA 10.1以及cuDNN 7.6.5的环境,这里我们采用现成的环境(易学智能平台
),可以免去安装的环境的各种问题,快速的实现项目的搭建,缺点:费钱
易学智能的官网:www.easyaiforum.cn/
1 进入易学智能官网,选择需要的环境,付钱开机
1.1 进入官网
1.2 进入控制台
1.3 选择环境
计费模式:我一般选择的是固定小时数
,不够再追加就行了
GPU型号我们选择1050ti
,2¥/h
,这里我们选择Conda101
,因为这个环境中有cuda10.1和cudnn7.6.5
1.4 点击结算开机
注意几个信息,确认即可开机
1.5 开机后的运行界面
我一般习惯于使用终端
的方式,进行操作,对命令不是很熟悉的小伙伴可以使用远程桌面
的方式
1.6 打开终端,切换到指定环境
我们需要的环境是py37-cuda101,切换命令是
conda activate py37-cuda101
2 下载项目到我们的ubuntu主机中
这里我们github的速度比较慢,我们这里将其拷贝到gitee上,使用gitee的zip的下载方式
2.1将github上的项目克隆到gitee,生成zip的链接
2.2 使用wget的方式,下载到主机中(目前我实战中最快的方式)
2.3 保存完成进入项目
2.3.1 首先解压
unzip xxxx.zip
2.3.2 进入项目完成安装(默认安装CPU,GPU可以直接看3)
sudo python setup.py install
密码的获取在这个地方:
在安装的时候,遇到一个问题,会下载numpy
,但是安装需要python >= 3.7的环境
但是我们的虚拟环境不就是python37+cuda101吗,仔细一看,这个安装的路径有问题,我们的虚拟环境中本来就有numpy,在安装多此一举,去配置文件中将安装numpy的步骤干掉
vim setup.py
找到这个地方直接干掉
删除这三行,保存,再次执行上面的安装语句即可(没有任何的问题了)
安装成功:
3.安装GPU版本
上面的过程(默认)是安装CPU版本,不追求速度的可以直接进行测试了,这个部分是安装GPU
3.1 完成文件的拷贝
cp tr_gpu/lib* tr/
3.2 在完成安装
sudo python setup install
安装完成的效果和上面CPU的安装一样
4.上传图片,完成测试
4.1 上传图片
注意上传到imgs文件夹中
4.2 更改测试文件
将test.py文件中图片路径修改成自己想要测试的数据即可
更改前:
更改后:
4.3 完成测试
python test.py
使用gpu一共花费时间 1.65785s
4.4 查看效果
原始图片
识别结果
5.项目的实践感受
- 对于横向文本的识别率非常的高,特别是实验中的印刷体文本,效果非常的好(
非常好
) - 对于有一定倾斜角度的文本,识别效果较好(
好
) - 对于竖向的文本,识别效果差,可能模型对竖向并不支持