文章目录


前言

注:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文档详细介绍了在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提供了大量能使我们快速便捷地处理数据的函数和方法。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