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
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 into 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 develop the OCR solution.
Prepare the hardwares
Openncc NCC Edge AI camera
Raspberry PI 4B
5v Power adapter
Connecting OpenNCC and Raspberry Pi
Connect raspberry PI 4 Model B and OpenNCC with USB3.0
Configuring the raspberry PI
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 repo onto 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.
$ cd openncc_hub/ncc_ocr/ inference_lite_lib.armlinux.armv7hf/demo/cxx/ocr
$ sudo make clean
$ sudo make
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
We point the camera at the target's text,could see the recognition results with the corresponding location in the video stream.
You can also just run the compiled program directly. Enter path Bin run the script:
$ cd openncc_hub/ncc_ocr/Bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib: ‘your_bin_dir’
If the opencv library version mismatch occurs, you need to go to debug path /inference_lite_lib.armlinux.armv7hf/demo/cxx/ocr/debug, then copy ‘ocr_db_crnn’ file to the Bin directory, and run ‘./run.sh ‘again.