PaddleOCR填坑记

写在前面:PaddleOCR是百度家出的深度学习based字符识别开源项目。为什么选PaddleOCR呢?在定调之前看过好多其他的开源项目,最初是找开源的CRNN实现,找到了pytorchOCR,并花时间学了一下基本的DL概念。再后来才发现转C++是如此的困难。既然生产难以实现,那对于我来说,实验室的结果再好也无法投入生产,也就没有意义(对于我的项目来说)。群里的大佬指了条明路,才开始了漫漫PaddleOCR挖坑之路。ps:群里的氛围还是不错的,特别对于我这种dl小白。下面就记录一下这段时间的成果吧!

PaddlePaddle是一系列开发组件,每一个组件都提供了训练部署一条龙全流程的服务。PaddleOCR独立出来,是一个单独的repo。而PaddleX为整个深度学习提供了全流程服务。值得注意的是,Paddle与Pytorch是并列关系,都是深度学习框架,Paddle和Pytorch很像,所以基本能做到无缝切换(听说是)。

为什么要部署(deploy)?

开发环境和生产环境有很大不同,硬件设备上来说,开发电脑的配置高级显卡,而出货电脑就没必要那么高级,能用就行,所以这就要求我们训练好的模型能在出货的电脑上跑起来,牺牲部分精度保证速度。(这个看具体需求,比如医疗影像,是绝对不能牺牲精度的)综上,理由一,**生产电脑性能差。**理由二,python不适合用于生产环境,说白了还是考虑运行速度,尤其是工业环境,用C++/C#的多,python依赖太多,不合适。这是目前我认识到的,欢迎补充。当然如果就是开发类似PaddleX GUI的开发深度学习的软件,那就可以考虑直接用python环境了。目前GUI还没开源,官方说是基于PaddleX API开发的,研究一下应该自己也能做。貌似是pyinstaller打包的。

有哪几种方式?

Linux的ubuntu 1804下官方提供的那几种都可以用:
PaddleOCR填坑记_第1张图片
附上链接
然鹅遗憾的是我是Windows,出货电脑也是Windows,每每此时此刻,都不禁让人怀疑,是不是全世界只有我一个人在用Windows.
来谈一谈我尝试过在Windows上成功的吧:

基于PaddleHub Serving的服务部署

PaddleOCR填坑记_第2张图片
这种方式相当于本地搭一个服务器,然后通过客户端上传数据并接收返回结果。可以参考公开项目,需要注意的是,下载最新版PaddleOCR的源码,以及Shapely的安装(删除源码中requirements中的shapely,具体参考这里。公开项目在Ai Studio上运行的,但是总是会卡在服务器启动那一步,群里没人解答,我在本地Linux上跑通了。所以。。无所谓了。

服务器端C++预测

PaddleOCR填坑记_第3张图片
具体操作可以参考这篇博客和官方文档。
需要注意的是,在VS 2019中编辑CMakeLists.txt的配置文件,要在x64-Release下进行,Debug下会报错:
PaddleOCR填坑记_第4张图片
PaddleOCR填坑记_第5张图片
如果出现了以下这种错误:

‘/paddle/lib/paddle_inference.lib’, needed by ‘ocr_system.exe’, missing and no known rule to…
PaddleOCR填坑记_第6张图片

关掉相关json配置文件,关掉CMakeLists,重新加载即可。

在VS中生成CMakeLists并不会生成对应的sln文件(可能是我不会用),如果需要sln文件,找到CMake GUI,如下:
PaddleOCR填坑记_第7张图片
CMake相关可以参考这里。
结果如下:
PaddleOCR填坑记_第8张图片
如果出现了下面这种裁边的问题:
PaddleOCR填坑记_第9张图片
修改后处理的unclip调大:
PaddleOCR填坑记_第10张图片
改成3之后的效果:
PaddleOCR填坑记_第11张图片
参数介绍:
在这里插入图片描述
以上。
ps:python打包参考.

你可能感兴趣的:(Python,OCR,python,深度学习,ocr)