code: def string_match(
      word1: str, word2: str
  ) -> Tuple[bool, bool, bool, bool]:
      """Performs string comparison with multiple levels of tolerance
  
      Args:
      ----
          word1: a string
          word2: another string
  
      Returns:
      -------
          a tuple with booleans specifying respectively whether the raw strings, their lower-case counterparts, their
              unidecode counterparts and their lower-case unidecode counterparts match
      """
      raw_match = word1 == word2
      caseless_match = word1.lower() == word2.lower()
      unidecode_match = unidecode(word1) == unidecode(word2)
  
      # Warning: the order is important here otherwise the pair ("EUR", "€") cannot be matched
      unicase_match = (
          unidecode(word1).lower() == unidecode(word2).lower()
      )
  
      return raw_match, caseless_match, unidecode_match, unicase_match
  
imports: from typing import Dict, List, Optional, Tuple
  import cv2
  import numpy
  from scipy.optimize import linear_sum_assignment
  from unidecode import unidecode
label_desc: Use image node_id 1 for calling a global function with example usage: string_match(word1, word2) and returns: raw_match,  caseless_match,  unidecode_match,  unicase_match