Skip to main content

OCR wrapper library for direct users (not researchers)

Project description

OCRed

CI Documentation Status pre-commit.ci status codecov discussion black GitHub

OCRed (pronounced as OCR'd) provides clever, simple, and intuitive wrapper functionalities for OCRing specific text material. You don't want to learn OCR or the libraries that will help you perform OCR, but you need to OCR something? This friendly neighborhood library hides all of that stuff under simple functions like ocr_meaningful_text().

In other words, instead of manual preprocessing, looking for an OCR library, learning the library, then finally getting what you were looking for, use OCRed instead.

On the other hand, if you want to learn OCR and use the famous OCR libraries by yourself, then this library is not for you. But, it still can be a good start for your journey!

Structure

OCR is performed using the OCR class and preprocessing of an image is performed using the Preprocessor class. All the details are available in the documentation.

Installation

  1. Install Tesseract for your OS and add it to PATH

The installation guide is available here

  1. Use pip magic

OCRed uses modern Python packaging and can be installed using pip -

python -m pip install ocred

Usage example

# OCRing a book
import ocred

ocr = ocred.OCR(
    False, # is_scanned -> to preprocess the image
    "path/to/an/image", # path
)
ocr.ocr_meaningful_text(save_output=True)
ocr.text_to_speech()
# OCRing a signboard
import ocred

ocr = ocred.OCR(
    True, # is_scanned -> sign boards don't need to be preprocessed
    "path/to/an/image", # path
)
extracted_text = ocr.ocr_sparse_text()
print(extracted_text)
# OCRing an invoice
import ocred

ocr = ocred.OCR(
    True, # is_scanned -> invoices don't need to be preprocessed
    "path/to/an/image", # path
)
extracted_text = ocr.ocr_sparse_text()
print(extracted_text)

extraxted_info = ocr.process_extracted_text_from_invoice()
print(extraxted_info)
# manually preprocessing an image
import cv2
from scipy import ndimage
from ocred import Preprocessor

preprocessed = Preprocessor("path/to/image")

# scan the image and copy the scanned image
scanned = preprocessed.scan(inplace=True)
orig = scanned.copy()

# remove noise
noise_free = preprocessed.remove_noise(
    inplace=True, overriden_image=scanned
)

# thicken the ink to draw Hough lines better
thickened = preprocessed.thicken_font(
    inplace=True, overriden_image=noise_free
)

# calculate the median angle of all the Hough lines
_, median_angle = preprocessed.rotate(
    inplace=True, overriden_image=thickened
)

# rotate the original scanned image
rotated = ndimage.rotate(orig, median_angle)

# remove noise again
final_img = preprocessed.remove_noise(inplace=True, overriden_image=rotated)

cv2.imwrite("preprocessed.png", final_img)

Testing

The tests are present in the tests directory. New tests must be added with any additional features.

To run the tests -

pytest

Some examples

roof-500x500 OCR

जयपुर JAIPUR 321 आगरा AGRA 554 श्री गगांनगर 242 SRIGANGANAGAR JODHPUR 261 जोधपुर

Page OCR

Preface  This book deals with computer architecture as well as computer organization and design. Computer architecture is concerned with the structure and behavior of the various functional modules of the computer and how they interact to provide the processing needs of the user. Computer organization is concerned with the way the hardware components are connected together to form a computer system. Computer design is concerned with the development of the hardware for the computer taking into consideration a given set of specifications. The book provides the basic knowledge necessary to understand the hardware operation of digital computers and covers the three subjects associated with computer hardware. Chapters 1 through 4 present the various digital components used in the organization and design of digital computers. Chapters 5 through 7 show the detailed steps that a designer must go through in order  to design an elementary basic computer. Chapters 8 through 10 deal with the organization and architecture of the central processing unit. Chapters 11 and 12 present the organization and architecture of input-output and memory. Chapter 13 introduces the concept of multiprocessing. The plan of the book is to present the simpler material first and introduce the more advanced subjects later, Thus, the first seven chapters cover material needed for the basic understanding of computer organization, design, and programming of a simple digital computer. The last six chapters present the organization and architecture of the separate functional units of the digital computer with an emphasis ‘on more advanced topics.  ‘The material in the third edition is organized  in the same manner as in the second edition and many of the features remain the same. The third edition, however, offers several improvements over the second edition. All chapters  ‘two (6 and 10) have been completely revised to bring the material up to date and to clarify the presentation. Two new chapters were added: chapter 9 on pipeline and vector processing, and chapter 13 on multiprocessors. Two sections deal with the reduced instruction set computer (RISC). Chapter 5 has been revised completely to simplify and clarify the design of the basic computer. New problems have been formulated for eleven of the thirteen chapters.  ‘The physical organization of a particular computer including its registers

CosmosOne preprocessed OCR

organisms of our globe, including hydrogen, sodiurn, magnesiuia, and iron. May it not be thai, at least, the brighter stars are like our Sun, the upholding and energizing centres of systems of worlds, adapted to be the abode of living beings?  — William Hugeins, 1865  All my life I have wondered about the possibility of life elsewhere. What would it be like? Of what would it be made? All living things on our planet are constructed of organic molecules ~ complex microscopic architectures in which the carbon atom plays a central role. There was once a time before life, when the Earth was barren and utterly desolate. Our world is now overflowing with life. How did it come about? How, in the absence of life, were carbon-based organic molecules made? How did the first living things arise? How did life evolve to produce beings as elaborate and complex as we, able to explore the mystery of Our Own origins? And on ihe countless other planets that many circle other suns, is there life also? Is extraterrestrial life, if it exists, based on the same organic molecules as life on Earth? Do the beings of other worlds look much like life on Earth? Or are they stunningly different — other adaptations to other environments? What else is possible? The nature of life on Earth and the search for life elsewhere are two sides of the sarne question — the search for who we are.  In the great dark between the stars there are clouds of gas and dust and organic matter. Dozens of different kinds of organic molecules have been found there by radio telescopes. The abundance of these molecules suggests that the stuff of life is everywhere. Perhaps the origin and evolution of life is, given enough time, a cosmic inevitability. On some of the billions of planets in the Milky Way Galaxy, life may never arise. On others, it May arise and die out, or never evolve beyond its simplest forms. And on some small fraction of worlds there may 35

Contributing

If you want to contribute to OCRed (thanks!), please have a look at our Contributing Guide.

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

ocred-0.1.0.tar.gz (4.6 MB view details)

Uploaded Source

Built Distribution

ocred-0.1.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file ocred-0.1.0.tar.gz.

File metadata

  • Download URL: ocred-0.1.0.tar.gz
  • Upload date:
  • Size: 4.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for ocred-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0dff0fad3784fef7824ecc6cdaed9daefd2f1157f86b62979016f343a8762702
MD5 058f49531fe204aaaf28f65ea456db87
BLAKE2b-256 d8aa1ee216e6e4d80947fa7f6529921dca483531443d035fbf2bec092d8de530

See more details on using hashes here.

File details

Details for the file ocred-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ocred-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for ocred-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 56b4b19077da276c98925166ca5bd9794d6555b90118d74cf0db375af2e02ad5
MD5 f897afd891634be7bd088c28e0bd9789
BLAKE2b-256 6eb85ea7879ee62bdd4433d421ef0bbb5f0761ac869627427e34aeacac9a0da3

See more details on using hashes here.

Supported by

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