《小鑫发现》之深度学习的OCR服务
标题
《小鑫发现》之深度学习的OCR服务
介绍
偶然发现的一个深度学习框架,PaddlePaddle 飞桨,他是百度开源的一套深度学习框架。相比Tensor,Pytorch,主要是他整个生态,它提供多个工具可以使用,让我们更方便的去了解和使用。 这次只是简单的带来一个计入Paddle-hub发布一个文字识别的ocr,让大家用最少的代码,构建一个ocr服务,感受一下paddle的魅力。 在后续我会慢慢的体验Paddle,总结一套Paddle的实战。
版本和下载
paddlepaddle 2.0.0rc1 下载地址 python 3.7
搭建环境
本人是Mac系统所以都选用Mac的环境,另外他可以提供docker也很方便。
另外这里记两个源,一个百度 mirror.baidu.com/pypi/simple 一个是清华 pypi.tuna.tsinghua.edu.cn/simple
分别执行下列语句,我这里就不在执行效果了,因为我已经安装一遍了,没什么太大问题,很顺利。
$ pip install paddlepaddle==2.0.0rc -i https://mirror.baidu.com/pypi/simple
$ pip install paddlehub==2.0.0rc0 -i https://mirror.baidu.com/pypi/simple
$ pip install shapely -i https://pypi.tuna.tsinghua.edu.cn/simple
$ pip install pyclipper -i https://pypi.tuna.tsinghua.edu.cn/simple
该Module依赖于第三方库shapely、pyclipper,使用该Module之前,请先安装shapely、pyclipper
$ hub run chinese_ocr_db_crnn_mobile --input_path test_ocr.jpg --visualization=True --output_dir='ocr_result'
上面的命令解释一下,他是本地化运行,去检测一张图片里问题,暂时还不是服务化。 另外本次运行的命令和文件都在一个文件夹下,大家自行建立,意思命令都在这个文件内执行,图片在这个文件夹里。 --input_path 是需要输入的图片 --output_dir 是结果输出的目录,到时候后在当前目录自行创建 --visualization=True 这个我也没明白,我知道的就是配合上面那个命令使用,能够保存。
执行截图。
命令执行结果,不直观?那就还记得那个输出结果图片吗,直接上图。
个人感觉精度还是挺高的。再试试身份证。图片地址 http://ww1.sinaimg.cn/large/8a53ebb9ly1gn147b5eq4j20n20fe76n.jpg
$ hub run chinese_ocr_db_crnn_mobile --input_path test_ocr1.jpg --visualization=True --output_dir='ocr_result'
结果
接下来就是构建成一个service服务,接口提供出来。
$ hub serving start -m chinese_ocr_db_crnn_server
-m 是加载哪个module,也就是训练模型 -p 是设置端口,默认是8866
启动,看上面是提示,大家可要注意。
测试的ocr接口地址是 http://127.0.0.1:8866/predict/chinese_ocr_db_crnn_server
,post请求,请求头要有 "Content-type": "application/json"
这次图片是 http://ww1.sinaimg.cn/large/8a53ebb9ly1gn14laee68j20iw0ck40o.jpg
请求体body,images里是图片的base64的地址,以为base64太大,这里就不粘贴,给一个网站去转换 https://tool.lu/base64image/
,但是记住,这个不需要转换出来前面的标识,意思就是将data:image/jpeg;base64,
这个开头删掉,只要base64的内容,谨记,不然会有object错误。
{
"images": [
""
]
}
{
"msg": "",
"results": [
{
"data": [
{
"confidence": "" , // 这个是识别文本结果置信度
"text": "", // 这个是识别到的文本
"text_box_position": [] // 这是文本框在原图中的像素坐标,4*2的矩阵,依次表示文本框左下、右下、右上、左上顶点的坐标 如果无识别结果则data为[]
}
],
"save_path": "" //识别结果的保存路径,如不保存图片则save_path为'',咱们这次启动服务没有配置
}
],
"status": "000"
}
总结
整体就是到这里,是不是感觉很简单,当然这是一次入门的尝试,训练模型也是官方提供的,其实可以深入研究之后,自己利用paddlepaddle去构建自己的训练模型,预测模型,识别模型等。
参考连接
转载自:https://juejin.cn/post/6921969950944919560