likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 58

标题

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

介绍

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

版本和下载

paddlepaddle 2.0.0rc1 下载地址 python 3.7

搭建环境

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

另外这里记两个源,一个百度 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

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

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

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

执行截图。

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

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

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

个人感觉精度还是挺高的。再试试身份证。图片地址 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'

结果

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

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

$ hub serving start -m chinese_ocr_db_crnn_server

-m 是加载哪个module,也就是训练模型 -p 是设置端口,默认是8866

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

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

测试的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": [
        ""
    ]
}

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

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

总结

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

参考连接

PaddleHub一键识别OCR PaddlePaddle官网

转载自:https://juejin.cn/post/6921969950944919560
评论
请登录