Skip to main content
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. pipeline

Figure : The ocr_service pipeline

ROS nodes used in the ocr_service pipeline

ROS nodeDescription
OCR_CLIENTSends the OCR request to ocr_server and gets the server result.
OCR_SERVERGets the OCR request from ocr_server , and forks the ocr_rosnode according to the request.
OCR_ROSNODESubscribes to the image topic according to the request.

ROS topics used in the ocr_service pipeline

ROS topicMessage typePublished/Subscribed byDescription
/image_topic_name<sensor_msgs.msg.Image>Subscribe to images from other nodesThe image to be processed.
/ocr_image_topic_name<std_msgs.msg.String>Published by ocr-rosnodePublishes 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

  1. 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
    
  2. In terminal 1, launch ocr_server.
    (ssh) ros2 run ocr_service ocr_server
    
  3. 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
    
  4. In terminal 3, run the ocr_client.
    (ssh) ros2 run ocr_service ocr_client imagetest
    
    You will see the following log: result

Build and run ocr_service

  1. 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}
    
  2. 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
    
  3. Run ocr_service on the device with the steps in Run out-of-the-box ocr_service.