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

Overview

EasyOCR

PyPI Status license Open in Colab Tweet Twitter

Ready-to-use OCR with 80+ languages supported including Chinese, Japanese, Korean and Thai.

What's new

  • 1 February 2021 - Version 1.2.3

    • Add setLanguageList method to Reader class. This is a convenient api for changing languages (within the same model) after creating class instance.
    • Small change on text box merging. (thanks z-pc, see PR)
    • Basic Demo on website
  • 5 January 2021 - Version 1.2.2

    • Add optimal_num_chars to detect method. If specified, bounding boxes with estimated number of characters near this value are returned first. (thanks @adamfrees)
    • Add rotation_info to readtext method. Allow EasyOCR to rotate each text box and return the one with the best confident score. Eligible values are 90, 180 and 270. For example, try [90, 180 ,270] for all possible text orientations. (thanks @mijoo308)
    • Update documentation.
  • 17 November 2020 - Version 1.2

    • New language supports for Telugu and Kannada. These are experimental lite recognition models. Their file sizes are only around 7% of other models and they are ~6x faster at inference with CPU.
  • 12 October 2020 - Version 1.1.10

    • Faster beamsearch decoder (thanks @amitbcp)
    • Better code structure (thanks @susmith98)
    • New language supports for Haryanvi(bgc), Sanskrit(sa) (Devanagari Script) and Manipuri(mni) (Bengari Script)
  • 31 August 2020 - Version 1.1.9

    • Add detect and recognize method for performing text detection and recognition separately
  • Read all released notes

What's coming next

Examples

example

example2

example3

Supported Languages

We are currently supporting 80+ languages. See list of supported languages.

Installation

Install using pip for stable release,

pip install easyocr

For latest development release,

pip install git+git://github.com/jaidedai/easyocr.git

Note 1: for Windows, please install torch and torchvision first by following the official instruction here https://pytorch.org. On pytorch website, be sure to select the right CUDA version you have. If you intend to run on CPU mode only, select CUDA = None.

Note 2: We also provide Dockerfile here.

Try Third-Party Demos

  1. Google Colab
  2. Dockerhub
  3. Ainize

Usage

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.

