Optical character recognition or optical character reader (OCR) is the electronic or mechanical conversion of images of typed, handwritten, or printed text into machine-encoded text, whether from a scanned document, a photo of a document, a scene-photo (for example the text on signs and billboards in a landscape photo) or from subtitle text superimposed on an image (for example: from a television broadcast).
It is a common method of digitizing printed texts so that they can be electronically edited, searched, stored more compactly, displayed on-line, and used in machine processes such as cognitive computing, machine translation, (extracted) text-to-speech, key data, and text mining. OCR is a field of research in pattern recognition, artificial intelligence, and computer vision.
A good OCR system requires the following:
- Capable of agile iterative algorithm models, including model training for new scenarios and online deployment of models. Reduce the cost of continuous deployment
- The lens can be changed to suit the needs of various scenes
- The complete camera system, supporting global exposure, different resolution, and frame rate, to facilitate deployment
- Open source system, easy to develop and integrate their own applications
The combination of OpenNCC and Raspberry Pi is selected to realize the OCR system, which has the above advantages.The OpenNCC OCR solution is using PaddleOCR and Intel OpenVINO. PaddleOCR aims to create multilingual, awesome, leading, and practical OCR tools that help users train better models and apply them to practice.
We designed the load reasonably, deployed some inference models on OpenNCC and Raspberry PI respectively, and converted the PaddleOCR model into OpenVINO support model through ONNX, which was deployed to run on OpenNCC. Of course, considering the good support of Raspberry Pi with OpenCV, we deployed part of image preprocessing and model inference on Raspberry PI to achieve best practices.
Now, let's start developing the OCR solution.
Prepare the hardware- Openncc NCCEdge AI camera
- Raspberry Pi 4B
- USB cable
- 5v Power adapter
- Ethernet cable
- Connect raspberry Pi 4 Model B and OpenNCC with USB3.0
The following commands are operated on the board of Raspberry Pi. Need to connect raspberry with a monitor, mouse, and keyboard.
- Install libusb, OpenCV and FFmpeg on Raspberry Pi
$ sudo apt-get install libopencv-dev -y
$ sudo apt-get install libusb-dev -y
$ sudo apt-get install libusb-1.0.0-dev -y
$ sudo apt-get install ffmpeg -y
- If you want to use python
$ sudo apt-get install python3-opencv -y
- Clone OpenNCC OCR repoonto Raspberry Pi, it used PaddleOCR based on Paddle-Lite platform
$ git clone https://gitee.com/eyecloud/openncc_hub.git
- Build the demo
$ cd openncc_hub/ncc_ocr/mainApp
$ sudo make clean
$ sudo make
Run the main application to deploy the first AI-model to the OpenNCC camera, and capture streaming to Raspberry Pi.
$ cd openncc_hub/ncc_ocr/mainApp/bin
$ sudo./mainApp
Enter inference_lite_lib.armlinux.armv7hf/demo/cxx/ocr, to build the PaddleOCR thread application.
- Enter inference_lite_lib.armlinux.armv7hf/demo/cxx/ocr, to build the PaddleOCR thread application.
$ cd openncc_hub/ncc_ocr/ inference_lite_lib.armlinux.armv7hf/demo/cxx/ocr
$ sudo make clean
$ sudo make
After successful built it, type:
- After successful built it, type:
$ cd openncc_hub/ncc_ocr/ inference_lite_lib.armlinux.armv7hf/demo/cxx/ocr/debug
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib: ‘your_debug_dir
$./ocr_db_crnn
We point the camera at the target's text, could see the recognition results with the corresponding location in the video stream.
Comments