code: def infer_ner_column_type(column_types: Dict):
      """
      Replace the first text with text_ner for the ner problem type
      because no text_ner is detected in infer_column_types.
  
      Parameters
      ----------
      column_types
          The column types of a dataframe.
  
      Returns
      -------
      The columns types with one text_ner inside it.
      """
      # if there is already one column has type text_ner, no action is taken.
      if any(
          [
              col_type.startswith(TEXT_NER)
              for col_type in column_types.values()
          ]
      ):
          return column_types
  
      for (
          column
      ) in (
          column_types.keys()
      ):  # column_types is an ordered dict, so column_types.keys() returns the keys in the order of insertions.
          if column_types[column].startswith(TEXT):
              column_types[column] = column_types[column].replace(
                  TEXT, TEXT_NER
              )
              break
  
      return column_types
  
imports: import collections
  import json
  import logging
  import warnings
  from io import BytesIO
  from typing import Dict, List, Optional, Tuple, Union
  import pandas
  import PIL
  import pytesseract
  from autogluon.core.utils import infer_problem_type
  from ..constants import BINARY, CATEGORICAL, CLASSIFICATION, DOCUMENT_IMAGE, DOCUMENT_PDF, IDENTIFIER, IMAGE, IMAGE_BYTEARRAY, IMAGE_PATH, MULTICLASS, NER, NER_ANNOTATION, NULL, NUMERICAL, OBJECT_DETECTION, OPEN_VOCABULARY_OBJECT_DETECTION, REGRESSION, ROIS, SEMANTIC_SEGMENTATION, SEMANTIC_SEGMENTATION_GT, SEMANTIC_SEGMENTATION_IMG, TEXT, TEXT_NER
  from .utils import is_rois_input
label_desc: Use image node_id 17 for calling a global function with example usage: infer_ner_column_type(column_types) and returns: column_types, column_types