code: def __call__(self, data):
      point_num = data["polys"].shape[1]
      src_img = data["image"]
      src_polys = data["polys"].tolist()
      src_texts = data["texts"]
      src_ignores = data["ignore_tags"].tolist()
      ext_data = data["ext_data"][0]
      ext_image = ext_data["image"]
      ext_polys = ext_data["polys"]
      ext_texts = ext_data["texts"]
      ext_ignores = ext_data["ignore_tags"]
  
      indexs = [
          i for i in range(len(ext_ignores)) if not ext_ignores[i]
      ]
      select_num = max(
          1, min(int(self.objects_paste_ratio * len(ext_polys)), 30)
      )
  
      random.shuffle(indexs)
      select_idxs = indexs[:select_num]
      select_polys = ext_polys[select_idxs]
      select_ignores = ext_ignores[select_idxs]
  
      src_img = cv2.cvtColor(src_img, cv2.COLOR_BGR2RGB)
      ext_image = cv2.cvtColor(ext_image, cv2.COLOR_BGR2RGB)
      src_img = Image.fromarray(src_img).convert("RGBA")
      for idx, poly, tag in zip(
          select_idxs, select_polys, select_ignores
      ):
          box_img = get_rotate_crop_image(ext_image, poly)
  
          src_img, box = self.paste_img(src_img, box_img, src_polys)
          if box is not None:
              box = box.tolist()
              for _ in range(len(box), point_num):
                  box.append(box[-1])
              src_polys.append(box)
              src_texts.append(ext_texts[idx])
              src_ignores.append(tag)
      src_img = cv2.cvtColor(np.array(src_img), cv2.COLOR_RGB2BGR)
      h, w = src_img.shape[:2]
      src_polys = np.array(src_polys)
      src_polys[:, :, 0] = np.clip(src_polys[:, :, 0], 0, w)
      src_polys[:, :, 1] = np.clip(src_polys[:, :, 1], 0, h)
      data["image"] = src_img
      data["polys"] = src_polys
      data["texts"] = src_texts
      data["ignore_tags"] = np.array(src_ignores)
      return data
  
file_path: PaddleOCR/ppocr/data/imaug/copy_paste.py
imports: import copy
  import cv2
  import random
  import numpy
  from PIL import Image
  from shapely.geometry import Polygon
  from ppocr.data.imaug.iaa_augment import IaaAugment
  from ppocr.data.imaug.random_crop_data import is_poly_outside_rect
  from tools.infer.utility import get_rotate_crop_image
label_desc: Use image node_id 2 for calling the CopyPaste obj's underlying member method code with example usage: obj.__call__(data) and returns: data