Show more

Read more

View product

View report

Drag

Carmen® ADR
Code Recognition

Superiorly Accurate Dangerous Goods Code
Recognition with Carmen® ADR Software Library

hazmat-imo-code-recognition-carmen-adr-product-image-1

Complete ANPR/LPR & Hazmat recognition
for enhanced safety

Carmen® ADR is a critical tool for enhancing safety in the transportation of hazardous materials. This powerful software delivers unmatched accuracy in recognizing ADR and IMDG codes, ensuring quick identification of dangerous goods. With seamless integration capabilities, Carmen® ADR empowers you to streamline your operations and empower first responders with critical information, ultimately creating a safer environment for everyone.

adr hazmat imo code recognition block image 1

Global Recognition,
Simplified Integration

Carmen® ADR transcends geographical limitations. Our software library offers comprehensive support for a wide range of dangerous goods symbols, including ADR, E-ADR, HIN, KEMLER, and IMO codes. This ensures uninterrupted operation regardless of location or the specific labeling system used, making it a truly global solution for dangerous goods identification.
Integration is straightforward. The software features a user-friendly API, allowing for easy integration into your existing infrastructure. This minimizes disruption to your workflow and streamlines the adoption of Carmen® ADR’s powerful recognition capabilities.

adr hazmat imo code recognition block image 2

Advanced Features for
Optimized Performance

Carmen® ADR goes beyond basic code recognition. Experience features like confidence ratings for code recognition, runtime code filtering to minimize false positives, and selection of the best image from a sequence for ultimate accuracy. Carmen® ADR also provides customizable output formats and supports multiple operating systems, ensuring a seamless integration experience.

These advanced features empower you to leverage Carmen® ADR’s full potential, maximizing accuracy, efficiency, and overall value.

Highlighted
features

carmen adr hazmat imo dangerous goods code recognition software features - supported codes

Supported
Codes

ADR, eADR, HIN, KEMLER, and IMO (IMDG) codes recognized.

carmen adr hazmat imo dangerous goods code recognition software features - tried and tested

Tried
& Tested

Used in thousands of systems worldwide.

carmen adr hazmat imo dangerous goods code recognition software features - scalability

Scalability

From small through medium, to large and complex systems.

carmen adr hazmat imo dangerous goods code recognition software features - image-based code recognition

Image-based
Code Recognition

SDK supports image processing

carmen adr hazmat imo dangerous goods code recognition software features - major OP systems supported

Major OP Systems
Supported

Runs on Windows and Linux.

carmen adr hazmat imo dangerous goods code recognition software features - regular engine updates

Regular
Engine Updates

Four updates released per year.

FAQ

  • What types of dangerous goods codes does Carmen® ADR recognize?

    Carmen® ADR recognizes a wide range of dangerous goods codes, including ADR, eADR, HIN, KEMLER, and IMO (IMDG) codes.

  • What are the system requirements for running Carmen® ADR?

    The minimum system requirements for Carmen® ADR are a 2 GHz CPU, 1 GB RAM, and 1 GB HDD. It supports both Windows (64-bit) and Linux (32/64-bit) operating systems​.

  • How does Carmen® ADR handle different image formats for code recognition?

    Carmen® ADR can process still images from files or memory in various formats such as BMP, PNG, JPEG, and RAW. The output includes the recognized ADR data, confidence levels, and the location of each code on the image.

  • What are the integration options for Carmen® ADR with existing systems?

    Carmen® ADR features a user-friendly API, supporting programming languages such as C/C++, C#, Visual Basic .NET, and Java for Windows, and C/C++ and Java for Linux. This makes integration straightforward and efficient​.

  • How frequently is Carmen® ADR updated?

    Carmen® ADR receives four updates per year to ensure it stays current with new standards and technologies, enhancing its accuracy and performance.

  • What additional tools are provided for easy integration and development?

    Carmen® ADR includes development libraries (.dll, .so files), a demo application, sample codes for each programming language, and a neural network controller. Comprehensive digital documentation is also provided to facilitate integration.

Most common
applications

Carmen® ADR’s exceptional accuracy and comprehensive functionality make it a valuable tool for various applications focused on the safe and efficient identification of hazardous materials. Here are just a few of the most common uses:

Traffic Monitoring

Border Security

Logistics & Supply Chain Management

