This application is used as reference code for developers to show how to use the C++ API and could be used to easily check the accuracy. The application accepts path to a JPEG/PNG/BMP file as input. This is not the recommended way to use the API. We recommend reading the data directly from the camera and feeding the SDK with the uncompressed YUV data without saving it to a file or converting it to RGB.
If you don't want to build this sample and is looking for a quick way to check the accuracy then, try our cloud-based solution at https://www.doubango.org/webapps/mrz/.
This sample is open source and doesn't require registration or license key.
If you don't want to build this sample by yourself then, use the pre-built versions:
- Windows: recognizer.exe under binaries/windows/x86_64
- Linux: recognizer under binaries/linux/x86_64. Built on Ubuntu 18.
- Raspberry Pi: recognizer under binaries/raspbian/armv7l
- Android: check android folder
- iOS: check ios folder
On Windows, the easiest way to try this sample is to navigate to binaries/windows/x86_64 and run binaries/windows/x86_64/recognizer.bat. You can edit this file to use your own images and configuration options.
This sample contains a single C++ source file and is easy to build. The documentation about the C++ API is at https://www.doubango.org/SDKs/mrz/docs/cpp-api.html.
Please check android folder for Android samples.
Please check iOS folder for iOS samples.
You'll need Visual Studio to build the code. The VS project is at recognizer.vcxproj. Open it.
- You will need to change the "Command Arguments" like the below image. Default value:
--image $(ProjectDir)..\..\..\assets\images\Czech_passport_2005_MRZ_orient1_1300x1002.jpg --assets $(ProjectDir)..\..\..\assets - You will need to change the "Environment" variable like the below image. Default value:
PATH=$(VCRedistPaths)%PATH%;$(ProjectDir)..\..\..\binaries\windows\x86_64
You're now ready to build and run the sample.
Next command is a generic GCC command:
cd ultimateMRZ-SDK/samples/c++/recognizer
g++ main.cxx -O3 -I../../../c++ -L../../../binaries/<yourOS>/<yourArch> -lultimate_mrz-sdk -o recognizer
- You've to change
yourOSandyourArchwith the correct values. For example, on Linux x86_64 they would be equal tolinuxandx86_64respectively. - If you're cross compiling then, you'll have to change
g++with the correct triplet. For example, on Android ARM64 the triplet would be equal toaarch64-linux-android-g++.
To build the sample for Raspberry Pi you can either do it on the device itself or cross compile it on Windows, Linux or OSX machines. For more information on how to install the toolchain for cross compilation please check here.
cd ultimateMRZ-SDK/samples/c++/recognizer
arm-linux-gnueabihf-g++ main.cxx -O3 -I../../../c++ -L../../../binaries/raspbian/armv7l -lultimate_mrz-sdk -o recognizer
- On Windows: replace
arm-linux-gnueabihf-g++witharm-linux-gnueabihf-g++.exe - If you're building on the device itself: replace
arm-linux-gnueabihf-g++withg++to use the default GCC
After building the application you can test it on your local machine.
recognizer is a command line application with the following usage:
recognizer \
--image <path-to-image-with-mrzdata-to-process> \
[--assets <path-to-assets-folder>] \
[--backprop <whether-to-enable-backpropagation:true/false>] \
[--vcheck <whether-to-enable-vertical-check:true/false>] \
[--ielcd <whether-to-enable-IELCD:true/false>] \
[--tokenfile <path-to-license-token-file>] \
[--tokendata <base64-license-token-data>]
Options surrounded with [] are optional.
--imagePath to the image(JPEG/PNG/BMP) to process. You can use default image at ../../../assets/images/Czech_passport_2005_MRZ_orient1_1300x1002.jpg.--assetsPath to the assets folder containing the configuration files and models. Default value is the current folder.--backpropWhether to enable backpropagation to detect the MRZ lines. More information at https://www.doubango.org/SDKs/mrz/docs/Detection_techniques.html#backpropagation. Default:truefor x86 CPUs andfalsefor ARM CPUs.--vcheckWhether to enable vertical check to detect +/-90deg rotated images. Default:truefor x86 CPUs andfalsefor ARM CPUs.--ielcdWhether to enable Image Enhancement for Low Contrast Document (IELCD). More information at https://www.doubango.org/SDKs/mrz/docs/IELCD.html#ielcd. Default:truefor x86 CPUs andfalsefor ARM CPUs.--tokenfilePath to the file containing the base64 license token if you have one. If not provided then, the application will act like a trial version. Default: null.--tokendataBase64 license token if you have one. If not provided then, the application will act like a trial version. Default: null.
For example, on Raspberry Pi you may call the recognizer application using the following command:
LD_LIBRARY_PATH=../../../binaries/raspbian/armv7l:$LD_LIBRARY_PATH ./recognizer \
--image ../../../assets/images/Czech_passport_2005_MRZ_orient1_1300x1002.jpg \
--assets ../../../assets \
--backprop false --vcheck false --ielcd false
On Linux x86_64, you may use the next command:
LD_LIBRARY_PATH=../../../binaries/linux/x86_64:$LD_LIBRARY_PATH ./recognizer \
--image ../../../assets/images/Czech_passport_2005_MRZ_orient1_1300x1002.jpg \
--assets ../../../assets \
--backprop true --vcheck true --ielcd true
On Windows x86_64, you may use the next command:
recognizer.exe ^
--image ../../../assets/images/Czech_passport_2005_MRZ_orient1_1300x1002.jpg ^
--assets ../../../assets ^
--backprop true --vcheck true --ielcd true
Please note that if you're cross compiling the application then you've to make sure to copy the application and both the assets and binaries folders to the target device.