[([[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.

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

Result:

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

Model weight for chosen language will be automatically downloaded or you can download it manually from the following links 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

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

For more information, read tutorial and API Documentation.

Run on command line

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

Implementation Roadmap

  1. Language packs: Expand support to more languages. We are aiming to cover > 80-90% of world's population. Also improve existing languages.
  2. Better documentation and api
  3. Language model for better decoding
  4. Handwritten support: The key is using GAN to generate realistic handwritten dataset.
  5. Faster processing time: model pruning (lite version) / quantization / export to other platforms (ONNX?)
  6. Open Dataset and model training pipeline
  7. Restructure code to support swappable detection and recognition algorithm. The api should be as easy as
reader = easyocr.Reader(['en'], detection='DB', recognition = 'CNN_Transformer')

The idea is to be able to plug-in any state-of-the-art model into EasyOCR. There are a lot of geniuses trying to make better detection/recognition model. We are not trying to be a genius here, just make genius's works quickly accessible to the public ... for free. (well I believe most geniuses want their work to create positive impact as fast/big as possible) The pipeline should be something like below diagram. Grey slots are placeholders for changeable light blue modules.

plan

Acknowledgement and References

This project is based on researches/codes from several papers/open-source repositories.

All deep learning part is based on Pytorch. ❤️

Detection part is using CRAFT algorithm from this official repository and their paper (Thanks @YoungminBaek from @clovaai). We also use their pretrained model.

Recognition model is CRNN (paper). It is composed of 3 main components, feature extraction (we are currently using Resnet), sequence labeling (LSTM) and decoding (CTC). Training pipeline for recognition part is a modified version from deep-text-recognition-benchmark. (Thanks @ku21fan from @clovaai) This repository is a gem that deserved more recognition.

Beam search code is based on this repository and his blog. (Thanks @githubharald)

Data synthesis is based on TextRecognitionDataGenerator. (Thanks @Belval)

And good read about CTC from distill.pub here.

Want To Contribute?

Let's advance humanity together by making AI available to everyone!

3 ways to contribute:

Coder: Please send PR for small bug/improvement. For bigger one, discuss with us by open an issue first. There is a list of possible bug/improvement issue tagged with 'PR WELCOME'.

User: Tell us how EasyOCR benefit you/your organization to encourage further development. Also post failure cases in Issue Section to help improving future model.

Tech leader/Guru: If you found this library useful, please spread the word! (See Yann Lecun's post about EasyOCR)

Guideline for new language request

To request a new language support, I need you to send a PR with 2 following files

  1. In folder easyocr/character, we need 'yourlanguagecode_char.txt' that contains list of all characters. Please see format example from other files in that folder.
  2. In folder easyocr/dict, we need 'yourlanguagecode.txt' that contains list of words in your language. On average we have ~30000 words per language with more than 50000 words for popular one. More is better in this file.

If your language has unique elements (such as 1. Arabic: characters change form when attach to each other + write from right to left 2. Thai: Some characters need to be above the line and some below), please educate me with your best ability and/or give useful links. It is important to take care of the detail to achieve a system that really works.

Lastly, please understand that my priority will have to go to popular language or set of languages that share most of characters together (also tell me if your language share a lot of characters with other). It takes me at least a week to work for new model. You may have to wait a while for new model to be released.

See List of languages in development

Business Inquiries

For Enterprise Support, Jaided AI offers full service for custom OCR/AI systems from building, maintenance and deployment. Click here to contact us.

Comments
  • List of languages in development

    List of languages in development

    I will update/edit this issue to track development process of new language. The current list is

    Group 1 (Arabic script)

    • Arabic (DONE, August, 5 2020)
    • Uyghur (DONE, August, 5 2020)
    • Persian (DONE, August, 5 2020)
    • Urdu (DONE, August, 5 2020)

    Group 2 (Latin script)

    • Serbian-latin (DONE, July,12 2020)
    • Occitan (DONE, July,12 2020)

    Group 3 (Devanagari)

    • Hindi (DONE, July,24 2020)
    • Marathi (DONE, July,24 2020)
    • Nepali (DONE, July,24 2020)
    • Rajasthani (NEED HELP)
    • Awadhi, Haryanvi, Sanskrit (if possible)

    Group 4 (Cyrillic script)

    • Russian (DONE, July,29 2020)
    • Serbian-cyrillic (DONE, July,29 2020)
    • Bulgarian (DONE, July,29 2020)
    • Ukranian (DONE, July,29 2020)
    • Mongolian (DONE, July,29 2020)
    • Belarusian (DONE, July,29 2020)
    • Tajik (DONE, April,20 2021)
    • Kyrgyz (NEED HELP)

    Group 5

    • Telugu (DONE, November,17 2020)
    • Kannada (DONE, November,17 2020)

    Group 6 (Language that doesn't share characters with others)

    • Tamil (DONE, August, 10 2020)
    • Hebrew (ready to train)
    • Malayalam (ready to train)
    • Bengali + Assamese (DONE, August, 23 2020)
    • Punjabi (ready to train)
    • Abkhaz (ready to train)

    Group 7 (Improvement and possible extra models)

    • Japanese version 2 (DONE, March, 21 2021)+ vertical text
    • Chinese version2 (DONE, March, 21 2021)+ vertical text
    • Korean version 2(DONE, March, 21 2021)
    • Latin version 2 (DONE, March, 21 2021)
    • Math + Greek?
    • Number+symbol only

    Guideline for new language request

    To request a new language support, I need you to send a PR with 2 following files

    1. In folder easyocr/character, we need 'yourlanguagecode_char.txt' that contains list of all characters. Please see format/example from other files in that folder.
    2. In folder easyocr/dict, we need 'yourlanguagecode.txt' that contains list of words in your language. On average we have ~30000 words per language with more than 50000 words for popular one. More is better in this file.

    If your language has unique elements (such as 1. Arabic: characters change form when attach to each other + write from right to left 2. Thai: Some characters need to be above the line and some below), please educate me with your best ability and/or give useful links. It is important to take care of the detail to achieve a system that really works.

    Lastly, please understand that my priority will have to go to popular language or set of languages that share most of characters together (also tell me if your language share a lot of characters with other). It takes me at least a week to work for new model. You may have to wait a while for new model to be released.

    help wanted Language Request 
    opened by rkcosmos 81
  • Error in easyocr.Reader with urlretrieve(model_url[model_file][0], MODEL_PATH)

    Error in easyocr.Reader with urlretrieve(model_url[model_file][0], MODEL_PATH)

    Hello! Thanks for that amazing library first of all! Could someone please help to resolve the issue i encountered today only (yesterday and before it was working smoothly).

    in my code i have let's say:

    import easyocr
    reader = easyocr.Reader(['id', 'en'])
    

    When i run it - i am getting the following error:

    CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU.
    MD5 hash mismatch, possible file corruption
    Re-downloading the recognition model, please wait
    Traceback (most recent call last):
      File "tryout_easyocr.py", line 5, in <module>
        reader = easyocr.Reader(['id', 'en'])
      File "/usr/local/lib/python3.7/site-packages/easyocr/easyocr.py", line 194, in __init__
        urlretrieve(model_url[model_file][0], MODEL_PATH)
      File "/usr/local/Cellar/python/3.7.8/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 288, in urlretrieve
        % (read, size), result)
    

    Regardless what language i choose - i face this error in all the environments:

    • in mac os runtime
    • in docker
    • in ubuntu
    • in colab https://colab.research.google.com/github/vistec-AI/colab/blob/master/easyocr.ipynb#scrollTo=lIYdn1woOS1n

    Diving deeper it tries to download the following file: https://www.jaided.ai/read_download/latin.pth which i wasn't able to download with wget, curl or browser as well for the same issue.

    Seems https://www.jaided.ai/ resets the connection during download

    opened by z-aliakseyeu 21
  • Error in easyoce.Reader module

    Error in easyoce.Reader module

    I am facing issue with easyocr.reader module. I have successfully imported easyocr, but face issue on following line.

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

    error is following.

    AttributeError: module 'easyocr' has no attribute 'Reader'

    help wanted 
    opened by Hassan1175 19
  • Model files won't download

    Model files won't download

    Looks like there's an issue with the server for the model files. Returns a 403 forbidden when attempting to download.

        reader = easyocr.Reader(['en'], gpu = False)
      File "/Users/travis/.local/share/virtualenvs/ocr-RN8nrvRp/lib/python3.8/site-packages/easyocr/easyocr.py", line 185, in __init__
        urlretrieve(model_url['detector'][0] , DETECTOR_PATH)
      File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 247, in urlretrieve
        with contextlib.closing(urlopen(url, data)) as fp:
      File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 222, in urlopen
        return opener.open(url, data, timeout)
      File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 531, in open
        response = meth(req, response)
      File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 640, in http_response
        response = self.parent.error(
      File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 569, in error
        return self._call_chain(*args)
      File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 502, in _call_chain
        result = func(*args)
      File "/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 649, in http_error_default
        raise HTTPError(req.full_url, code, msg, hdrs, fp)
    urllib.error.HTTPError: HTTP Error 403: Forbidden
    
    opened by exiva 16
  • Support for digit recognition

    Support for digit recognition

    Hi,

    Is the current version support digit recognition? If not, please add in future release. The OCR to recognize digits from meter is a common but will be very useful case. Sample cropped image of a meter screen- meter

    Currently it is giving following result for above sample image- current_result_meter

    opened by dsbyprateekg 13
  • Character Bounding Boxes

    Character Bounding Boxes

    Hi, I am working on a project where I need the bounding boxes around the characters rather than the whole word. Is there any way I can do that using EasyOCR? Thanks

    opened by Laveen-exe 12
  • Make server that users can experience easyocr in webpage!

    Make server that users can experience easyocr in webpage!

    Hi! I'm a student who work in common computer as intern. recently I'm working for deploying any useful and interesting project by using Ainize. and I ainize easyocr project so that every user can experience easyocr easy! Try click ainize button or visit webpage! you can try it by click ainize button or [web page] link in README.md thank you!

    (Ainize is a project that can deploy server for free & able to access live services from Github with one click! if you interested in Ainize, try visit ainize.ai !)

    Have a good day 😄!

    opened by j1mmyson 12
  • [RFC] Improvements to the Japanese model

    [RFC] Improvements to the Japanese model

    This project is impressive. I've tested this and it's extremely more precise than Tesseract, thank you for your effort.

    There are a few issues I've noticed on some test cases I've tested, some I think are caused by missing symbols, others are more specific to the Japanese language, and could be improved from the context of a dictionary (looks like ja has only characters right now).

    Is there anyway I can help you? I can certainly add the missing characters to the characters list, and I'm willing to also build a dictionary if that could help disambiguating some words. But I would have to wait for you to retrain the model on your side?

    Here are my test cases:

    1 - いや…あるというか…って→

    https://0x0.st/ivNP.png

    issues:

    Missing missing mistakes って for つて (fixable with a dictionary file I think)

    result:

    ([[208, 0], [628, 0], [628, 70], [208, 70]], 'あるというか:', 0.07428263872861862)
    ([[0, 1], [185, 1], [185, 69], [0, 69]], 'いや・', 0.2885110080242157)
    ([[3, 69], [183, 69], [183, 128], [3, 128]], 'つて', 0.4845466613769531)
    

    2 - ♬〜(これが私の生きる道)

    https://0x0.st/ivZC.png

    issues:

    Missing ♬〜 Mistakes (これ for にれ Mistakes が(ga) for か(ka) Detects English parens () instead of Japanese parens ()

    ([[1, 0], [125, 0], [125, 63], [1, 63]], ',~', 0.10811009258031845)
    ([[179, 0], [787, 0], [787, 66], [179, 66]], 'にれか私の生きる道)', 0.3134567439556122)
    

    3 - (秀一)ああッ…もう⁉︎

    https://0x0.st/ivZh.png

    issues:

    Mistakes small for big (similar to 1 but katakana instead of hiragana) Mistakes for ・・・

    ([[0, 0], [174, 0], [174, 64], [0, 64]], '(秀一)', 0.9035432934761047)
    ([[207, 0], [457, 0], [457, 64], [207, 64]], 'ああツ・・・', 0.35586389899253845)
    ([[481, 0], [668, 0], [668, 64], [481, 64]], 'もう!?', 0.4920879304409027)
    

    4 - そっか

    https://0x0.st/ivZ7.png

    issues:

    mistakes そっか for そつか (fixable with a dictionary file, I think) (similar to 1 そっか is a really common word)

    ([[0, 0], [186, 0], [186, 60], [0, 60]], 'そつか', 0.9190227389335632)
    

    5 - (久美子)うん ヘアピンのお礼

    https://0x0.st/ivZR.png

    issues:

    mistakes for 0 (not sure how to fix this one, but it's pretty important – seems like is properly recognized in my test case 2) mistakes ヘアピン for へアピソ (fixable by dictionary probably)

    ([[0, 0], [238, 0], [238, 72], [0, 72]], '(久美子)', 0.9745591878890991)
    ([[268, 0], [396, 0], [396, 70], [268, 70]], 'うん', 0.5724520087242126)
    ([[22, 60], [454, 60], [454, 132], [22, 132]], 'へアピソ0お礼', 0.25971919298171997)
    
    Failure Cases 
    opened by pigoz 12
  • Any tutorial to train / fine-tune the model for more fonts (new dataset)? Any Update?

    Any tutorial to train / fine-tune the model for more fonts (new dataset)? Any Update?

    Thanks for publishing this great EASYOCR model! I am wondering if I can find a tutorial to train EASYOCR or finetune it on a custom dataset ( where I need to add a complex background for texts and support new fonts).

    What do you think? is there any link for that?

    Any update?

    opened by hahmad2008 11
  • Does not recognize digit '7'

    Does not recognize digit '7'

    I've been trying to read some Sudokus and so far all digits have been recognized except 7. Is this a font issue maybe? All the images I have tried, no 7 was recognized.

    Edit: Maybe related #130

    Example:

    Link to the image

     curl -o sudoku.png https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Sudoku-by-L2G-20050714.svg/1200px-Sudoku-by-L2G-20050714.svg.png
     easyocr -l en -f sudoku.png
    
    ([[42, 34], [100, 34], [100, 114], [42, 114]], '5', 0.9198901653289795)
    ([[174, 34], [234, 34], [234, 114], [174, 114]], '3', 0.5189616680145264)
    ([[704, 166], [762, 166], [762, 246], [704, 246]], '5', 0.8919380307197571)
    ([[44, 168], [104, 168], [104, 246], [44, 246]], '6', 0.8406975865364075)
    ([[568, 168], [630, 168], [630, 246], [568, 246]], '9', 0.7890614867210388)
    ([[445, 175], [499, 175], [499, 243], [445, 243]], '_', 0.8146840333938599)
    ([[176, 300], [234, 300], [234, 376], [176, 376]], '9', 0.8461765646934509)
    ([[968, 302], [1026, 302], [1026, 378], [968, 378]], '6', 0.9359095692634583)
    ([[44, 432], [102, 432], [102, 510], [44, 510]], '8', 0.9884797930717468)
    ([[1098, 432], [1156, 432], [1156, 510], [1098, 510]], '3', 0.5310271382331848)
    ([[572, 434], [630, 434], [630, 510], [572, 510]], '6', 0.9405879974365234)
    ([[46, 564], [108, 564], [108, 638], [46, 638]], '4', 0.6061235070228577)
    ([[702, 564], [762, 564], [762, 642], [702, 642]], '3', 0.617751955986023)
    ([[1100, 566], [1158, 566], [1158, 640], [1100, 640]], '_', 0.9189348220825195)
    ([[441, 569], [493, 569], [493, 637], [441, 637]], '8', 0.4214801788330078)
    ([[570, 694], [628, 694], [628, 772], [570, 772]], '2', 0.9453338384628296)
    ([[1098, 696], [1158, 696], [1158, 772], [1098, 772]], '6', 0.8925315737724304)
    ([[834, 826], [894, 826], [894, 906], [834, 906]], '2', 0.9729335308074951)
    ([[176, 830], [236, 830], [236, 906], [176, 906]], '6', 0.9366582036018372)
    ([[966, 830], [1024, 830], [1024, 904], [966, 904]], '8', 0.9889897704124451)
    ([[700, 956], [762, 956], [762, 1036], [700, 1036]], '9', 0.7338930368423462)
    ([[1098, 958], [1156, 958], [1156, 1036], [1098, 1036]], '5', 0.9352748394012451)
    ([[439, 961], [505, 961], [505, 1029], [439, 1029]], '4', 0.5053627490997314)
    ([[572, 962], [634, 962], [634, 1038], [572, 1038]], '_', 0.8581225872039795)
    ([[570, 1090], [630, 1090], [630, 1168], [570, 1168]], '8', 0.9891173839569092)
    ([[1096, 1090], [1154, 1090], [1154, 1166], [1096, 1166]], '9', 0.6340051293373108)
    
    opened by lagerfeuer 11
  • pip install easyocr error

    pip install easyocr error

    hi , I have a question, when i execute pip install easyocr ,tips : a error: could not find a version that satisfies the requirement thorchvision>=0.5(from easyocr)

    opened by wangzaogen 11
  •  AttributeError: '_MultiProcessingDataLoaderIter' object has no attribute 'next'

    AttributeError: '_MultiProcessingDataLoaderIter' object has no attribute 'next'

    Hi. I am currently trying to train my own model. I obtained the dataset as required and modified the config file. However, I get this error when trying to train. I have already tried to decrease workers in config file. I also tried to modify the dataset.py file, line 101 from image, text = data_loader_iter.next() to image, text = next(data_loader_iter)

    However, the error persist.

    Thanks

    opened by proclaim5584 0
  • ✨ Add: Merge to free

    ✨ Add: Merge to free

    Hello! I am a developer who is working on various projects using EasyOCR.

    I am sending a PR to suggest a function that would be helpful to many people after doing several experiments.

    During detection, data with incorrectly configured coordinate vector values is free_list, The horizontal_list has been confirmed to go to data consisting of exact coordinate vector values.

    However, this comes as horizontal_list + free_list when receiving the result, so if you need to check the data sequentially, you need to compare the pixels directly and see where they are recognized.

    ezgif com-gif-maker

    ezgif com-gif-maker (1)

    The gif uploaded above is an image that shows that when recognized using EasyOCR directly, the data comes in sequentially and 2 and 4 come in last.

    Untitled

    This means that the free_list is not sorted at the end and is merged as it is.

    Untitled1

    This is difficult to see at a glance even when detail=0 is inserted into the detail parameter.

    Untitled2

    So I developed a function that makes it easier to see by aligning the horizontal_list and free_list together when free_merge is inserted into the output_format parameter.

    ezgif com-gif-maker (2)

    The gif uploaded above is an image that returns the result value sequentially after adding the function to EasyOCR.

    result = reader.readtext(image, output_format='free_merge')
    for r in result:
    	print(r)
    

    If you enter as above, you want it to be an EasyOCR that returns the results sequentially as follows.

    ([[90, 72], [162, 72], [162, 172], [90, 172]], '1', 0.9979992393730299)
    ([[299, 53], [387, 53], [387, 185], [299, 185]], '2', 1.0)
    ([[522, 44], [598, 44], [598, 172], [522, 172]], '3', 0.9944517558838641)
    ([[745, 53], [831, 53], [831, 169], [745, 169]], '4', 0.9790806838048891)
    ([[968, 52], [1042, 52], [1042, 174], [968, 174]], '5', 1.0)
    ([[1188, 54], [1266, 54], [1266, 172], [1188, 172]], '6', 0.9999949932161059)
    ([[1415, 77], [1475, 77], [1475, 169], [1415, 169]], '7', 0.9960819788421169)
    ([[1626, 54], [1706, 54], [1706, 174], [1626, 174]], '8', 1.0)
    ([[1848, 64], [1920, 64], [1920, 174], [1848, 174]], '9', 0.9999967813517721)
    ([[2027, 43], [2185, 43], [2185, 184], [2027, 184]], '10', 0.9999989884757856)
    ([[77.2879532910169, 230.02821146681296], [151.37898588609144, 239.7842872259749], [132.7120467089831, 373.971788533187], [58.62101411390856, 364.2157127740251]], '2', 0.9868415024810453)
    ([[281, 199], [391, 199], [391, 365], [281, 365]], '2', 0.9980995156509067)
    ([[526, 236], [574, 236], [574, 350], [526, 350]], '1', 0.3553702823128333)
    ([[738, 226], [836, 226], [836, 372], [738, 372]], '4', 1.0)
    ([[872, 282], [904, 282], [904, 358], [872, 358]], '1', 0.46445868490119224)
    ([[920.8651368309256, 237.1345809643125], [1041.2936593026684, 188.84521212806337], [1093.1348631690744, 349.86541903568747], [972.7063406973315, 398.15478787193666]], '4', 1.0)
    ([[1162, 224], [1266, 224], [1266, 384], [1162, 384]], '3', 0.9999594692522464)
    ([[1365, 213], [1497, 213], [1497, 407], [1365, 407]], '5', 0.9986469557185416)
    ([[1588, 200], [1714, 200], [1714, 394], [1588, 394]], '6', 0.3138604097965505)
    ([[1853, 255], [1893, 255], [1893, 365], [1853, 365]], '1', 0.9972939940858829)
    ([[2075, 239], [2117, 239], [2117, 339], [2075, 339]], '1', 0.9854363293399651)
    ([[47, 439], [199, 439], [199, 575], [47, 575]], '11', 0.9999839842351304)
    ([[264, 434], [422, 434], [422, 578], [264, 578]], '12', 0.9999954481433951)
    ([[489, 437], [639, 437], [639, 577], [489, 577]], '13', 0.9999845742882926)
    ([[709, 437], [865, 437], [865, 577], [709, 577]], '14', 0.9997981225645103)
    ([[929, 441], [1083, 441], [1083, 579], [929, 579]], '15', 0.9425667175676142)
    ([[1151, 445], [1303, 445], [1303, 579], [1151, 579]], '16', 0.9999962910793456)
    ([[1368, 445], [1516, 445], [1516, 579], [1368, 579]], '17', 0.999997049721879)
    ([[1589, 445], [1741, 445], [1741, 579], [1589, 579]], '18', 0.9999982298328214)
    ([[1809, 447], [1961, 447], [1961, 585], [1809, 585]], '19', 0.9999972183091315)
    ([[2031, 445], [2183, 445], [2183, 581], [2031, 581]], '20', 0.9999991570631338)
    ([[50, 630], [172, 630], [172, 794], [50, 794]], '4', 1.0)
    ([[260, 622], [428, 622], [428, 798], [260, 798]], '4', 0.9993658331357935)
    ([[494, 618], [598, 618], [598, 782], [494, 782]], '3', 0.9969145055207527)
    ([[719, 621], [831, 621], [831, 781], [719, 781]], '5', 0.999999880790714)
    ([[949, 623], [1041, 623], [1041, 773], [949, 773]], '2', 0.9640018726844447)
    ([[1173, 655], [1239, 655], [1239, 753], [1173, 753]], '1', 0.9843721660900542)
    ([[1405, 633], [1471, 633], [1471, 767], [1405, 767]], '1', 0.99952905955627)
    ([[1606, 628], [1704, 628], [1704, 784], [1606, 784]], '2', 0.9996682680632638)
    ([[2039, 623], [2151, 623], [2151, 801], [2039, 801]], '2', 0.31963881498015567)
    ([[43, 845], [196, 845], [196, 979], [43, 979]], '21', 0.9999989041821146)
    ([[264, 841], [416, 841], [416, 981], [264, 981]], '22', 0.9999998314126102)
    ([[487, 843], [635, 843], [635, 981], [487, 981]], '23', 0.9999978083645809)
    ([[707, 841], [863, 841], [863, 981], [707, 981]], '24', 0.9999994942378553)
    ([[928, 840], [1082, 840], [1082, 984], [928, 984]], '25', 0.9999996628252286)
    ([[1152, 848], [1300, 848], [1300, 976], [1152, 976]], '26', 0.9864728654305385)
    ([[1369, 843], [1517, 843], [1517, 981], [1369, 981]], '27', 0.6750208001814506)
    ([[1589, 847], [1741, 847], [1741, 983], [1589, 983]], '28', 0.9999988299663297)
    ([[1811, 849], [1961, 849], [1961, 987], [1811, 987]], '29', 0.9999996628252286)
    ([[2032, 852], [2180, 852], [2180, 980], [2032, 980]], '30', 0.9999972183091315)
    ([[47, 1021], [183, 1021], [183, 1193], [47, 1193]], '5', 0.9999997615814351)
    ([[275, 1033], [385, 1033], [385, 1191], [275, 1191]], '2', 0.9999992847443906)
    ([[488, 1028], [610, 1028], [610, 1198], [488, 1198]], '5', 0.999989390401371)
    ([[724, 1022], [820, 1022], [820, 1174], [724, 1174]], '3', 0.16538231022019545)
    ([[927, 1013], [1043, 1013], [1043, 1191], [927, 1191]], '3', 0.9998320411641579)
    ([[1812, 1030], [1986, 1030], [1986, 1180], [1812, 1180]], '4', 0.9999662640555904)
    ([[2025, 1031], [2163, 1031], [2163, 1173], [2025, 1173]], '4', 1.0)
    

    Originally, I added this feature to use, but I'm sure it'll be a necessary feature for someone.

    Thank you for reading the long article.

    opened by Hitbee-dev 1
  • Cannot detect English alphabets when they are tilted

    Cannot detect English alphabets when they are tilted

    I tried to recognize number plates from images of cars. The OCR fails to detect when the number is tilted. What should be done to improve the detection accuracy?

    opened by ganesh15220 0
  • How to restart training from the saved model iteration.pth?

    How to restart training from the saved model iteration.pth?

    I was using a custom dataset to train EasyOCR, which has seven segment display digits. The training worked well up until the 110000th iteration, however my runtime got disconnected in between and I now want to restart it from the saved checkpoint. So, could someone please explain or assist me ?

    opened by Mani-mk-mk 3
Releases(v1.6.2)
Owner
Jaided AI
Distribute the benefits of AI to the world
Jaided AI
[ICCV, 2021] Cloud Transformers: A Universal Approach To Point Cloud Processing Tasks

Cloud Transformers: A Universal Approach To Point Cloud Processing Tasks This is an official PyTorch code repository of the paper "Cloud Transformers:

Visual Understanding Lab @ Samsung AI Center Moscow 27 Dec 15, 2022
DouZero is a reinforcement learning framework for DouDizhu - 斗地主AI

[ICML 2021] DouZero: Mastering DouDizhu with Self-Play Deep Reinforcement Learning | 斗地主AI

Kwai 3.1k Jan 05, 2023
Msos searcher - A half-hearted attempt at finding a magic square of squares

MSOS searcher A half-hearted attempt at finding (or rather searching) a MSOS (Magic Square of Squares) in the spirit of the Parker Square. Running I r

Niels Mündler 1 Jan 02, 2022
A tool to enhance your old/damaged pictures built using python & opencv.

Breathe Life into your Old Pictures Table of Contents About The Project Getting Started Prerequisites Usage Contact Acknowledgments About The Project

Shah Anwaar Khalid 5 Dec 16, 2021
A curated list of papers, code and resources pertaining to image composition

A curated list of resources including papers, datasets, and relevant links pertaining to image composition.

BCMI 391 Dec 30, 2022
This is an API written in python that uses FastAPI. It is a simple API that can detect discord tokens in Images.

Welcome This is an API written in python that uses FastAPI. It is a simple API that can detect discord tokens in Images. Installation There are curren

8 Jul 29, 2022
Textboxes : Image Text Detection Model : python package (tensorflow)

shinTB Abstract A python package for use Textboxes : Image Text Detection Model implemented by tensorflow, cv2 Textboxes Paper Review in Korean (My Bl

Jayne Shin (신재인) 91 Dec 15, 2022
An unofficial implementation of the paper "AutoVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss".

AutoVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss This is an unofficial implementation of AutoVC based on the official one. The reposi

Chien-yu Huang 27 Jun 16, 2022
The official code for the ICCV-2021 paper "Speech Drives Templates: Co-Speech Gesture Synthesis with Learned Templates".

SpeechDrivesTemplates The official repo for the ICCV-2021 paper "Speech Drives Templates: Co-Speech Gesture Synthesis with Learned Templates". [arxiv

Qian Shenhan 53 Dec 23, 2022
Using python libraries to track hands

Python-HandTracking Using python libraries to track hands on a camera Uses cv2 and mediapipe libraries custom hand tracking module PyCharm IDE Final E

Martin Matsudaira 1 Dec 17, 2021
caffe re-implementation of R2CNN: Rotational Region CNN for Orientation Robust Scene Text Detection

R2CNN: Rotational Region CNN for Orientation Robust Scene Text Detection Abstract This is a caffe re-implementation of R2CNN: Rotational Region CNN fo

candler 80 Dec 28, 2021
Face Detection with DLIB

Face Detection with DLIB In this project, we have detected our face with dlib and opencv libraries. Setup This Project Install DLIB & OpenCV You can i

Can 2 Jan 16, 2022
Code for CVPR 2022 paper "Bailando: 3D dance generation via Actor-Critic GPT with Choreographic Memory"

Bailando Code for CVPR 2022 (oral) paper "Bailando: 3D dance generation via Actor-Critic GPT with Choreographic Memory" [Paper] | [Project Page] | [Vi

Li Siyao 237 Dec 29, 2022
Satoshi is a discord bot template in python using discord.py that allow you to track some live crypto prices with your own discord bot.

Satoshi ~ DiscordCryptoBot Satoshi is a simple python discord bot using discord.py that allow you to track your favorites cryptos prices with your own

Théo 2 Sep 15, 2022
Select range and every time the screen changes, OCR is activated.

ASOCR(Auto Screen OCR) Select range and every time you press Space key, OCR is activated. 範囲を選ぶと、あなたがスペースキーを押すたびに、画面が変わる度にOCRが起動します。 usage1: simple OC

1 Feb 13, 2022
The first open-source library that detects the font of a text in a image.

Typefont Typefont is an experimental library that detects the font of a text in a image. Usage Import the main function and invoke it like in the foll

Vasile Pește 1.6k Feb 24, 2022
The open source extract transaction infomation by using OCR.

Transaction OCR Mã nguồn trích xuất thông tin transaction từ file scaned pdf, ở đây tôi lựa chọn tài liệu sao kê công khai của Thuy Tien. Mã nguồn có

Nguyen Xuan Hung 18 Jun 02, 2022
Handwritten Text Recognition (HTR) using TensorFlow 2.x

Handwritten Text Recognition (HTR) system implemented using TensorFlow 2.x and trained on the Bentham/IAM/Rimes/Saint Gall/Washington offline HTR data

Arthur Flôr 160 Dec 21, 2022
Text to QR-CODE

QR CODE GENERATO USING PYTHON Author : RAFIK BOUDALIA. Installation Use the package manager pip to install foobar. pip install pyqrcode Usage from tki

Rafik Boudalia 2 Oct 13, 2021
Convolutional Recurrent Neural Networks(CRNN) for Scene Text Recognition

CRNN_Tensorflow This is a TensorFlow implementation of a Deep Neural Network for scene text recognition. It is mainly based on the paper "An End-to-En

MaybeShewill-CV 1000 Dec 27, 2022