Skip to main content

Clever, simple, and intuitive wrapper functionalities for OCRing specific textual materials

Project description

OCRed

ocred

CI Documentation Status pre-commit.ci status codecov discussion

Python Versions Package Version PyPI Downloads License black

All Contributors

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)
# 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/img.jpg")

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

# remove noise
preprocessed.remove_noise()

# thicken the ink to draw Hough lines better
preprocessed.thicken_font()

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

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

# remove noise again
preprocessed = Preprocessor(rotated)
preprocessed.remove_noise()

cv2.imwrite("preprocessed.png", preprocessed.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.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Saransh

💻 🐛 🖋 📖 🎨 💡 🤔 🚇 🚧 📦 👀 ⚠️ 🧑‍🏫

Priyanshi Goel

🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

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.4.0.tar.gz (4.6 MB view details)

Uploaded Source

Built Distribution

ocred-0.4.0-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ocred-0.4.0.tar.gz
Algorithm Hash digest
SHA256 48cd3f2bc260d74937842b848f9e70c2c2b01d740f866c36251bcf7fb7d46546
MD5 5f6cab1c2d32199ed8bc9b3614d57bc3
BLAKE2b-256 8cd6db8db2bf80750fbda6469615d401105bd637e219323b6ca02bd3e04e621c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ocred-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for ocred-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b700c31ae084460eedcd72765c12e4ffabd3ccd319e73bf9c9db6e38b619588
MD5 83a72a3cc7a082ec2b00ac0411aa8941
BLAKE2b-256 5721bec74ffd255f4ad07d2704082b5fb2f6043ea613f57b1bc592719dcb0e73

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