EasyOCR provides ready-to-use optical character recognition for over 80 languages and popular writing scripts. It accepts multiple image input formats and returns structured results including bounding boxes, detected text, and confidence levels.
Project overview
Developers needing multilingual OCR can process images via Python library calls or a command-line interface across more than 80 languages.
Project type
Document Processing
Use cases
Documents & Office
Deployment
Refer to project documentation
License
Apache-2.0
Best for
Developers who need to extract text from images in various formats across many languages.
Key capabilities
Provides ready-to-use OCR for more than 80 supported languages and popular writing scripts.
Accepts image file paths, OpenCV image arrays, image bytes, and raw-image URLs as OCR input.
Returns list items containing a bounding box, detected text, and confidence level.
Can return simpler OCR output by setting detail to zero.
Provides an easyocr command for OCR on an image with selected languages and a GPU setting.
Plans to support swappable detection and recognition algorithms.
Limitations and risks
Several languages can be passed together, but not all languages can be used together.
Model weights for the chosen language are automatically downloaded or can be manually placed in the EasyOCR model folder.
No facts document a local-only data boundary, telemetry behavior, or external service requirements.
Getting started
Install easyocr with pip. Create an EasyOCR Reader for the desired languages. Call readtext on an image input.
Evidence and sources
README: **Tech leader/Guru:** If you found this library useful, please spread the word!
GitHub project description: Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.
README: Note 2: Instead of the filepath `chinese.jpg`, you can also pass an OpenCV image object (numpy array) or an image file as bytes. A URL to a raw image is also acceptable.
README: The output will be in a list format, each item represents a bounding box, the text detected and confident level, respectively.
README: You can also set `detail=0` for simpler output.