code: def __call__(self, img_list):
      img_list = copy.deepcopy(img_list)
      img_num = len(img_list)
      # Calculate the aspect ratio of all text bars
      width_list = []
      for img in img_list:
          width_list.append(img.shape[1] / float(img.shape[0]))
      # Sorting can speed up the cls process
      indices = np.argsort(np.array(width_list))
  
      cls_res = [["", 0.0]] * img_num
      batch_num = self.cls_batch_num
      elapse = 0
      for beg_img_no in range(0, img_num, batch_num):
          end_img_no = min(img_num, beg_img_no + batch_num)
          norm_img_batch = []
          max_wh_ratio = 0
          starttime = time.time()
          for ino in range(beg_img_no, end_img_no):
              h, w = img_list[indices[ino]].shape[0:2]
              wh_ratio = w * 1.0 / h
              max_wh_ratio = max(max_wh_ratio, wh_ratio)
          for ino in range(beg_img_no, end_img_no):
              norm_img = self.resize_norm_img(img_list[indices[ino]])
              norm_img = norm_img[np.newaxis, :]
              norm_img_batch.append(norm_img)
          norm_img_batch = np.concatenate(norm_img_batch)
          norm_img_batch = norm_img_batch.copy()
  
          if self.use_onnx:
              input_dict = {}
              input_dict[self.input_tensor.name] = norm_img_batch
              outputs = self.predictor.run(
                  self.output_tensors, input_dict
              )
              prob_out = outputs[0]
          else:
              self.input_tensor.copy_from_cpu(norm_img_batch)
              self.predictor.run()
              prob_out = self.output_tensors[0].copy_to_cpu()
              self.predictor.try_shrink_memory()
          cls_result = self.postprocess_op(prob_out)
          elapse += time.time() - starttime
          for rno in range(len(cls_result)):
              label, score = cls_result[rno]
              cls_res[indices[beg_img_no + rno]] = [label, score]
              if "180" in label and score > self.cls_thresh:
                  img_list[indices[beg_img_no + rno]] = cv2.rotate(
                      img_list[indices[beg_img_no + rno]], 1
                  )
      return img_list, cls_res, elapse
  
file_path: PaddleOCR/tools/infer/predict_cls.py
imports: import os
  import sys
  import cv2
  import copy
  import numpy
  import math
  import time
  import traceback
  import tools.infer.utility
  from ppocr.postprocess import build_post_process
  from ppocr.utils.logging import get_logger
  from ppocr.utils.utility import get_image_file_list, check_and_read
label_desc: Use image node_id 3 for calling the TextClassifier obj's underlying member method code with example usage: obj.__call__(img_list) and returns: img_list,  cls_res,  elapse