Waste Management

Chemical & Manufacturing Industries

Emergency Response

Sample Codes

  • C

    /** \file ********************************************************************* * * cmanpr01 – CMANPR sample program * * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http://www.adaptiverecognition.com) ******************************************************************************/ /** * Show an ANPR process * * Purpose: * At the beginning, the application is checking if everything is all right with the gxsd.dat syntax, if not, the execution will stop and will notify the user about the problem. * Shows how to do an ANPR on an image and print out the result in text */ #include “gxsdldr.c” #include “gximage.h” #include “cmanpr.h” #include “gxproperty.h” //—————————————————————————— // If an error occurred it displays the error and terminates the program void term_if_err(int st) { int err_code; wchar_t err_str[256]; if(st) return; // No error occurred // Displays error code and description err_str[(sizeof(err_str)/sizeof(wchar_t))-1] = 0; gx_geterror(&err_code, err_str, (sizeof(err_str)/sizeof(wchar_t))-1); fprintf(stderr, “GX error (%x) occurred: %ls\n”, err_code, err_str); // Terminates the program exit(1); } //—————————————————————————— int main(void) { struct gxHANDLE anprhandle, imagehandle; struct gxIMAGE *image; struct cmNP *anprresult; struct gxHANDLE prophandle; char propstat[512] = “”; wchar_t engname[256]=L””; int st; int b_islic; /** Open the container reader */ st = gx_openmodulea(&prophandle, “gxproperty”, “default”); term_if_err(st); if (!gx_ispropertiesvalid(prophandle, propstat, 512)) { printf(“The gxsd.dat file is invalid.\n%s\n”, propstat); exit(1); } printf(“The syntax of the gxsd.dat file is fine!\n\n”); // Opens the ANPR module with default properties st = gx_openmodule(&anprhandle, L”cmanpr”, L”default”); term_if_err(st); // Opens the image module and allocates the image structure st = gx_openmodule(&imagehandle, L”gximage”, L”default”); term_if_err(st); st = gx_allocimage(imagehandle, &image); term_if_err(st); // Gets the name of the default engine st = gx_getmoduleproperty(anprhandle,L”anprname”,engname,256); term_if_err(st); printf(“Engine: ‘%ls’\n\n”, engname); // Checks the licenses for the default engine b_islic = 0; st = cm_findlicenses4engine(anprhandle,0,0,&b_islic,0,0); term_if_err(st); if (!b_islic) { printf(“Cannot find licenses for the current engine!!!\n”); exit(1); } // Loads the sample image st = gx_loadimage(imagehandle, image, L”../../../data/plate.jpg”, GX_UNDEF); term_if_err(st); // Finds the first license plate anprresult = 0; st = cm_findfirst(anprhandle, image, &anprresult); term_if_err(st); if(anprresult) { char cc[256]=””; // Get short country code st = cm_getcountrycode(anprhandle,anprresult->type,(int)CCT_COUNTRY_SHORT,cc,sizeof(cc)); term_if_err(st); //Displays the result, Country code and type printf(“Plate text: ‘%s’; Country code: ‘%s’ (%i)\n”, anprresult->text, cc[0]?cc:”No plate type”, anprresult->type); // Frees up the result st = gx_globalfree(anprresult); term_if_err(st); } else { // No plate printf(“No license plate found\n”); } // Frees up the resources st = gx_unrefimage(imagehandle, image); term_if_err(st); st = gx_unrefhandle(&imagehandle); term_if_err(st); st = gx_unrefhandle(&anprhandle); term_if_err(st); return 0; } //——————————————————————————

  • C++

    /** \file ********************************************************************* * * cmanpr01 – CMANPR sample program * * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http://www.adaptiverecognition.com) ******************************************************************************/ /** * Show an ANPR process * * Purpose: * At the beginning, the application is checking if everything is all right with the gxsd.dat syntax, if not, the execution will stop and will notify the user about the problem. * Shows how to do an ANPR on an image and print out the result in text */ #include “gxsdldr.cpp” #include “gximage.h” #include “cmanpr.h” #include “gxproperty.h” //—————————————————————————— using namespace std; using namespace gx; using namespace cm; //—————————————————————————— int main(void) { try { gxProperty gxProperty; gxProperty.IsPropertiesValid(); cout << “The syntax of the gxsd.dat file is fine!\n” << endl; // Creates the ANPR object cmAnpr anpr(“default”); // Creates the image object gxImage image(“default”); // Gets the name of the default engine wcout << L”Engine: ‘” << anpr.GetProperty(L”anprname”) << L”‘\n\n”; // Checks the licenses for the default engine if (!anpr.CheckLicenses4Engine(L””,0)) { wcout << L”Cannot find licenses for the current engine!!!\n”; return 1; } // Loads the sample image image.Load(“../../../data/plate.jpg”); // Finds the first license plate if(anpr.FindFirst(image)) { // Get short country code gxOutStr cc = anpr.GetCountryCode(anpr.GetType(),(int)CCT_COUNTRY_SHORT); //Displays the result, Country code and type wcout << L”Plate text: ‘” << anpr.GetText() << L”‘; Country code: ‘” << (cc.length()>0?cc: L”No plate type”) << L”‘ (” << anpr.GetType() << L”)\n”; } else { wcout << L”No license plate found\n”; } } catch(gxError &e) { // Displays error code and description wcerr << L”GX error (” << e.GetErrorCode() << “) occurred: ” << e.GetErrorString() << L”\n”; // Terminates the program return 1; } return 0; } //——————————————————————————

  • C#

    /** \file ********************************************************************* * * cmanpr01 – CMANPR sample program * * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http://www.adaptiverecognition.com) ******************************************************************************/ /** * Show an ANPR process * * Purpose: * At the beginning, the application is checking if everything is all right with the gxsd.dat syntax, if not, the execution will stop and will notify the user about the problem. * Shows how to do an ANPR on an image and print out the result in text */ using System; using gx; using cm; namespace cmanpr01 { class MainClass { public static void Main(string[] args) { try { gxProperty gxProperty = new gxProperty(); gxProperty.IsPropertiesValid(); Console.WriteLine(“The syntax of the gxsd.dat file is fine!\n”); // Creates the ANPR object cmAnpr anpr = new cmAnpr(“eur”); // Creates the image object gxImage image = new gxImage(“default”); // Gets the name of the default engine Console.WriteLine(“Engine: ‘{0}'”, anpr.GetProperty(“anprname”)); Console.WriteLine(); // Checks the licenses for the default engine if (!anpr.CheckLicenses4Engine(“”, 0)) { Console.WriteLine(“Cannot find licenses for the current engine!!!”); return; } //Console.ReadKey(); // Loads the sample image image.Load(“../../../../../../data/plate.jpg”); // Finds the first license plate if (anpr.FindFirst(image)) { // Get short country code String cc = anpr.GetCountryCode(anpr.GetType(), (int)CC_TYPE.CCT_COUNTRY_SHORT); //Displays the result, Country code and type Console.WriteLine(“Plate text: ‘{0}’; Country code: ‘{1}’ ({2})”, anpr.GetText(), cc.Length > 0 ? cc : “No plate type”, anpr.GetType()); } else { Console.WriteLine(“No license plate found”); } Console.ReadKey(); } catch(gxException) { Console.Error.WriteLine(“GX error (” + gxSystem.GetErrorCode() + “) occured: ” + gxSystem.GetErrorString()); Console.ReadKey(); } } } }

  • Java

    /** \file ********************************************************************* * * cmanpr01 – CMANPR sample program * * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http://www.adaptiverecognition.com) ******************************************************************************/ /** * Show an ANPR process * * Purpose: * At the beginning, the application is checking if everything is all right with the gxsd.dat syntax, if not, the execution will stop and will notify the user about the problem. * Shows how to do an ANPR on an image and print out the result in text */ import com.adaptiverecognition.gx.*; import com.adaptiverecognition.cm.*; public class cmanpr01 { static { try { System.loadLibrary(“jgx”); System.loadLibrary(“jcmanpr”); } catch(UnsatisfiedLinkError e) { System.err.println(“Native code library failed to load.” + e); System.exit(1); } } public static void main(String argv[]) { try { gxProperty gxProperty = new gxProperty(); gxProperty.IsPropertiesValid(); System.out.println(“The syntax of the gxsd.dat file is fine!\n”); // Creates the ANPR object cmAnpr anpr = new cmAnpr(“default”); // Creates the image object gxImage image = new gxImage(“default”); //Gets the name of the default engine System.out.println(“Engine: ‘” + anpr.GetProperty(“anprname”) + “‘”); System.out.println(); // Checks the licenses for the default engine if (!anpr.CheckLicenses4Engine(“”,0)) { System.out.println(“Cannot find licenses for the current engine!!!\n”); System.exit(1); } // Loads the sample image image.Load(“../../data/plate.jpg”); // Finds the first license plate if(anpr.FindFirst(image)) { // Get short country code String cc = anpr.GetCountryCode(anpr.GetType(),jcmanprConstants.CCT_COUNTRY_SHORT); //Displays the result, Country code and type System.out.println(“Plate text: ‘”+anpr.GetText()+”‘; Country code: ‘” + (cc.length()>0?cc: “No plate type”) + “‘ (” + anpr.GetType() + “)”); } else { System.out.println(“No license plate found”); } // Frees up resources anpr.delete(); image.delete(); } catch(RuntimeException e) { System.err.println(“GX error (” + String.format(“0x%08x”,gxSystem.GetErrorCode()) + “) occured: ” + gxSystem.GetErrorString()); System.exit(1); } } }

  • Visual Basic

    ‘/** \file ********************************************************************* ‘ * ‘ * cmanpr01 – CMANPR sample program ‘ * ‘ * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http://www.adaptiverecognition.com) ‘ ******************************************************************************/ ‘ ‘/** ‘ * Show an ANPR process ‘ * ‘ * Purpose: ‘ * At the beginning, the application is checking if everything is all right with the gxsd.dat syntax, if not, the execution will stop and will notify the user about the problem. ‘ * Shows how to do an ANPR on an image and print out the result in text ‘ */ Imports System Imports gx Imports cm Module Main Sub Main() Try Dim gxProperty As gxProperty = New gxProperty gxProperty.IsPropertiesValid() Console.WriteLine(“The syntax of the gxsd.dat file is fine!”) Console.WriteLine() ‘ Creates the ANPR object Dim anpr As cmAnpr = New cmAnpr(“default”) ‘ Creates the image object Dim image As gxImage = New gxImage(“default”) ‘ Gets the name of the default engine Console.WriteLine(“Engine: ‘{0}'”, anpr.GetProperty(“anprname”)) Console.WriteLine() ‘ Checks the licenses for the default engine If Not anpr.CheckLicenses4Engine(“”, 0) Then Console.WriteLine(“Cannot find licenses for the current engine!!!”) Exit Sub End If ‘ Loads the sample image image.Load(“../../../../../../data/plate.jpg”) ‘ Finds the first license plate If anpr.FindFirst(image) Then ‘ Get short country code Dim cc As String cc = anpr.GetCountryCode(anpr.GetType(), CC_TYPE.CCT_COUNTRY_SHORT) If cc.Length = 0 Then cc = “No plate type” ‘ Displays the result, Country code and type Console.WriteLine(“Plate text: ‘{0}’; Country code: ‘{1}’ ({2})”, anpr.GetText(), cc, anpr.GetType()) Else Console.WriteLine(“No license plate found”) End If Console.ReadKey() Catch ex As gxException Console.Error.WriteLine(“GX error (” + gxSystem.GetErrorCode().ToString() + “) occured: ” + gxSystem.GetErrorString()) Console.ReadKey() End Try End Sub End Module

Licesing Guidelines Based on
Processing Power and Requirements

Single License (Image/Sec)
Dual License (Image/Sec)
Quad License (Image/Sec)
i3 processor

1 - 5

2 - 10

4 - 20

i5 processor

3 - 7

6 - 14

12 - 28

i7 processor

5 - 10

10 - 20

20 - 40

Product documentation
and other resources

Contact

Get more information or a quote

Our sales & product experts are here to help you. Contact us or find an affiliate near your location.

Reference projects
for this product category Carmen® ADR Code Recognition

i-77-interstate-77-highway-usa-logo
ascendi
Herrentunnel
Oresund_ Bridge
Adaptive Recognition horizontal logo 2024
OUR REFERENCES

Go beyond the claims, see the proof.
Explore our reference projects and
case studies for tangible evidence of
how Adaptive Recognition delivers
exceptional outcomes

OUR RESOURCES

By those who see challenges as opportunities and rewrite the definition of impossible every day
Follow Adaptive Recognition