Closed lycfight closed 1 month ago
可以看一下FastAPI这个工具来部署成服务
可以看一下FastAPI这个工具来部署成服务
目前还在尝试将PPStructure封装的预处理和后处理拆出来写成op,用Paddle Serving自定义pipeline,如果还是有问题的话,那只能放弃Paddle Serving,教程文档可读性太差了,完全无法实现自己的服务。
FastAPI是能直接复用上面的推理代码,放在服务的特定方法里是吧
这个可以参考我整理的RapidStructure
该issue长时间未更新,暂将此issue关闭,如有需要可重新开启。
``请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem
import logging import numpy as np import copy import cv2 import base64
from paddle_serving_app.reader import OCRReader
from ocr_reader import OCRReader, DetResizeForTest, ArgsParser from paddle_serving_app.reader import Sequential, ResizeByFactor from paddle_serving_app.reader import Div, Normalize, Transpose from paddle_serving_app.reader import DBPostProcess, FilterBoxes, GetRotateCropImage, SortedBoxes
_LOGGER = logging.getLogger()
class DetOp(Op): def init_op(self): self.det_preprocess = Sequential([ DetResizeForTest(), Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]), Transpose( (2, 0, 1)) ]) self.filter_func = FilterBoxes(10, 10) self.post_func = DBPostProcess({ "thresh": 0.3, "box_thresh": 0.6, "max_candidates": 1000, "unclip_ratio": 1.5, "min_size": 3 })
class RecOp(Op): def init_op(self): self.ocr_reader = OCRReader( char_dict_path="../../ppocr/utils/ppocr_keys_v1.txt")
class OcrService(WebService): def get_pipeline_response(self, read_op): det_op = DetOp(name="det", input_ops=[read_op]) rec_op = RecOp(name="rec", input_ops=[det_op]) return rec_op
uci_service = OcrService(name="ocr") FLAGS = ArgsParser().parse_args() uci_service.prepare_pipeline_config(yml_dict=FLAGS.conf_dict) uci_service.run_service()