> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/blocks/blocks/run-a-model/easy-ocr.md).

# EasyOCR

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.

### Type identifier

Use the following identifier in step `"type"` field: `roboflow_core/easy_ocr@v1` to add the block as a step in your workflow.

### Properties

| **Name**   | **Type** | **Description**                                                                                              | Refs |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------ | ---- |
| `name`     | `str`    | Unique name of step in workflows.                                                                            | ❌    |
| `language` | `str`    | Language model to use for OCR.                                                                               | ❌    |
| `quantize` | `bool`   | Quantized models are smaller and faster, but may be less accurate and won't work correctly on all hardware.. | ❌    |

The **Refs** column marks possibility to parametrise the property with dynamic values available in `workflow` runtime. See *Bindings* for more info.

### Input and Output Bindings

The available connections depend on its binding kinds. Check what binding kinds `EasyOCR` in version `v1` has.

<details>

<summary>Input and output bindings</summary>

* input
  * `images` ([*`image`*](https://inference.roboflow.com/workflows/kinds/image/)): The image to infer on..
* output
  * `result` ([`string`](https://inference.roboflow.com/workflows/kinds/string/)): String value.
  * `predictions` ([`object_detection_prediction`](https://inference.roboflow.com/workflows/kinds/object_detection_prediction/)): Prediction with detected bounding boxes in form of sv.Detections(...) object.
  * `parent_id` ([`parent_id`](https://inference.roboflow.com/workflows/kinds/parent_id/)): Identifier of parent for step output.
  * `root_parent_id` ([`parent_id`](https://inference.roboflow.com/workflows/kinds/parent_id/)): Identifier of parent for step output.
  * `prediction_type` ([`prediction_type`](https://inference.roboflow.com/workflows/kinds/prediction_type/)): String value with type of prediction.

</details>

<details>

<summary>Example JSON definition</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/easy_ocr@v1",
	    "images": "$inputs.image",
	    "language": "<block_does_not_provide_example>",
	    "quantize": "<block_does_not_provide_example>"
	}
```

</details>
