--- license: mit --- # Introduction This repository hosts the [EasyOCR](https://github.com/JaidedAI/EasyOCR) models — the [CRAFT detector](https://github.com/clovaai/CRAFT-pytorch) and the [CRNN recognizer](https://www.jaided.ai/easyocr/modelhub/) — for the [React Native ExecuTorch](https://www.npmjs.com/package/react-native-executorch) library, exported to `.pte` for the **ExecuTorch** runtime (XNNPACK, CoreML and Vulkan backends). If you'd like to run these models in your own ExecuTorch runtime, refer to the [official documentation](https://pytorch.org/executorch/stable/index.html) for setup instructions. Each language ships as **one fused `.pte`** (CRAFT *detect* + CRNN *recognize* in a single file) per backend, using **static bucketed methods** — no dynamic-shape footguns. The `.pte` is a pure tensor→tensor function; all pre/post-processing (resize, normalize, box extraction, crop, CTC decode) is the client's job and is driven by `config.json`. ## Languages | code | charset size | code | charset size | |---|---|---|---| | english | 96 | korean | 1008 | | latin | 351 | telugu | 165 | | japanese | 2214 | kannada | 167 | | zh_sim | 6718 | cyrillic | 207 | All languages share the same CRAFT detector and CRNN architecture — they differ **only** in the recognizer charset. The detector half of each fused PTE is identical across languages. ## Backends | backend | target | precision | |---|---|---| | `xnnpack` | CPU (Android/iOS) | int8 (CRAFT + CRNN) | | `coreml` | Apple ANE | weight-only int8 | | `vulkan` | Android GPU | CRAFT int8 (GPU) + CRNN int8 (XNNPACK, mixed-delegate) | ## Files ``` config.json # shared base config (schema v1) charsets/easyocr_.charset.txt # per-language CTC charset (JSON array) //easyocr___bucketed.pte ``` - `config.json` is **shared** across all languages; it carries `charsetUrlPattern: "easyocr_.charset.txt"` so the client resolves the charset by language. Charset index `i` maps to logit `i + 1` (logit `0` is the CTC blank). ## Buckets Static per-size methods (`is_bucketed()` reports `[detect sides ; recognize widths]`): - **detect** (square sides): `800, 1280` → `detect_800`, `detect_1280` (+ a `1280×320` portrait method) - **recognize** (widths, height 64): `64, 128, 256, 512` → `recognize_64 … recognize_512` `detect` runs once per image; `recognize` runs once per text line. ## Compatibility If you intend to use these models outside of React Native ExecuTorch, make sure your runtime is compatible with the **ExecuTorch** version used to export the `.pte` files. For more details, see the compatibility note in the [ExecuTorch GitHub repository](https://github.com/pytorch/executorch/blob/main/runtime/COMPATIBILITY.md). If you work with React Native ExecuTorch, the library constants guarantee compatibility with the runtime used behind the scenes.