class_docstr: The post process for PSE.
code: def __call__(self, outs_dict, shape_list):
      pred = outs_dict["maps"]
      if not isinstance(pred, paddle.Tensor):
          pred = paddle.to_tensor(pred)
      pred = F.interpolate(
          pred, scale_factor=4 // self.scale, mode="bilinear"
      )
  
      score = F.sigmoid(pred[:, 0, :, :])
  
      kernels = (pred > self.thresh).astype("float32")
      text_mask = kernels[:, 0, :, :]
      text_mask = paddle.unsqueeze(text_mask, axis=1)
  
      kernels[:, 0:, :, :] = kernels[:, 0:, :, :] * text_mask
  
      score = score.numpy()
      kernels = kernels.numpy().astype(np.uint8)
  
      boxes_batch = []
      for batch_index in range(pred.shape[0]):
          boxes, scores = self.boxes_from_bitmap(
              score[batch_index],
              kernels[batch_index],
              shape_list[batch_index],
          )
  
          boxes_batch.append({"points": boxes, "scores": scores})
      return boxes_batch
  
file_path: PaddleOCR/ppocr/postprocess/pse_postprocess/pse_postprocess.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import cv2
  import paddle
  from paddle.nn import functional
  from ppocr.postprocess.pse_postprocess.pse import pse
label_desc: Use image node_id 2 for calling the PSEPostProcess obj's underlying member method code with example usage: obj.__call__(outs_dict, shape_list) and returns: boxes_batch