```python:inference/core/workflows/core_steps/models/foundation/easy_ocr/v1.py
# These are the displayed languages in the UI dropdown
from inference.core.workflows.prototypes.block import WorkflowBlockManifest
from typing import List, Literal, Optional

LANGUAGES = Literal[
    "English",
    "Japanese",
    "Kannada",
    "Korean",
    "Latin",
    "Telugu",
    "Simplified Chinese",
]

LONG_DESCRIPTION = """
 Retrieve the characters in an image using EasyOCR Optical Character Recognition (OCR).

This block returns the text within an image.

You may want to use this block in combination with a detections-based block (i.e.
ObjectDetectionBlock). An object detection model could isolate specific regions from an
image (i.e. a shipping container ID in a logistics use case) for further processing.
You can then use a DynamicCropBlock to crop the region of interest before running OCR.

Using a detections model then cropping detections allows you to isolate your analysis
on particular regions of an image.

Note that EasyOCR has limitations running within containers on Apple Silicon.
"""

_SUPPORTED_MODEL_VARIANTS = [
    "easy_ocr/english_g2",
    "easy_ocr/japanese_g2",
    "easy_ocr/kannada_g2",
    "easy_ocr/korean_g2",
    "easy_ocr/latin_g2",
    "easy_ocr/telugu_g2",
    "easy_ocr/zh_sim_g2",
]


class BlockManifest(WorkflowBlockManifest):

    @classmethod
    def get_supported_model_variants(cls) -> Optional[List[str]]:
        """Return list of model_id variants that can satisfy this block."""
        return _SUPPORTED_MODEL_VARIANTS
```