要点:

  • 使用paddleserving服务

1 首先需要安装PaddleServing部署相关的环境

PaddleServing是PaddlePaddle推出的一种高性能、易扩展、高可用的机器学习服务框架。PaddleOCR中使用PaddleServing主要是为了将训练好的OCR模型部署到线上环境,提供API服务,从而方便用户使用。PaddleServing还提供了一些高级特性,比如多模型融合、负载均衡等,可以帮助用户构建更加完整的机器学习服务系统。

!python -m pip install paddle-serving-server-gpu
!python -m pip install paddle_serving_client
!python -m pip install paddle-serving-app
  • 第一行代码安装 paddle-serving-server-gpu 包,用于启动 PaddleServing 的服务端,并支持 GPU 加速。
  • 第二行代码安装 paddle_serving_client 包,用于通过 API 调用 PaddleServing 的服务端提供的预测服务
  • 第三行代码安装 paddle-serving-app 包,提供了一些 PaddleServing 相关的工具和应用,例如模型转换、模型压缩等。

转化检测模型为serving格式

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python -m paddle_serving_client.convert --dirname ../../inference/det_ppocrv3/Student/  \
                                         --model_filename inference.pdmodel          \
                                         --params_filename inference.pdiparams       \
                                         --serving_server ./ppocr_det_v3_serving/ \
                                         --serving_client ./ppocr_det_v3_client/

这段代码是将 PaddleOCR 检测模型的参数文件和模型文件转换为 PaddleServing 使用的格式并保存在指定的目录中,然后可以使用指定的配置文件部署以进行推理服务。

  • %cd /home/aistudio/PaddleOCR/deploy/pdserving/: 切换到 PaddleOCR 代码库中的 PaddleServing 部分的目录中。
  • --dirname ../../inference/det_ppocrv3/Student/: 参数文件和模型文件所在的目录。
  • --model_filename inference.pdmodel: 转换后的模型文件名称。
  • --params_filename inference.pdiparams: 转换后的参数文件名称。
  • --serving_server ./ppocr_det_v3_serving/: serving_server参数指定用于运行检测模型服务的 PaddleServing 配置的目录位置。在这种情况下,指定的位置是./ppocr_det_v3_serving/
  • --serving_client ./ppocr_det_v3_client/: serving_client参数指定 PaddleServing 客户端的目录位置,用于在服务期间调用检测模型。在这种情况下,指定的位置是./ppocr_det_v3_client/。

转化识别模型为serving格式

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python -m paddle_serving_client.convert --dirname ../../inference/rec_ppocrv3/Student \
                                         --model_filename inference.pdmodel          \
                                         --params_filename inference.pdiparams       \
                                         --serving_server ./ppocr_rec_v3_serving/ \
                                         --serving_client ./ppocr_rec_v3_client/

4 启动服务端 

修改后处理代码,首先可以将后处理代码加入到web_service.py中,具体修改154-155行

# 代码154-155行修改为下面代码
def _postprocess(rec_res):
    keys = ["型号", "厂家", "版本号", "检定校准分类", "计量器具编号", "烟尘流量",
            "累积体积", "烟气温度", "动压", "静压", "时间", "试验台编号", "预测流速",
            "全压", "烟温", "流速", "工况流量", "标杆流量", "烟尘直读嘴", "烟尘采样嘴",
            "大气压", "计前温度", "计前压力", "干球温度", "湿球温度", "流量", "含湿量"]
    key_value = []
    if len(rec_res) > 1:
        for i in range(len(rec_res) - 1):
            rec_str, _ = rec_res[i]
            for key in keys:
                if rec_str in key:
                    key_value.append([rec_str, rec_res[i + 1][0]])
                    break
    return key_value
key_value = _postprocess(rec_list)
res = {"result": str(key_value)}
# res = {"result": str(result_list)}

 

4.1 启动服务

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python web_service.py 2>&1 >log.txt

4.2 客户端发送请求

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python pipeline_http_client.py --image_dir ../../train_data/icdar2015/text_localization/test/142.jpg
  • 执行pipeline_http_client.py命令,将图片路径传入进行识别

在这个过程中,使用了PaddleServing的HTTP API进行图片的传输和识别,pipeline_http_client.py文件是一个Python脚本,用于向PaddleServing发送HTTP请求并获取识别结果。该脚本将输入的图片读取并编码成base64格式,然后将编码后的字符串作为HTTP请求的参数发送给PaddleServing。PaddleServing将接收到的图片解码后送入PaddleOCR中的检测和识别模型进行OCR识别,最后返回识别结果

04-30 14:28