code: def get_table_context(
      self,
      doc_text: str,
      table_text: str,
      table: t.Dict[str, t.Any],
      table_chunks: TableChunks,
  ):
      unadjusted_context = []
      for cell in table["cells"]:
          for doc_offset in cell["doc_offsets"]:
              unadjusted_context.append(
                  {
                      "text": doc_text[
                          doc_offset["start"] : doc_offset["end"]
                      ],
                      "start": doc_offset["start"],
                      "end": doc_offset["end"],
                      "start_row": min(cell["rows"]),
                      "end_row": max(cell["rows"]),
                      "start_col": min(cell["columns"]),
                      "end_col": max(cell["columns"]),
                  }
              )
      return fix_spans(
          spans=unadjusted_context,
          table_chunks=table_chunks,
          output_space_text=table_text,
          input_space="document",
          output_space="table",
      )
  
imports: import copy
  import functools
  import os
  import tempfile
  import typing
  import sys
  from finetune.base_models import TableRoBERTa
  from finetune.util.metrics import sequences_overlap
  from finetune.scheduler import Scheduler
  from finetune.encoding.input_encoder import BaseEncoder
  from finetune import SequenceLabeler
label_desc: Use image node_id 4 for calling the TableETL obj's underlying member method code with example usage: obj.get_table_context(doc_text, table_text, table, table_chunks) and returns: fix_spans