code: def test_generate_crop_target(self):
      transform = TextDetRandomCropFlip(
          crop_ratio=1.0, iter_num=3, pad_ratio=0.1
      )
      h, w = self.data_info1["img_shape"]
      pad_h = int(h * transform.pad_ratio)
      pad_w = int(w * transform.pad_ratio)
      h_axis, w_axis = transform._generate_crop_target(
          self.data_info1["img"],
          self.data_info1["gt_polygons"],
          pad_h,
          pad_w,
      )
      self.assertTrue(np.allclose(h_axis, (0, 11)))
      self.assertTrue(np.allclose(w_axis, (0, 11)))
  
imports: import copy
  import unittest
  import unittest.mock
  import numpy
  from mmcv.transforms import Pad, RandomResize
  from mmocr.datasets.transforms import BoundedScaleAspectJitter, RandomCrop, RandomFlip, Resize, ShortScaleAspectJitter, SourceImagePad, TextDetRandomCrop, TextDetRandomCropFlip
  from mmocr.utils import bbox2poly, poly2shapely
label_desc: Use image node_id 5 for calling the TestTextDetRandomCropFlip obj's underlying member method code with example usage: obj.test_generate_crop_target() without return types