【百度飞桨OCR模型打标、训练、预测、部署全流程基本教程】
注:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文档详细介绍了在Windows环境下,使用飞桨OCR进行数据标注、模型二次训练、服务部署的全过程。包括创建虚拟环境、安装依赖、下载官方模型、使用PPOCRLabel进行数据打标、训练文本检测与识别模型、模型评估,以及在Linux下基于PDServing部署识别服务。此外,还提供了基于Sanic构建的解析服务示例
文章目录
前言
注:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文档详细介绍了在Windows环境下,使用飞桨OCR进行数据标注、模型二次训练、服务部署的全过程。包括创建虚拟环境、安装依赖、下载官方模型、使用PPOCRLabel进行数据打标、训练文本检测与识别模型、模型评估,以及在Linux下基于PDServing部署识别服务。此外,还提供了基于Sanic构建的解析服务示例代码。
一、环境准备
飞桨OCR模型官网:开始使用_飞桨-源于产业实践的开源深度学习平台
飞桨OCR版本:PP-OCRv3(版本不限于v3还包括PP-OCRv2以及最新的PP-OCRv4,使用原理类似)本教程以PP-OCRv3为例(具体版本为2.4官网地址可参考最新版本)。
飞桨OCR官方标注工具的使用文档:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.4/PPOCRLabel/README_ch.md
飞桨OCR官方给的一些训练和预测数据集:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.4/doc/doc_ch/datasets.md
二、使用步骤
1.搭建本地环境
1.1、从github拉取飞桨OCR的全量代码到本地,调试和开发都能用到(需要梯子请移步自行百度)
【推荐】git clone https://github.com/PaddlePaddle/PaddleOCR
如果没有梯子则从码云托管上进行下载。
git clone https://gitee.com/paddlepaddle/PaddleOCR
1.2、创建容器环境(用于管理多python版本之间的管理,这里以Anaconda为例)
-
首先到Anaconda官网下载Anaconda | Built to Advance Open Source AI,并安装配置环境变量(具体教程请移步百度)
-
打开终端输入以下命令:conda create --name 环境名 --file 环境配置文件.txt。环境名为自己定义的名字。配置文件名替换为你准备好的所包含软件包以及版本信息的文件。回车执行命令等待环境初始化并创建
-
查看当前已经安装的环境:conda info -envs 或者 conda env list
-
激活进入当前创建的环境:activate 环境名
-
在虚拟环境中安装依赖:pip install .由于飞桨内部维护的依赖不足所以最啊自己创建指定依赖安装,创建新的依赖文件newrequirements.txt,并拷贝以下内容保存。
aiofiles==0.8.0 astor==0.8.1 Babel==2.9.1 backports.entry-points-selectable==1.1.1 bce-python-sdk==0.8.64 cachetools==5.0.0 certifi==2021.10.8 cffi==1.15.0 cfgv==3.3.1 chardet==4.0.0 charset-normalizer==2.0.9 click==7.1.2 colorama==0.4.4 colorlog==6.6.0 cryptography==36.0.1 cssselect==1.1.0 cssutils==2.3.0 cycler==0.11.0 Cython==0.29.26 decorator==5.1.0 dill==0.3.4 distlib==0.3.4 easydict==1.9 et-xmlfile==1.1.0 fasttext==0.9.1 filelock==3.4.2 flake8==4.0.1 Flask==1.1.4 Flask-Babel==2.0.0 fonttools==4.28.5 func-timeout==4.3.5 future==0.18.2 grpcio==1.33.2 grpcio-tools==1.33.2 h5py==3.6.0 httptools==0.3.0 identify==2.4.0 idna==3.3 imageio==2.13.5 imgaug==0.4.0 iopath==0.1.9 itsdangerous==1.1.0 jieba==0.42.1 Jinja2==2.11.3 joblib==1.1.0 kiwisolver==1.3.2 layoutparser==0.3.2 lmdb==1.2.1 lxml==4.7.1 MarkupSafe==1.1.1 matplotlib==3.5.1 mccabe==0.6.1 multidict==5.2.0 multiprocess==0.70.12.2 networkx==2.6.3 nodeenv==1.6.0 numpy==1.19.3 onnx==1.9.0 opencv-contrib-python==4.4.0.46 opencv-python==4.2.0.32 openpyxl==3.0.9 packaging==21.3 paddle-serving-server==0.5.0 paddle-serving-server-gpu @ file:///D:/aeas/PaddleOCR/paddle_serving_server_gpu-0.7.0.post102-py3-none-any.whl paddle2onnx==0.9.0 paddlehub==2.2.0 paddlenlp==2.2.2 paddleocr==2.3.0.2 paddlepaddle==2.2.1 pandas==1.3.5 pdf2image==1.16.0 pdfminer.six==20211012 pdfplumber==0.6.0 Pillow==8.4.0 platformdirs==2.4.1 portalocker==2.3.2 pre-commit==2.16.0 premailer==3.10.0 protobuf==3.19.1 pybind11==2.8.1 pyclipper==1.3.0.post2 pycodestyle==2.8.0 pycparser==2.21 pycryptodome==3.12.0 pyflakes==2.4.0 pyparsing==3.0.6 PyQt5==5.15.6 PyQt5-Qt5==5.15.2 PyQt5-sip==12.9.0 python-dateutil==2.8.2 python-Levenshtein==0.12.2 pytz==2021.3 PyWavelets==1.2.0 pywin32==303 PyYAML==6.0 pyzmq==22.3.0 rarfile==4.0 requests==2.26.0 sanic==21.12.0 sanic-routing==0.7.2 scikit-image==0.19.1 scikit-learn==1.0.2 scipy==1.7.3 sentencepiece==0.1.92 seqeval==1.2.2 Shapely==1.8.0 shellcheck-py==0.8.0.3 six==1.16.0 threadpoolctl==3.0.0 tifffile==2021.11.2 toml==0.10.2 tqdm==4.62.3 typing_extensions==4.0.1 urllib3==1.26.7 virtualenv==20.10.0 visualdl==2.2.2 Wand==0.6.7 websockets==10.1 Werkzeug==1.0.1
1.3、下载训练所需要的官方模型,用于二次训练以及预测和部署
模型下载地址:飞桨AI Studio星河社区-人工智能学习与实训社区,以PP-OCRv3为例,下载中文训练模型。
文本检测训练模型
文本识别训练模型
文本方向训练模型

