code: def get_lmdb_sample_info(self, txn, index):
      def convert_bbox(bbox_str_list):
          bbox_list = []
          for bbox_str in bbox_str_list:
              bbox_list.append(int(bbox_str))
          return bbox_list
  
      try:
          data = pickle.loads(txn.get(str(index).encode("utf8")))
      except:
          return None
  
      # img_name, img, info_lines
      file_name = data[0]
      bytes = data[1]
      info_lines = data[2]  # raw data from TableMASTER annotation file.
      # parse info_lines
      raw_data = info_lines.strip().split("\n")
      raw_name, text = (
          raw_data[0],
          raw_data[1],
      )  # don't filter the samples's length over max_seq_len.
      text = text.split(",")
      bbox_str_list = raw_data[2:]
      bbox_split = ","
      bboxes = [
          {
              "bbox": convert_bbox(bsl.strip().split(bbox_split)),
              "tokens": ["1", "2"],
          }
          for bsl in bbox_str_list
      ]
  
      # advance parse bbox
      # import pdb;pdb.set_trace()
  
      line_info = {}
      line_info["file_name"] = file_name
      line_info["structure"] = text
      line_info["cells"] = bboxes
      line_info["image"] = bytes
      return line_info
  
imports: import numpy
  import os
  from paddle.io import Dataset
  import lmdb
  import cv2
  import string
  import six
  import pickle
  from PIL import Image
  from .imaug import transform, create_operators
label_desc: Use image node_id 3 for calling the LMDBDataSetTableMaster obj's underlying member method code with example usage: obj.get_lmdb_sample_info(txn, index) and returns: line_info, bbox_list, None