class_docstr: Base class for encode-decode recognizer.
  
  Args:
      preprocessor (dict, optional): Config dict for preprocessor. Defaults
          to None.
      backbone (dict, optional): Backbone config. Defaults to None.
      encoder (dict, optional): Encoder config. If None, the output from
          backbone will be directly fed into ``decoder``. Defaults to None.
      decoder (dict, optional): Decoder config. Defaults to None.
      data_preprocessor (dict, optional): Model preprocessing config
          for processing the input image data. Keys allowed are
          ``to_rgb``(bool), ``pad_size_divisor``(int), ``pad_value``(int or
          float), ``mean``(int or float) and ``std``(int or float).
          Preprcessing order: 1. to rgb; 2. normalization 3. pad.
          Defaults to None.
      init_cfg (dict or list[dict], optional): Initialization configs.
          Defaults to None.
docstr: Directly extract features from the backbone.
code: def extract_feat(self, inputs: torch.Tensor) -> torch.Tensor:
      """Directly extract features from the backbone."""
      if self.with_preprocessor:
          inputs = self.preprocessor(inputs)
      if self.with_backbone:
          inputs = self.backbone(inputs)
      return inputs
  
file_path: mmocr/mmocr/models/textrecog/recognizers/encoder_decoder_recognizer.py
imports: from typing import Dict
  import torch
  from mmocr.registry import MODELS
  from mmocr.utils.typing_utils import ConfigType, InitConfigType, OptConfigType, OptRecSampleList, RecForwardResults, RecSampleList
  from .base import BaseRecognizer
label_desc: Use image node_id 2 for calling the EncoderDecoderRecognizer obj's underlying member method code with example usage: obj.extract_feat(inputs) and returns: inputs