Skip to main content

EasyOCR without pytorch

Project description

Torchless EasyOCR

This package is EasyOCR-based optical character recognition. Unlike EasyOCR, the package uses a pre-saved with onnx language models, so it doesn't need a 1-2 Gb pytorch dependency. This is particularly useful for developing and packaging light-weight applications that utilize text recognition.

Comparison for virtual env size

  • 272 MB torchfree_ocr with dependencies
  • 1.52 GB easyocr with dependencies
  • 4.79 GB easyocr with dependencies + GPU enabled

More importantly, packed python .exe loads and runs much faster with torchfree_ocr

requirements.txt

opencv-python-headless
numpy
onnxruntime
Pillow
python-bidi

Limitations

There is no GPU CUDA support.

Performance of torchfree_ocr vs easyocr

In terms of recognition, there is no visible recognition quality difference between torchfree_ocr and easyocr. In terms of speed torchfree_ocr works a bit faster than easyocr in CPU mode (~30% faster). Obviously, easyocr generally runs much faster in GPU mode, which torchfree_ocr doesn't support.

Examples

example

example2

example3

Installation

Install using pip

For the latest release:

pip install torchfree_ocr

or

pip install torchfree-ocr

Usage

import torchfree_ocr
reader = torchfree_ocr.Reader(["en"]) # Supports all EasyOCR languages
result = reader.readtext('english.png')

The output will be in a list format, each item represents a bounding box, the text detected and confident level, respectively.

[([[231, 32], [672, 32], [672, 64], [231, 64]], 'Reduce your risk of coronavirus infection:', 0.8413621448628567), 
 ([[326, 98], [598, 98], [598, 124], [326, 124]], 'Clean hands with soap and water', 0.9633979603853523), 
 ([[328, 124], [540, 124], [540, 148], [328, 148]], 'or alcohol-based hand rub', 0.802668636048309), 
 ([[248, 170], [595, 170], [595, 196], [248, 196]], 'Cover nose and mouth when coughing and', 0.9529594602295661), 
 ([[248, 196], [546, 196], [546, 222], [248, 222]], 'sneezing with tissue or flexed elbow', 0.8406205896147358), 
 ([[320, 240], [624, 240], [624, 266], [320, 266]], 'Avoid close contact with anyone with', 0.8602271367787114), 
 ([[318, 265], [528, 265], [528, 293], [318, 293]], 'cold or flu-like symptoms', 0.9378307488433589), 
 ([[248, 322], [510, 322], [510, 348], [248, 348]], 'Thoroughly cook meat and eggs', 0.7159722535422908), 
 ([[332, 370], [640, 370], [640, 396], [332, 396]], 'No unprotected contact with live wild', 0.8346977728209518), 
 ([[334, 396], [464, 396], [464, 420], [334, 420]], 'or farm animals', 0.7179850171130348), 
 ([[595, 427], [683, 427], [683, 447], [595, 447]], 'World Health', 0.9979501800152029), 
 ([[597, 445], [685, 445], [685, 463], [597, 463]], 'Organization', 0.9977550970521537)]

Note 1: Instead of the filepath english.png, 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.

Note 2: The line reader = easyocr.Reader(["en"]) is for loading a model into memory. It takes some time but it needs to be run only once.

You can also set detail=0 for simpler output.

reader.readtext('english.png', detail = 0)

Result:

['Reduce your risk of coronavirus infection:', 'Clean hands with soap and water', 'or alcohol-based hand rub', 'Cover nose and mouth when coughing and', 'sneezing with tissue or flexed elbow', 'Avoid close contact with anyone with', 'cold or flu-like symptoms', 'Thoroughly cook meat and eggs', 'No unprotected contact with live wild', 'or farm animals', 'World Health', 'Organization']

Averall, usage is the same as with EasyOCR, except Reader in this package only has lang_list and recognizer=True parameters.

Usage for EasyOCR can be found in their tutorial and API Documentation.

Run on command line

$ torchfree_ocr -l en -f english.png --detail=1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchfree_ocr-1.1.0.tar.gz (67.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

torchfree_ocr-1.1.0-py3-none-any.whl (65.2 kB view details)

Uploaded Python 3

File details

Details for the file torchfree_ocr-1.1.0.tar.gz.

File metadata

  • Download URL: torchfree_ocr-1.1.0.tar.gz
  • Upload date:
  • Size: 67.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for torchfree_ocr-1.1.0.tar.gz
Algorithm Hash digest
SHA256 35a9d0244352f54e192a584a6a6300a814fab1f6f4a1c6f1bd0cc8e84cd1f31d
MD5 1d6f5106c6e7edc2b52c5a0c04172d14
BLAKE2b-256 3427fd7cb269e96179f3a4186d5af728426274a3592b66372c94a803bef8c018

See more details on using hashes here.

File details

Details for the file torchfree_ocr-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: torchfree_ocr-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 65.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for torchfree_ocr-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a58c0f54c7a5c8e69d46221524366ed04c102b955b68763b6a0e188c66bbd730
MD5 57450a032ac6a4ac048d326b3cca633b
BLAKE2b-256 5f208c55fde870cd3a02e05e7ed74ac163581da46496ed984019797746484ca4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page