在 PaddleOCR 目录中创建一个文件夹,命名为 inference 并进入该目录,将下载的模型压缩包都拷贝进来,并且解压命令如下:
tar xf ch_PP-OCRv3_det_infer.tar
tar xf ch_PP-OCRv3_rec_infer.tar
tar xf ch_ppocr_mobile_v3.0_cls_infer.tar
2.打标
2.1、原始数据准备(以下示例)
这里以CAD图纸图片数据为例,提前下载好所有需要打标的数据,单个文件夹内数据较多时,推荐每500张图像为一个分组,注意名字中不能存在中文字符。目录名示例 train0-499。
2.1、标注工具准备
第一步中部署好的环境进入 PPOCRLabel 目录
cd ./PPOCRLabel/
编辑PPOCRLabel 下的 PPOCRLabel.py 文件,修改内容如下:
1、将159行的 self.autoSaveNum = 5 改为 self.autoSaveNum = 1,目的是设置打标工具每完成一个打标时便自动保存标注
2、将1893行的 if self.noLabelText == shape.label or result[1][0] == shape.label: 改为以下代码,目的是防止闪退
if len(result) < 2:
print('没有识别到数据')
if self.noLabelText == shape.label or (len(result) > 2 and result[1][0] == shape.label):
保存文件,并且执行文件启动打标工具
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
更多推荐


所有评论(0)