code: def make_outputs(
      self, blank_last_softmax, lstm_seq_len, complete_outputs
  ):
      softmax = tf.roll(blank_last_softmax, shift=1, axis=-1)
  
      greedy_decoded = ctc.ctc_greedy_decoder(
          inputs=tf.transpose(blank_last_softmax, perm=[1, 0, 2]),
          sequence_length=tf.cast(K.flatten(lstm_seq_len), "int32"),
      )[0][0]
  
      outputs = {
          "blank_last_logits": tf.math.log(blank_last_softmax),
          "blank_last_softmax": blank_last_softmax,
          "logits": tf.math.log(softmax),
          "softmax": softmax,
          "out_len": lstm_seq_len,
          "decoded": tf.sparse.to_dense(
              greedy_decoded, default_value=-1
          )
          + 1,
      }
  
      for i, voter_output in enumerate(complete_outputs):
          for k, v in voter_output.items():
              outputs[f"{k}_{i}"] = v
  
      return outputs
  
file_path: calamari/calamari_ocr/ocr/model/ensemblegraph.py
imports: import logging
  from tfaip.model.graphbase import GenericGraphBase
  import tensorflow
  import tensorflow.keras.backend
  from tensorflow.python.ops import ctc_ops
  from calamari_ocr.ocr.model.graph import CalamariGraph
  from calamari_ocr.ocr.model.params import ModelParams
label_desc: Use image node_id 2 for calling the EnsembleGraph obj's underlying member method code with example usage: obj.make_outputs(blank_last_softmax, lstm_seq_len, complete_outputs) and returns: outputs