class_docstr: Implements an object able to detect the reading direction of a text box.
  4 possible orientations: 0, 90, 180, 270 degrees counter clockwise.
  
  Args:
  ----
      pre_processor: transform inputs for easier batched model inference
      model: core classification architecture (backbone + classification head)
code: def __call__(
      self,
      crops: List[Union[np.ndarray, tf.Tensor]],
  ) -> List[int]:
      # Dimension check
      if any(crop.ndim != 3 for crop in crops):
          raise ValueError(
              "incorrect input shape: all crops are expected to be multi-channel 2D images."
          )
  
      processed_batches = self.pre_processor(crops)
      predicted_batches = [
          self.model(batch, training=False)
          for batch in processed_batches
      ]
  
      # Postprocess predictions
      predicted_batches = [
          out_batch.numpy().argmax(1) for out_batch in predicted_batches
      ]
  
      return [
          int(pred) for batch in predicted_batches for pred in batch
      ]
  
file_path: doctr/doctr/models/classification/predictor/tensorflow.py
imports: from typing import List, Union
  import numpy
  import tensorflow
  from tensorflow import keras
  from doctr.models.preprocessor import PreProcessor
  from doctr.utils.repr import NestedObject
label_desc: Use image node_id 2 for calling the CropOrientationPredictor obj's underlying member method code with example usage: obj.__call__(crops) and returns: unknown