code: def _print_evaluate(self, sample: Sample, data, print_fn):
      targets, outputs = sample.targets, sample.outputs
      pred_sentence = outputs.sentence
      gt_sentence = targets["sentence"]
      lr = "\u202A\u202B"
      cer = Levenshtein.distance(pred_sentence, gt_sentence) / len(
          gt_sentence
      )
      print_fn(
          "\n  CER:  {}".format(cer)
          + "\n  PRED: '{}{}{}'".format(
              lr[bidi.get_base_level(pred_sentence)],
              pred_sentence,
              "\u202C",
          )
          + "\n  TRUE: '{}{}{}'".format(
              lr[bidi.get_base_level(gt_sentence)],
              gt_sentence,
              "\u202C",
          )
      )
  
file_path: calamari/calamari_ocr/ocr/model/model.py
imports: from typing import Dict, List, Tuple
  import Levenshtein
  import bidi.algorithm
  import tensorflow
  from tensorflow.python.ops import math_ops
  from tfaip import Sample
  from tfaip.model.modelbase import ModelBase
  from calamari_ocr.ocr.model.params import ModelParams
label_desc: Use image node_id 5 for calling the Model obj's underlying member method code with example usage: obj._print_evaluate(sample, data, print_fn) without return types