标题

《小鑫发现》之深度学习的OCR服务

介绍

偶然发现的一个深度学习框架,PaddlePaddle 飞桨,他是百度开源的一套深度学习框架。相比Tensor,Pytorch,主要是他整个JSON生态,它提供多个工具可以使用,让我们更方便的去了解和使用。
这次只是简单的带来一个计入Paddle-hub发布一个文字识别的ocr,让大家用最少的代码,构建一个ocr服务,感受一下paddle的魅力。
在后续我会慢慢的体验Paddle,总结一套Paddle的实战。

版本和下载

paddljson数据格式epaddle 2.0.0rc1 下载地址
python 3.7

搭建环境

本人是Mac系统所以都选用Mac的环境,另外他可以提供docker也很方便。
《小鑫发现》之深度学习的OCR服务

另外这里记两个源,一个百度 mirror.baiddockerfileu.com/pypi/simple
一个是清华 pypi.tuna.tsinghua.edu.cn/simple

分别执行下列语句,我这里就不在执行效果了,因为我已经安装一遍了,没什么太大问题,很顺利。

$ pip in开源众包stall paddlepaddle==2.0.0rc -i httpDockers://mirror开源软件.baidu.com/pypi/appearancesimple
$ pip install paddlehub==2.0.0rdocker是干什么的c0 -i https://mdocker常用命令irror.baidu.com/pypi/simple
$开源 pip install shapely -i https:apple//pypi.tuna.tsinghua.edu.cn/simple
$ pip indockersstall pyclipper -i https://pypi.tuna.tsinghua.ed开源节流u.cn/simappearanceple

该Module依赖于第三方库shapelyjson、pyclippejson是什么意思r,使用该Module之前,请先安装shapely、pyclipper

接下载就是加载训练的模型,官网提供两个模型,一个是cjson数据格式hinese_ocr_db_cjson格式rnn_serverchinese_ocr_db_crnn_mobile,大家可json以暂时不知道都是啥,可以理解为前者精准高,后者体积小。咱们使用精开源人脸识别系统聚顶科技专业准度高的。
咱们先测试这张图片,下载地址是 https://p3-juejin.byteimg.com/tos-开源众包cn-i-k3u1fbpfcp/c555f23d746a4fdc83118b3d44docker和虚拟机的区别a004d5~tplv-k3u1fbpfcp-zappleidoom-1.image,下载后命名为test_ocr.jpg

《小鑫发现》之深度学习的OCR服务

$ hub run chinese_ocr_db_crnn_mobile --input_path test_ocr.jpg --visualization=True --output_dir='ocr_result'

上面的命令解释一下,他是本地化运行,去检测一张图片里问题,暂时还不是服务化。
另外本次运行的开源节流是什么意思是什么命令和文件都在一个文件夹下,大家自行建立,apple意思命令都在这个文件内执行,图片在这个文件夹里。
–inpappleidut_path 是需要输入的图片
–output_dir 是结果输出的目录,到时候后在当前目录自行创建
–visualization=Trappearue 这个我也没明白,我知道的就是配合上面那个命令使用,能够保存。

APP行截图。

《小鑫发现》之深度学习的OCR服务

命令执行结果,不直观?那就还记得那个输出结果图片吗,直接上图。jsonp

《小鑫发现》之深度学习的OCR服务

个人感觉精度还是挺高的。再试试身份appear证。图片地址 http://ww1.sinaimg.cn/large/8a53ebb9ly1gn147开源软件b5eq4j20n20fe76n.jpg

$ hdockerhubub run chinese_ocr_db_crnn_mobile --input_path test_ocr1.jpg --visualization=True --output_dir='ocr_result'

结果

《小鑫发现》之深度学习的OCR服务

接下来就是构建成一个service服务approve,接口提供出来。

$ hub serving start -m chinese_ocr_db_crnn_server

-m 是加载开源节流是什么意思是什么哪个docker安装部署module,也就是训练模型
-p 是设置端口,默认是APP8866

启动,看上面是提示,大家可要注开源中国意。

《小鑫发现》之深度学习的OCR服务

测试的ocr接口地址是 happearttp://127.0.0.1:8866/predict/chinese_ocr_db_crnnapp安装下载_server,post请求,请求头要有 “Content-type”: “appjson是什么意思lication/json”

这次图片是 http://ww1.sinaimg.cn/large/8a53ebb9ly1gn14laee68j20iw0ck40o.jpg

请求体body,imageDockers里开源节流是图json格式片的base64的地址,以为base64太大,这开源节流里就不粘贴,给一个网站去转换 https://tool.lu/base64image/ ,但是记住,这个不需要转换出来前面的标识,意思就是将data:imagappleide/jpeg;base64,这个开头删掉,只要base64的内容,谨记,不然会有object错误。

{
"images": [
""
]
}

《小鑫发现》之深度学习的OCR服务

{
"msg": "",
"results": [
{
"data": [
{
"confidence": ""docker容器 , // 这个是识别文本结果置信度
"text"开源代码:docker常用命令 "", // 这个是识别到的文本
"text_box_position": [] // 这是文本框在原图中的像素坐标,4开源*2的矩阵,依次表示文本框左下、右下、右上、左上顶点的坐标 如果无识别结果则appeardaappstoreta为[]
}
],
"save_path": "" /appearance/识别结果的保存路径,如不保存图片则save_path为'',咱们这次启动服务没有配置
}
],
"status": "000"
}

总结

整体就是到这里,是不是感觉很简单,当然这是一次入门的尝试,训练模型也是官方提供的,其实可以深入研究之后,自己利用paddlepaddle去构建自己的训练模docker命令型,预测模型,识别模型等。

参考连接

PaddleHub一键识别OCR
PaddlePaddle官网