class_docstr: Text recognition packer with image cropper. It is used to pack the
  parsed annotation info and crop out the word images from the full-size
  ones.
  
  Args:
      crop_with_warp (bool): Whether to crop the text from the original
          image using opencv warpPerspective.
      jitter (bool): (Applicable when crop_with_warp=True)
          Whether to jitter the box.
      jitter_ratio_x (float): (Applicable when crop_with_warp=True)
          Horizontal jitter ratio relative to the height.
      jitter_ratio_y (float): (Applicable when crop_with_warp=True)
          Vertical jitter ratio relative to the height.
      long_edge_pad_ratio (float): (Applicable when crop_with_warp=False)
          The ratio of padding the long edge of the cropped image.
          Defaults to 0.1.
      short_edge_pad_ratio (float): (Applicable when crop_with_warp=False)
          The ratio of padding the short edge of the cropped image.
          Defaults to 0.05.
code: def add_meta(self, sample: List) -> Dict:
      # Since the TextRecogCropConverter packs all of the patches in a single
      # image into a list, we need to flatten the list.
      sample = [item for sublist in sample for item in sublist]
      return super().add_meta(sample)
  
file_path: mmocr/mmocr/datasets/preparers/packers/textrecog_packer.py
imports: import os.path
  from typing import Dict, List, Tuple
  import mmcv
  from mmengine import mkdir_or_exist
  from mmocr.registry import DATA_PACKERS
  from mmocr.utils import bbox2poly, crop_img, poly2bbox, warp_img
  from .base import BasePacker
label_desc: Use image node_id 3 for calling the TextRecogCropPacker obj's underlying member method code with example usage: obj.add_meta(sample) and returns: super