code: def preprocess(self, feed=[], fetch=[]):
      data = base64.b64decode(feed[0]["image"].encode("utf8"))
      data = np.fromstring(data, np.uint8)
      im = cv2.imdecode(data, cv2.IMREAD_COLOR)
      ori_h, ori_w, _ = im.shape
      det_img = self.det_preprocess(im)
      _, new_h, new_w = det_img.shape
      det_img = det_img[np.newaxis, :]
      det_img = det_img.copy()
      det_out = self.det_client.predict(
          feed={"x": det_img},
          fetch=["save_infer_model/scale_0.tmp_1"],
          batch=True,
      )
      filter_func = FilterBoxes(10, 10)
      post_func = DBPostProcess(
          {
              "thresh": 0.3,
              "box_thresh": 0.5,
              "max_candidates": 1000,
              "unclip_ratio": 1.5,
              "min_size": 3,
          }
      )
      sorted_boxes = SortedBoxes()
      ratio_list = [float(new_h) / ori_h, float(new_w) / ori_w]
      dt_boxes_list = post_func(
          det_out["save_infer_model/scale_0.tmp_1"], [ratio_list]
      )
      dt_boxes = filter_func(dt_boxes_list[0], [ori_h, ori_w])
      dt_boxes = sorted_boxes(dt_boxes)
      get_rotate_crop_image = GetRotateCropImage()
      img_list = []
      max_wh_ratio = 0
      for i, dtbox in enumerate(dt_boxes):
          boximg = get_rotate_crop_image(im, dt_boxes[i])
          img_list.append(boximg)
          h, w = boximg.shape[0:2]
          wh_ratio = w * 1.0 / h
          max_wh_ratio = max(max_wh_ratio, wh_ratio)
      if len(img_list) == 0:
          return [], []
      _, w, h = self.ocr_reader.resize_norm_img(
          img_list[0], max_wh_ratio
      ).shape
      imgs = np.zeros((len(img_list), 3, w, h)).astype("float32")
      for id, img in enumerate(img_list):
          norm_img = self.ocr_reader.resize_norm_img(img, max_wh_ratio)
          imgs[id] = norm_img
      feed = {"x": imgs.copy()}
      fetch = ["save_infer_model/scale_0.tmp_1"]
      return feed, fetch, True
  
file_path: PaddleOCR/deploy/pdserving/win/ocr_web_server.py
imports: from paddle_serving_client import Client
  import cv2
  import sys
  import numpy
  import os
  from paddle_serving_client import Client
  from paddle_serving_app.reader import Sequential, URL2Image, ResizeByFactor
  from paddle_serving_app.reader import Div, Normalize, Transpose
  from paddle_serving_app.reader import DBPostProcess, FilterBoxes, GetRotateCropImage, SortedBoxes
  from ocr_reader import OCRReader
  from paddle_serving_app.local_predict import LocalPredictor
  import time
  import re
  import base64
label_desc: Use image node_id 2 for calling the OCRService obj's underlying member method code with example usage: obj.preprocess(feed, fetch) and returns: feed,  fetch,  True, list,  list