[AI OCR] EasyOCR: Ready-to-use Optical Character Recognition (OCR) with 80+ supported languages

EasyOCR

Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.

Installation

Install using pip for stable release,

1
2
3
4
$ pip install easyocr

# For latest development release,
# pip install git+git://github.com/jaidedai/easyocr.git

Docker and Docker Compose

TODO

Usage

1
2
3
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # need to run only once to load model into memory
result = reader.readtext('chinese.jpg')

Output will be in list format, each item represents bounding box, text and confident level, respectively.

1
2
3
4
5
6
7
8
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]

Note 1: [‘ch_sim’,‘en’] is the list of languages you want to read. You can pass several languages at once but not all languages can be used together. English is compatible with every languages. Languages that share common characters are usually compatible with each other.

Note 2: Instead of filepath chinese.jpg, you can also pass OpenCV image object (numpy array) or image file as bytes. URL to raw image is also acceptable.

Note 3: The line reader = easyocr.Reader([‘ch_sim’,‘en’]) is for loading model into memory. It takes some time but it need to be run only once.


You can also set detail = 0 for simpler output.

1
reader.readtext('chinese.jpg', detail = 0)

Result:

1
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']

Model weight for chosen language will be automatically downloaded or you can download it manually from the model hub and put it in ~/.EasyOCR/model folder

In case you do not have GPU or your GPU has low memory, you can run it in CPU mode by adding gpu = False

1
reader = easyocr.Reader(['ch_sim','en'], gpu = False)

For more information, read tutorial and API Documentation.

Run on command line

1
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True

References

[1] JaidedAI/EasyOCR: Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc. - https://github.com/JaidedAI/EasyOCR

[2] Jaided AI: EasyOCR demo - https://www.jaided.ai/easyocr/

[3] Jaided AI: EasyOCR tutorial - https://www.jaided.ai/easyocr/tutorial/