The ocr_service sample application enables a service that provides the Optical Character Recognition (OCR) function.
It captures the image topic from the ROS system and publishes the result with the ocr_topic.
Pipeline flow for ocr_service
This figure shows the basic messages and data transfer channels, with the relevant client/server and ROS node.
Figure : The ocr_service pipeline
ROS nodes used in the ocr_service pipeline
| ROS node | Description |
|---|
OCR_CLIENT | Sends the OCR request to ocr_server and gets the server result. |
OCR_SERVER | Gets the OCR request from ocr_server , and forks the ocr_rosnode according to the request. |
OCR_ROSNODE | Subscribes to the image topic according to the request. |
ROS topics used in the ocr_service pipeline
| ROS topic | Message type | Published/Subscribed by | Description |
|---|
/image_topic_name | <sensor_msgs.msg.Image> | Subscribe to images from other nodes | The image to be processed. |
/ocr_image_topic_name | <std_msgs.msg.String> | Published by ocr-rosnode | Publishes the OCR result. |
Prerequisites
You have Set up the device according to Set up the environment for running sample applications.
Run out-of-the-box ocr_service
-
Start three terminals, and run the following commands in each terminal to set up QIR SDK and ROS2 environment on the device.
Value range of
ROS_DOMAIN_ID: [0, 232]
ssh root@[ip-addr]
(ssh) source /usr/share/qirp-setup.sh
(ssh) export ROS_DOMAIN_ID=xx
-
In terminal 1, launch
ocr_server.
(ssh) ros2 run ocr_service ocr_server
-
In terminal 2, push an image to the device and run the
ocr_testnode.
scp qirp-samples/platform/ocr_service/scripts/digital_720p.png root@[ip-addr]:/opt
(ssh) ros2 run ocr_service ocr_testnode --topic imagetest --picture /opt/digital_720p.png
-
In terminal 3, run the
ocr_client.
(ssh) ros2 run ocr_service ocr_client imagetest
You will see the following log:
Build and run ocr_service
- Build
ocr_msg and ocr_service provided by the QIR SDK on the host.
cd <qirp_decompressed_workspace>
source setup.sh
cd qirp-samples/platform/ocr_service
colcon build --merge-install --cmake-args ${CMAKE_ARGS}
- Push
ocr_msg and ocr_service to the device.
cd qirp-samples/platform/ocr_service/install
tar -zcvf ocr_service.tar.gz lib/ share/
ssh root@[ip-addr]
scp ocr_service.tar.gz root@[ip-addr]:/opt
ssh ssh root@[ip-addr]
(ssh) tar --no-overwrite-dir --no-same-owner -zxf /opt/ocr_service.tar.gz -C /usr/ros/jazzy/
scp qirp-samples/platform/ocr_service/scripts/digital_720p.png root@[ip-addr]:/opt
- Run
ocr_service on the device with the steps in Run out-of-the-box ocr_service.