{"id":2240,"date":"2024-07-23T06:39:51","date_gmt":"2024-07-23T06:39:51","guid":{"rendered":"https:\/\/adaptiverecognition.com\/?post_type=product&p=2240"},"modified":"2025-10-08T09:06:33","modified_gmt":"2025-10-08T09:06:33","slug":"carmen-ocr-railway-code-recognition","status":"publish","type":"product","link":"https:\/\/adaptiverecognition.com\/hu\/products\/carmen-ocr-railway-code-recognition\/","title":{"rendered":"Carmen\u00ae OCR \u2013 vas\u00fati k\u00f3dfelismer\u00e9s"},"excerpt":{"rendered":"

A Carmen\u00ae OCR<\/strong> RailCode fejleszt\u0151i k\u00e9szlettel (SDK) integr\u00e1lhat\u00f3 szoftver, amely t\u00e1mogatja a vas\u00fati sz\u00e1ll\u00edt\u00e1sban haszn\u00e1lt k\u00f3dok felismer\u00e9s\u00e9t, bele\u00e9rtve az UIC, AAR \u00e9s egy\u00e9b region\u00e1lis jel\u00f6l\u00e9seket.<\/p>","protected":false},"featured_media":8400,"parent":0,"template":"","category-for-product":[54],"class_list":["post-2240","product","type-product","status-publish","has-post-thumbnail","hentry","category-for-product-software"],"acf":{"source_campaign":"CMP-01153-X0J8T","preferred_product_type":"100000009","subject_postfix":"Carmen UIC","pick_casy_studies_for_this_product":[1291,1343,1371,1376],"product_card_name":"Railway Code Recognition Engine with Software Development Kit","product_menu_name":"Carmen\u00ae<\/sup> OCR RailCode<\/span>","product_name_on_product_page":"Carmen\u00ae<\/sup> OCR RailCode<\/span>","hero_image_for_product_page":8461,"product_hero_image_on_product_page":8400,"product_hero_image_clickable_url":"","on_product_page_excerpt":"Gain Full Visibility and Accurately Read Every Railway Code
\r\nwith Carmen\u00ae OCR Railway Software Library","test_product_video":"","product_page_flexible":[{"acf_fc_layout":"simple_text","title_of_the_section":"Read Any Rail Code
Accurately<\/span>","simple_text":"

Carmen\u00ae OCR <\/span>RailCode<\/span> empowers you to achieve unprecedented<\/strong><\/span> visibility<\/strong> across your railway network. Easily extract and read any<\/strong><\/span> code<\/strong>, <\/span><\/span>including UIC, BRA, RUS, AAR, and even North American<\/span> chassis numbers,<\/span><\/span> regardless of placement or font type, with<\/strong><\/span> unmatched 99.7% accuracy.<\/span><\/strong><\/span>\u00a0<\/span><\/strong><\/p>"},{"acf_fc_layout":"image_and_text_leftright","image_and_text_leftright":[{"title_left_right":"Read Any Railway Code,
Anywhere in the World<\/span>","description_of_the_left_right":"Manage your global railway network with confidence using Carmen\u00ae OCR <\/span>RailCode<\/span>, which offers unparalleled coverage for railway codes<\/strong> and <\/span>eliminates<\/span> compatibility issues.<\/span> Our <\/span>RailCode<\/span> engines, Carmen\u00ae <\/span>EU<\/span>_<\/span>Rail<\/span> (for UIC and RUs) and Carmen\u00ae <\/span>AM<\/span>_<\/span>Rail<\/span> (for AAR and BRA codes), deliver results with an impressive 99.7% accuracy.<\/strong><\/span><\/span>\u00a0<\/span><\/strong>\r\n\r\nCamera independence provides added flexibility, ensuring Carmen\u00ae OCR <\/strong><\/span>RailCode<\/span><\/strong> delivers reliable data extraction consistently<\/strong>, regardless of camera quality or lighting conditions.<\/span><\/span>\u00a0<\/span>","image":11091,"lint_to_image":""},{"title_left_right":"Simple Integration,
Scalable Power<\/span>","description_of_the_left_right":"Carmen\u00ae OCR <\/span>RailCode<\/span> integrates seamlessly with your existing infrastructure<\/strong>, minimizing disruptions.<\/span><\/span>\u00a0<\/span>\r\n\r\nAs your railway network expands, Carmen\u00ae OCR <\/span>RailCode<\/span> effortlessly adapts to accommodate your growing needs. Whether you manage a small regional network or a vast global operation, Carmen\u00ae OCR <\/strong><\/span>RailCode<\/span><\/strong> delivers the scalability and power you need<\/strong> to streamline operations effectively.<\/span><\/span>\u00a0<\/span>","image":11087,"lint_to_image":""}]},{"acf_fc_layout":"highligted_features_new","highligted_features_new":[{"feature_image__icon_new":7705,"feature_title_new":"Supported
Codes","feature_description_new":"European (UIC), Russian (RUS), Brazilian (BRA), North American (AAR) railway codes recognized"},{"feature_image__icon_new":7706,"feature_title_new":"Tried
& Tested","feature_description_new":"Used in thousands of systems worldwide."},{"feature_image__icon_new":7704,"feature_title_new":"Scalability","feature_description_new":"From small through medium, to large and complex systems."},{"feature_image__icon_new":7707,"feature_title_new":"Image-based
Code Recognition","feature_description_new":"SDK supports image processing."},{"feature_image__icon_new":7708,"feature_title_new":"Major
OP Systems Supported","feature_description_new":"Runs on Windows and Linux."},{"feature_image__icon_new":7709,"feature_title_new":"Regular
Engine Updates","feature_description_new":"Four updates released per year."}]},{"acf_fc_layout":"video_oembed","oembed_video_block_title":"Play Carmen\u00ae<\/sup> OCR RailCode<\/span> product film","oembed_video_block_link":"https:\/\/www.youtube.com\/watch?v=i0BiZiL7nsM","cover_image_of_the_video_flexi":8400},{"acf_fc_layout":"product_flexi_accordion","accordion_title":"FAQ","description_":"","accordion_fields":[{"accordion_title_repeater":"What types of railway codes can Carmen\u00ae OCR RailCode recognize?","accordion_description":"Carmen\u00ae OCR RailCode can recognize a wide range of railway codes, including European (UIC), Russian (RUS), Brazilian (BRA), and North American (AAR) railway codes, as well as North American chassis numbers."},{"accordion_title_repeater":"What are the system requirements for running Carmen\u00ae OCR RailCode?","accordion_description":"The minimum system requirements for Carmen\u00ae OCR RailCode include a 2 GHz CPU, 1 GB RAM, and 1 GB HDD. The software supports both Windows and Linux operating systems."},{"accordion_title_repeater":"How does Carmen\u00ae OCR RailCode handle different image sources and lighting conditions?","accordion_description":"Carmen\u00ae OCR RailCode processes image sequences from multiple sources, ensuring optimal OCR results regardless of camera position or lighting conditions. It supports various image formats such as BMP, PNG, JPEG, and RAW."},{"accordion_title_repeater":"How frequently is Carmen\u00ae OCR RailCode updated?","accordion_description":"Carmen\u00ae OCR RailCode receives four updates per year, ensuring it remains current with new standards and technologies, maintaining its high accuracy and performance."},{"accordion_title_repeater":"What integration options are available for Carmen\u00ae OCR RailCode?","accordion_description":"Carmen\u00ae OCR RailCode features a user-friendly API that allows for seamless integration with existing railway management systems. It supports multiple programming languages, including C, C++, C#, Java, and Visual Basic, making integration straightforward and efficient."},{"accordion_title_repeater":"What additional data can Carmen\u00ae OCR RailCode extract besides railway codes?","accordion_description":"In addition to railway codes, Carmen\u00ae OCR RailCode can extract valuable data such as the container\u2019s size and type, enabling better management and optimization of railway logistics and operations."}],"contact_button_below":null},{"acf_fc_layout":"application_accordion","application_title":"Most common
applications<\/span>","application_description":"Carmen\u00ae OCR RailCode\u2019s unmatched accuracy\r\nand comprehensive functionality make it\r\nan invaluable tool for diverse applications\r\nfocused on streamlining and optimizing railway\r\noperations. Here are just a few of the most\r\ncommon uses:","application_fields":[{"application_title_repeater":"Automated Code Reading and Data Capture"},{"application_title_repeater":"Inventory Management"},{"application_title_repeater":"Logistics and Yard Operations"},{"application_title_repeater":"Global Railway Network Management"},{"application_title_repeater":"Scalable Solution for Growing Networks"}],"button_text_accordion_below":"Contact our team today","application_button_url_accordion_below":"\/contact-us"},{"acf_fc_layout":"sample_codes","sample_codes_repeater":[{"code_name":"C","copy_the_code_here":" \/** \\file *********************************************************************\r\n *\r\n * cmocr02 - Sample program for Container Code Reader\r\n *\r\n * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http:\/\/www.adaptiverecognition.com)\r\n ******************************************************************************\/\r\n \r\n \/**\r\n * cmocr_readcodea() example\r\n *\r\n * Purpose:\r\n *\t\tDemonstrates the use of the cmocr_getresult() function\r\n *\t\tto read industrial codes from a series of images.\r\n *\r\n * Description:\r\n *\t\tAfter the user choose what kind o engine would like to try,f\r\n *\t\tthe application loads the necessary images from file, adds them to the engine, and calls\r\n *\t\tthe cmocr_getresult() function to read industrial codes from the series.\r\n *\/\r\n \r\n #include \"gxsdldr.c\"\r\n #include \"gximage.h\"\r\n #include \"cmocr.h\"\r\n #include \"gxproperty.h\"\r\n #include \r\n #include \r\n #include \"stringtools.c\"\r\n \r\n \/** Prints the GX error code and string to the stderr. *\/\r\n void print_error(const char* format, ...) {\r\n int errcode;\r\n char errstr[256];\r\n char _format[1024];\r\n va_list args;\r\n \r\n gx_geterrora(&errcode, errstr, sizeof(errstr) - 1);\r\n errstr[sizeof(errstr) - 1] = 0;\r\n gx_snprintf(_format, sizeof(_format), \"\\n<%s> GX error (%x) occured: %s\\n\", format, errcode, errstr);\r\n \r\n va_start(args, format);\r\n vfprintf(stderr, _format, args);\r\n va_end(args);\r\n }\r\n \r\n \/**\r\n * Main function\r\n *\/\r\n \r\n #define NOCRTYPES\t11\r\n const char ocr_types[NOCRTYPES][16] =\r\n {\r\n \"aar\",\r\n \"accr_usa\",\r\n \"bra\",\r\n \"chassis\",\r\n \"ilu\",\r\n \"iso\",\r\n \"isoilu\",\r\n \"moco\"\r\n \"rus\",\r\n \"uic\",\r\n \"usdot\",\r\n };\r\n \r\n int main(void)\r\n {\r\n gxHANDLE ocrhandle = { 0 };\r\n gxHANDLE imagehandle = { 0 };\r\n gxHANDLE prophandle;\r\n struct CMOCR_RESULT* presult = NULL;\r\n int confidence;\r\n char code[64];\r\n char* type = 0;\r\n int choice_int;\r\n int ix;\r\n bool b_err = false;\r\n \r\n \/** Open the container reader *\/\r\n if (!gx_openmodulea(&prophandle, \"gxproperty\", \"default\"))\r\n {\r\n print_error(\"Error while opening gxproperty module\");\r\n return 0;\r\n }\r\n \r\n printf(\"Which engine would you like to try ?\\n1.AAR\\n2.ACCR_USA\\n3.BRA\\n4.CHASSIS\\n5.ILU\\n6.ISO\\n7.ISOILU\\n8.MOCO\\n9.RUS\\n10.UIC\\n11.USDOT\\n12.OLD engine(released before 21Q1)\\n13.Use the default engine\\nPlease choose a number between 1 and 13! Your choice : \");\r\n scanf(\"%d\", &choice_int);\r\n \r\n while (choice_int < 1 || choice_int > 13)\r\n {\r\n printf(\"Please choose a number between 1 and 13: \");\r\n scanf(\"%d\", &choice_int);\r\n }\r\n printf(\"\\n\");\r\n \r\n if (choice_int <= NOCRTYPES)\r\n {\r\n char t[16] = \"\", ev[64] = \"\";\r\n char engname[128] = \"\";\r\n memset(engname, 0, sizeof(engname));\r\n \r\n type = gx_strdup(ocr_types[choice_int - 1]);\r\n gx_strncpy(t, type, sizeof(t));\r\n strupr(t);\r\n \r\n memset(ev, 0, sizeof(ev));\r\n gx_snprintf(ev, sizeof(ev) - 1, \"%s\/cmocr\", type);\r\n if (!gx_getpropertya(prophandle, ev, engname, (int)sizeof(engname)))\r\n {\r\n print_error(\"Reading %s property error\", ev);\r\n b_err = true;\r\n }\r\n else\r\n {\r\n printf(\"You have choosen the \\\"%s\\\" engine: %s\\n\\n\", t, engname);\r\n \r\n \/** Open the container reader *\/\r\n if (!gx_openmodulea(&ocrhandle, \"cmocr\", type)) {\r\n print_error(\"Error while opening cmocr module\");\r\n b_err = true;\r\n }\r\n }\r\n }\r\n else\r\n if (choice_int == 12)\r\n {\r\n char engine[128] = \"\";\r\n printf(\"You have choosen an old engine (released before 21Q1), please give us the exact engine name like \\\"cmaccr-7.3.2.66:ilu\\\": \");\r\n scanf(\"%s\", engine);\r\n \r\n if (!gx_setpropertya(prophandle, \"default\/cmocr\", engine))\r\n {\r\n print_error(\"Error while setting \\\"%s\\\" engine as a default\", engine);\r\n b_err = true;\r\n }\r\n else\r\n {\r\n char t[16] = \"\";\r\n type = substring(engine, indexOf(engine, ':') + 1);\r\n trimstr(type);\r\n \r\n gx_strncpy(t, type, sizeof(t));\r\n strupr(t);\r\n printf(\"You have choosen the old (\\\"%s\\\") engine: %s\\n\\n\", t, engine);\r\n \r\n \/** Open the container reader *\/\r\n if (!gx_openmodulea(&ocrhandle, \"cmocr\", \"default\"))\r\n {\r\n print_error(\"Error while opening cmocr module\");\r\n b_err = true;\r\n }\r\n }\r\n }\r\n else\t\t\t\r\n \/** Open the container reader *\/\r\n if (!gx_openmodulea(&ocrhandle, \"cmocr\", \"default\"))\r\n {\r\n print_error(\"Error while opening cmocr module\");\r\n b_err = true;\r\n }\r\n else\r\n {\r\n char defeng[128] = \"\";\r\n memset(defeng, 0, sizeof(defeng));\r\n if (!gx_getpropertya(prophandle, \"default\/cmocr\", defeng, (int)sizeof(defeng)))\r\n {\r\n print_error(\"Get property error\");\r\n b_err = true;\r\n }\r\n else\r\n {\r\n char t[16] = \"\", * t1, * t2;\r\n type = substring(defeng, indexOf(defeng, ':') + 1);\r\n trimstr(type);\r\n gx_strncpy(t, type, sizeof(t));\r\n strupr(t);\r\n printf(\"You have choosen the default (\\\"%s\\\") engine: %s\\n\\n\", t, defeng);\r\n }\r\n }\r\n \r\n if (!b_err)\r\n {\r\n int i;\r\n char images[3][128];\r\n \/** Open the image module and allocates the image structure *\/\r\n if (!gx_openmodulea(&imagehandle, \"gximage\", \"default\"))\r\n {\r\n print_error(\"Error while opening gximage module\");\r\n gx_unrefhandle(&ocrhandle);\r\n gx_unrefhandle(&prophandle);\r\n return 0;\r\n }\r\n \r\n \/** Reset the container module *\/\r\n if (!cmocr_reset(ocrhandle))\r\n {\r\n print_error(\"Reset error\");\r\n gx_unrefhandle(&ocrhandle);\r\n gx_unrefhandle(&imagehandle);\r\n gx_unrefhandle(&prophandle);\r\n return 0;\r\n }\r\n \r\n memset(images, 0, sizeof(images));\r\n for (i = 0; i < 3; i++)\r\n {\r\n gx_snprintf(images[i], sizeof(images[i]), \"..\/..\/..\/data\/%s%02i.jpg\", type, i + 1);\r\n }\r\n free(type);\r\n \r\n for (ix = 0; ix < 3; ix++) { \/** Allocate an image *\/ gxIMAGE* image = 0; if (!gx_allocimage(imagehandle, &image)) { print_error(\"Allocate image failed\"); gx_unrefhandle(&ocrhandle); gx_unrefhandle(&imagehandle); gx_unrefhandle(&prophandle); return 0; } \/** Load the image *\/ printf(\"Load image: %s...\", images[ix]); if (!gx_loadimagea(imagehandle, image, images[ix], GX_UNDEF)) { print_error(\"FAILED\"); gx_unrefimage(imagehandle, image); gx_unrefhandle(&ocrhandle); gx_unrefhandle(&imagehandle); gx_unrefhandle(&prophandle); return 0; } else printf(\"OK\\n\"); \/** Add image to the module *\/ printf(\"Add image to the module...\"); if (!cmocr_addimage(ocrhandle, image, 0)) { print_error(\"FAILED\"); gx_unrefimage(imagehandle, image); gx_unrefhandle(&ocrhandle); gx_unrefhandle(&imagehandle); gx_unrefhandle(&prophandle); return 0; } else printf(\"OK\\n\"); gx_unrefimage(imagehandle, image); } \/** Read the first container code *\/ printf(\"\\nRead the container code by cmocr_getresult() function...\"); if (!cmocr_getresult(ocrhandle, &presult)) { print_error(\"FAILED\"); } else printf(\"OK\\n\"); if (!presult || (presult->code[0] == 0)) {\r\n printf(\"No result\\n\");\r\n }\r\n else\r\n {\r\n int csvalid, checksum;\r\n printf(\"Code: '%s', Confidence: '%i'\\n\", presult->code, presult->confidence);\r\n for (ix = 0; ix < presult->nimage; ix++)\r\n printf(\"\\tImgIndex: %d Code: '%s', Confidence: '%i'\\n\",\r\n presult->images[ix].imgindex,\r\n presult->images[ix].text,\r\n presult->images[ix].confidence);\r\n printf(\"\\nRead the result of the checksum validation...\");\r\n if (!cmocr_checksumisvalid(ocrhandle, presult->code, &csvalid, &checksum)) {\r\n print_error(\"FAILED\");\r\n if (presult) gx_globalfree(presult);\r\n return 0;\r\n }\r\n else printf(\"OK\\nChecksum validation result: %i, checksum: %i\\n\\n\", csvalid, checksum);\r\n }\r\n \/** Release the result memory *\/\r\n if (presult) { gx_globalfree(presult); presult = 0; }\r\n \/** Release the handle *\/\r\n if (gx_isvalidhandle(ocrhandle)) gx_unrefhandle(&ocrhandle);\r\n if (gx_isvalidhandle(imagehandle)) gx_unrefhandle(&imagehandle);\r\n if (gx_isvalidhandle(prophandle)) gx_unrefhandle(&prophandle);\r\n \r\n return 1;\r\n }\r\n }"},{"code_name":"C++","copy_the_code_here":" \/** \\file *********************************************************************\r\n *\r\n * cmocr02 - Sample program for Container Code Reader\r\n *\r\n * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http:\/\/www.adaptiverecognition.com)\r\n ******************************************************************************\/\r\n \r\n \/**\r\n * FindFirstContainerCode() example\r\n *\r\n * Purpose:\r\n *\t\tDemonstrates the use of the FindFirstContainerCode() function\r\n *\t\tto read industrial codes from a series of images.\r\n *\r\n * Description:\r\n *\t\tAfter the user choose what kind of engine would like to try,\r\n *\t\tthe application loads the necessary images from file, adds them to the engine, and calls\r\n *\t\tthe FindFirstContainerCode() function to read indutrial codes from the series.\r\n *\/\r\n \r\n #include \"gxsdldr.cpp\"\r\n #include \"gximage.h\"\r\n #include \"cmocr.h\"\r\n #include \"gxproperty.h\"\r\n \r\n #include \r\n #include \r\n #include \r\n #include \r\n \r\n #ifdef GX_NAMESPACES\r\n using namespace gx;\r\n using namespace cm;\r\n using namespace std;\r\n #endif\r\n \r\n \/\/ trim from start (in place)\r\n static inline void ltrim(std::string& s) {\r\n s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](unsigned char ch) {\r\n return !std::isspace(ch);\r\n }));\r\n }\r\n \r\n \/\/ trim from end (in place)\r\n static inline void rtrim(std::string& s) {\r\n s.erase(std::find_if(s.rbegin(), s.rend(), [](unsigned char ch) {\r\n return !std::isspace(ch);\r\n }).base(), s.end());\r\n }\r\n \r\n \/\/ trim from both ends (in place)\r\n static inline void trim(std::string& s) {\r\n ltrim(s);\r\n rtrim(s);\r\n }\r\n \r\n static inline std::string strupr(std::string s)\r\n {\r\n std::string ret = s;\r\n std::transform(ret.begin(), ret.end(), ret.begin(), [](unsigned char c) { return std::toupper(c); });\r\n return ret;\r\n }\r\n \/**\r\n * Main function\r\n *\/\r\n int main(void) {\r\n \r\n const int NOCRTYPES = 11;\r\n \r\n char* ocr_types[NOCRTYPES] =\r\n {\r\n \"aar\",\r\n \"accr_usa\",\r\n \"bra\",\r\n \"chassis\",\r\n \"ilu\",\r\n \"iso\",\r\n \"isoilu\",\r\n \"moco\"\r\n \"rus\",\r\n \"uic\",\r\n \"usdot\",\r\n };\r\n \r\n try {\r\n gxProperty gxProperty;\r\n \r\n cout << \"Which engine would you like to try ?\\n1.AAR\\n2.ACCR_USA\\n3.BRA\\n4.CHASSIS\\n5.ILU\\n6.ISO\\n7.ISOILU\\n8.MOCO\\n9.RUS\\n10.UIC\\n11.USDOT\\n12.OLD engine(released before 21Q1)\\n13.Use the default engine\\nPlease choose a number between 1 and 13! Your choice : \"; int choice_int; cin >> choice_int;\r\n \r\n while (choice_int < 1 || choice_int > 13)\r\n {\r\n cout << \"Please choose a number between 1 and 13: \"; cin >> choice_int;\r\n }\r\n cout << endl;\r\n \r\n \/\/ Open the container reader\r\n cmOcr* ocr = 0;\r\n string type = \"\";\r\n \r\n if (choice_int <= NOCRTYPES)\r\n {\r\n type = ocr_types[choice_int - 1];\r\n std::string utype = strupr(type);\r\n string engine = gxProperty.GetProperty(type + \"\/cmocr\");\r\n cout << \"You have choosen the \\\"\" << utype << \"\\\" engine: \" << engine << \"\\n\\n\";\r\n ocr = new cmOcr(type);\r\n }\r\n else if (choice_int == 12)\r\n {\r\n cout << \"You have choosen an old engine (released before 21Q1), please give us the exact engine name like \\\"cmaccr-7.3.2.66:ilu\\\": \"; string engine; cin >> engine;\r\n gxProperty.SetProperty(\"default\/cmocr\", engine);\r\n type = engine.substr(engine.find(':') + 1);\r\n trim(type);\r\n std::string utype = strupr(type);\r\n cout << \"You have choosen the old (\\\"\" << utype << \"\\\") engine: \" << engine << \"\\n\\n\";\r\n ocr = new cmOcr(\"default\");\r\n }\r\n else\r\n {\r\n ocr = new cmOcr(\"default\");\r\n string engine = gxProperty.GetProperty(\"default\/cmocr\");\r\n type = engine.substr(engine.find(':') + 1);\r\n trim(type);\r\n std::string utype = strupr(type);\r\n cout << \"You have choosen the default (\\\"\" << utype << \"\\\") engine: \" << engine << \"\\n\\n\"; } \/\/ Reset the container module ocr->Reset();\r\n \r\n char images[3][128];\r\n memset(images, 0, sizeof(images));\r\n for (int i = 0; i < 3; i++)\r\n {\r\n gx_snprintf(images[i], sizeof(images[i]), \"..\/..\/..\/data\/%s%02i.jpg\", type.c_str(), i + 1);\r\n }\r\n \r\n for (int ix = 0; ix < 3; ix++) {\r\n \/\/ Load the image\r\n gxImage image;\r\n cout << \"Load \" << images[ix] << \"...\";\r\n image.Load(images[ix]);\r\n cout << \"OK\" << endl;\r\n \r\n \/\/ Add image to the module\r\n cout << \"Add image to the module\" << \"...\"; ocr->AddImage(image, 0);\r\n cout << \"OK\" << endl;\r\n }\r\n cout << endl;\r\n \/\/ Read the code\r\n cout << \"Read the code by FindFirstContainerCode() function...\"; ocr->FindFirstContainerCode();\r\n cout << \"OK\" << endl; if(ocr->IsValid())\r\n {\r\n cout << \"Code: '\" << ocr->GetCodeA() << \"', Confidence: '\" << ocr->GetConfidence() << \"'\" << endl;\r\n for (int ix=0; ixGetNumberOfImages(); ix++)\r\n cout << \"\\t\" <<\r\n \"ImgIndex: \" << ocr->GetImageIndex(ix) << \", \" <<\r\n \"Code: '\" << ocr->GetImageTextA(ix) << \"', \" <<\r\n \"Confidence: '\" << ocr->GetImageConfidence(ix) << \"'\" << endl;\r\n \r\n cout << endl << \"Read the result of the checksum validation...\"; int csvalid = ocr->ChecksumIsValid();\r\n int checksum = ocr->GetChecksum();\r\n cout << \"OK\" << endl;\r\n cout << \"Checksum validation result: \" << csvalid << \", checksum: \" << checksum << endl << endl;\r\n }\r\n else\r\n {\r\n cout << \"No result\" << endl;\r\n }\r\n \r\n } catch(gxError &e) {\r\n \r\n \/\/ Displays error code and description\r\n cerr << \"GX error (\" << e.GetErrorCode() << \") occurred: \" << e.GetErrorStringA() << \"\\n\";\r\n \/\/ Terminates the program\r\n return 0;\r\n }\r\n \r\n return 1;\r\n }"},{"code_name":"C#","copy_the_code_here":" \/** \\file *********************************************************************\r\n *\r\n * cmocr02 - Sample program for Container Code Reader\r\n *\r\n * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http:\/\/www.adaptiverecognition.com)\r\n ******************************************************************************\/\r\n \r\n \/**\r\n * FindFirstContainerCode() example\r\n *\r\n * Purpose:\r\n *\t\tDemonstrates the use of the FindFirstContainerCode() function\r\n *\t\tto read industrial codes from a series of images.\r\n *\r\n * Description:\r\n *\t\tAfter the user choose what kind of engine would like to try,\r\n *\t\tthe application loads the necessary images from file, adds them to the engine, and calls \r\n *\t\tthe FindFirstContainerCode() function to read indutrial codes from the series.\r\n *\/\r\n \r\n using gx;\r\n using cm;\r\n using System;\r\n \r\n namespace cmocr01\r\n {\r\n class MainClass\r\n {\r\n const int NOCRTYPES = 11; \/\/ Number of OCR engine types\r\n public static string[] ocr_types = new string[NOCRTYPES]\r\n {\r\n \"aar\",\r\n \"accr_usa\",\r\n \"bra\",\r\n \"chassis\",\r\n \"ilu\",\r\n \"iso\",\r\n \"isoilu\",\r\n \"moco\"\r\n \"rus\",\r\n \"uic\",\r\n \"usdot\",\r\n };\r\n \r\n public static void Main(string[] args)\r\n {\r\n try\r\n {\r\n gxProperty gxProperty = new gxProperty();\r\n \r\n Console.Write(\"Which engine would you like to try ?\\n1.AAR\\n2.ACCR_USA\\n3.BRA\\n4.CHASSIS\\n5.ILU\\n6.ISO\\n7.ISOILU\\n8.MOCO\\n9.RUS\\n10.UIC\\n11.USDOT\\n12.OLD engine(released before 21Q1)\\n13.Use the default engine\\nPlease choose a number between 1 and 13! Your choice : \");\r\n \r\n string choice = Console.ReadLine();\r\n \/\/Console.WriteLine(\"\\\"\"+choice+\"\\\"\");\r\n int choice_int = Convert.ToInt32(choice);\r\n while (choice_int < 1 || choice_int > 13)\r\n {\r\n Console.Write(\"Please choose a number between 1 and 13: \");\r\n choice = Console.ReadLine();\r\n \/\/Console.WriteLine(\"\\\"\" + choice + \"\\\"\");\r\n choice_int = Convert.ToInt32(choice);\r\n }\r\n Console.WriteLine();\r\n \r\n \/\/Creates the OCR object\r\n cmOcr ocr;\r\n string type = \"\";\r\n \r\n if (choice_int <= NOCRTYPES)\r\n {\r\n type = ocr_types[choice_int - 1];\r\n Console.WriteLine(\"You have choosen the \\\"{0}\\\" engine: {1}\\n\", type.ToUpper(), gxProperty.GetProperty(type + \"\/cmocr\"));\r\n ocr = new cmOcr(type);\r\n }\r\n else if (choice_int == 12)\r\n {\r\n Console.Write(\"You have choosen an old engine (released before 21Q1), please give us the exact engine name like \\\"cmaccr-7.3.2.66:ilu\\\": \");\r\n string engine = Console.ReadLine();\r\n Console.WriteLine();\r\n \/\/Console.WriteLine(\"\\\"\" + engine + \"\\\"\");\r\n gxProperty.SetProperty(\"default\/cmocr\", engine);\r\n type = engine.Substring(engine.IndexOf(\":\") + 1);\r\n type = type.Trim();\r\n Console.WriteLine(\"You have choosen the old (\\\"{0}\\\") engine: {1}\\n\", type.ToUpper(), engine);\r\n ocr = new cmOcr(\"default\");\r\n }\r\n else\r\n {\r\n ocr = new cmOcr(\"default\");\r\n string engine = gxProperty.GetProperty(\"default\/cmocr\");\r\n type = engine.Substring(engine.IndexOf(\":\") + 1);\r\n type = type.Trim();\r\n Console.WriteLine(\"You have choosen the default (\\\"{0}\\\") engine: {1}\\n\", type.ToUpper(), engine);\r\n }\r\n \r\n ocr.Reset();\r\n \r\n string[] images = new string[3];\r\n for (int i = 0; i < images.Length; i++)\r\n {\r\n images[i] = \"..\/..\/..\/..\/..\/..\/data\/\" + type + (i + 1).ToString(\"D2\") + \".jpg\";\r\n }\r\n \r\n for (int ix = 0; ix < 3; ix++)\r\n {\r\n \/\/ Creates the image object\r\n gxImage image = new gxImage(\"default\");\r\n \/\/ Loads the sample image\r\n Console.Write(\"Load {0}...\", images[ix]);\r\n image.Load(images[ix]);\r\n Console.WriteLine(\"OK\");\r\n \/\/ Add image to the module\r\n Console.Write(\"Add image to the module...\");\r\n ocr.AddImage(image, 0);\r\n Console.WriteLine(\"OK\");\r\n image.Dispose();\r\n }\r\n Console.WriteLine();\r\n \/\/Console.WriteLine(ocr.GetProperty(\"datafile\"));\r\n \/\/ Read the code\r\n Console.Write(\"Read the code by FindFirstContainerCode() function...\"); \r\n ocr.FindFirstContainerCode();\r\n Console.WriteLine(\"OK\");\r\n if (ocr.IsValid())\r\n {\r\n Console.WriteLine(\"Code: '{0}', Confidence: '{1}'\", ocr.GetCode(), ocr.GetConfidence());\r\n for (int ix = 0; ix < ocr.GetNumberOfImages(); ix++)\r\n {\r\n Console.WriteLine(\"\\tImgIndex: {0}, Code: '{1}', Confidence: '{2}'\",\r\n ocr.GetImageIndex(ix),\r\n ocr.GetImageText(ix),\r\n ocr.GetImageConfidence(ix));\r\n }\r\n Console.Write(\"Read the result of the checksum validation...\");\r\n int csvalid = ocr.ChecksumIsValid();\r\n int checksum = ocr.GetChecksum();\r\n Console.WriteLine(\"OK\");\r\n Console.WriteLine(\"Checksum validation result: {0}, checksum: {1}\", csvalid, checksum);\r\n }\r\n else\r\n {\r\n Console.WriteLine(\"No result\");\r\n }\r\n \/\/Console.ReadKey();\r\n }\r\n catch (gxException)\r\n {\r\n Console.Error.WriteLine(\"GX error (\" + gxSystem.GetErrorCode() + \") occured: \" + gxSystem.GetErrorString());\r\n \/\/Console.ReadKey();\r\n }\r\n }\r\n }\r\n }"},{"code_name":"Java","copy_the_code_here":" \/** \\file *********************************************************************\r\n *\r\n * cmocr02 - Sample program for Container Code Reader\r\n *\r\n * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http:\/\/www.adaptiverecognition.com)\r\n ******************************************************************************\/\r\n \r\n \/**\r\n * FindFirstContainerCode() example\r\n *\r\n * Purpose:\r\n *\t\tDemonstrates the use of the FindFirstContainerCode() function\r\n *\t\tto read industrial codes from a series of images.\r\n *\r\n * Description:\r\n *\t\tAfter the user choose what kind of engine would like to try,\r\n *\t\tthe application loads the necessary images from file, adds them to the engine, and calls \r\n *\t\tthe FindFirstContainerCode() function to read indutrial codes from the series.\r\n *\/\r\n \r\n import com.adaptiverecognition.gx.*;\r\n import com.adaptiverecognition.cm.*;\r\n \r\n import java.io.InputStreamReader;\r\n import java.io.BufferedReader;\r\n import java.io.IOException;\r\n \r\n public class cmocr02\r\n {\r\n static\r\n {\r\n try\r\n {\r\n System.loadLibrary(\"jgx\");\r\n System.loadLibrary(\"jcmocr\");\r\n }\r\n catch (UnsatisfiedLinkError e)\r\n {\r\n System.err.println(\"Native code library failed to load.\" + e);\r\n System.exit(1);\r\n }\r\n }\r\n \r\n public static int NOCRTYPES = 11;\r\n \r\n public static String ocr_types[] = \r\n {\r\n \"aar\",\r\n \"accr_usa\",\r\n \"bra\",\r\n \"chassis\",\r\n \"ilu\",\r\n \"iso\",\r\n \"isoilu\",\r\n \"moco\"\r\n \"rus\",\r\n \"uic\",\r\n \"usdot\",\r\n };\r\n \r\n public static void main(String argv[]) throws IOException\r\n {\r\n try\r\n {\r\n gxProperty gxProperty = new gxProperty();\r\n \r\n System.out.print(\"Which engine would you like to try ?\\n1.AAR\\n2.ACCR_USA\\n3.BRA\\n4.CHASSIS\\n5.ILU\\n6.ISO\\n7.ISOILU\\n8.MOCO\\n9.RUS\\n10.UIC\\n11.USDOT\\n12.OLD engine(released before 21Q1)\\n13.Use the default engine\\nPlease choose a number between 1 and 13! Your choice : \");\r\n \r\n \/\/ Enter data using BufferReader\r\n BufferedReader reader = new BufferedReader(\r\n new InputStreamReader(System.in));\r\n \r\n String choice = reader.readLine();\r\n int choice_int = Integer.parseInt(choice);\r\n while (choice_int < 1 || choice_int > 13)\r\n {\r\n System.out.print(\"Please choose a number between 1 and 13: \");\r\n choice = reader.readLine();\r\n \/\/Console.WriteLine(\"\\\"\" + choice + \"\\\"\");\r\n choice_int = Integer.parseInt(choice);\r\n }\r\n System.out.println(\"\");\r\n \r\n \/\/ Creates the OCR object\r\n cmOcr ocr;\r\n String type = \"\";\r\n \r\n if (choice_int <= NOCRTYPES)\r\n {\r\n type = ocr_types[choice_int - 1];\r\n System.out.println(\"You have choosen the \\\"\" + type.toUpperCase() + \"\\\" engine: \" + gxProperty.GetProperty(type + \"\/cmocr\") + \"\\n\");\r\n ocr = new cmOcr(type);\r\n }\r\n else if (choice_int == 12)\r\n {\r\n System.out.println(\"You have choosen an old engine (released before 21Q1), please give us the exact engine name like \\\"cmaccr-7.3.2.66:ilu\\\": \");\r\n String engine = reader.readLine();\r\n \/\/System.out.println(\"\\\"\" + engine + \"\\\"\");\r\n gxProperty.SetProperty(\"default\/cmocr\", engine);\r\n type = engine.substring(engine.indexOf(\":\") + 1);\r\n type = type.trim();\r\n System.out.println(\"You have choosen the old (\\\"\" + type.toUpperCase() + \"\\\") engine: \" + engine + \"\\n\");\r\n ocr = new cmOcr(\"default\");\r\n }\r\n else\r\n {\r\n ocr = new cmOcr(\"default\");\r\n String engine = gxProperty.GetProperty(\"default\/cmocr\");\r\n \/\/System.out.println(\"\\\"\" + engine + \"\\\"\");\r\n gxProperty.SetProperty(\"default\/cmocr\", engine);\r\n type = engine.substring(engine.indexOf(\":\") + 1);\r\n type = type.trim();\r\n System.out.println(\"You have choosen the default (\\\"\" + type.toUpperCase() + \"\\\") engine: \" + engine + \"\\n\");\r\n }\r\n \r\n \/\/ Reset the container module\r\n ocr.Reset();\r\n \r\n String images[] = new String[3];\r\n for (int i = 0; i < images.length; i++)\r\n {\r\n images[i] = \"..\/..\/data\/\" + type + String.format(\"%02d\", i + 1) +\".jpg\";\r\n }\r\n \r\n for (int ix = 0; ix < 3; ix++)\r\n {\r\n \/\/ Creates the image object\r\n gxImage image = new gxImage(\"default\");\r\n \/\/ Loads the sample image\r\n System.out.print(\"Load: \" + images[ix] + \"...\");\r\n image.Load(images[ix]);\r\n System.out.println(\"OK\");\r\n \/\/ Add image to the module\r\n System.out.print(\"Add image to the module...\");\r\n ocr.AddImage(image, 0);\r\n System.out.println(\"OK\");\r\n }\r\n System.out.println(\"\");\r\n \/\/ Read code\r\n System.out.print(\"Read the code by FindFirstContainerCode() fucntion...\");\r\n ocr.FindFirstContainerCode();\r\n System.out.println(\"OK\");\r\n if (ocr.IsValid())\r\n {\r\n System.out.println(\"Code: '\" + ocr.GetCode() + \"', Confidence: '\" + ocr.GetConfidence() + \"'\");\r\n for (int ix = 0; ix < ocr.GetNumberOfImages(); ix++)\r\n System.out.println(\"\\tImgIndex: \" + ocr.GetImageIndex(ix) + \", \" +\r\n \"Code: '\" + ocr.GetImageText(ix) + \", \" +\r\n \"Confidence: '\" + ocr.GetImageConfidence(ix) + \"'\");\r\n System.out.print(\"Read the result of the checksum validation...\");\r\n int csvalid = ocr.ChecksumIsValid();\r\n int checksum = ocr.GetChecksum();\t\t\t\t\r\n System.out.println(\"OK\\nChecksum validation result: \" + csvalid + \", checksum: \" + checksum);\r\n }\r\n else\r\n {\r\n System.out.println(\"No result\");\r\n }\r\n }\r\n catch (RuntimeException e)\r\n {\r\n System.err.println(\"GX error (\" + String.format(\"0x%08x\",gxSystem.GetErrorCode()) + \") occured: \" + gxSystem.GetErrorString());\r\n System.exit(1);\r\n }\r\n }\r\n }"},{"code_name":"Visual Basic","copy_the_code_here":" '\/** \\file *********************************************************************\r\n ' *\r\n ' * cmanpr01 - CMANPR sample program\r\n ' *\r\n ' * 2006-2021 (c) Adaptive Recognition Hungary Inc. (http:\/\/www.adaptiverecognition.com)\r\n ' ******************************************************************************\/\r\n '\r\n '\/**\r\n ' * Show an ANPR process\r\n ' *\r\n ' * Purpose:\r\n ' *\t\tAt 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.\r\n ' *\t\tShows how to do an ANPR on an image and print out the result in text\r\n ' *\/\r\n \r\n Imports System\r\n Imports gx\r\n Imports cm\r\n \r\n Module Main\r\n Sub Main()\r\n Try\r\n Dim gxProperty As gxProperty = New gxProperty\r\n gxProperty.IsPropertiesValid()\r\n Console.WriteLine(\"The syntax of the gxsd.dat file is fine!\")\r\n Console.WriteLine()\r\n \r\n ' Creates the ANPR object\r\n Dim anpr As cmAnpr = New cmAnpr(\"default\")\r\n ' Creates the image object\r\n Dim image As gxImage = New gxImage(\"default\")\r\n \r\n ' Gets the name of the default engine\r\n Console.WriteLine(\"Engine: '{0}'\", anpr.GetProperty(\"anprname\"))\r\n Console.WriteLine()\r\n \r\n ' Checks the licenses for the default engine \r\n If Not anpr.CheckLicenses4Engine(\"\", 0) Then\r\n Console.WriteLine(\"Cannot find licenses for the current engine!!!\")\r\n Exit Sub\r\n End If\r\n \r\n ' Loads the sample image\r\n image.Load(\"..\/..\/..\/..\/..\/..\/data\/plate.jpg\")\r\n \r\n ' Finds the first license plate\r\n If anpr.FindFirst(image) Then\r\n ' Get short country code\r\n Dim cc As String\r\n cc = anpr.GetCountryCode(anpr.GetType(), CC_TYPE.CCT_COUNTRY_SHORT)\r\n If cc.Length = 0 Then cc = \"No plate type\"\r\n ' Displays the result, Country code and type\r\n Console.WriteLine(\"Plate text: '{0}'; Country code: '{1}' ({2})\", anpr.GetText(), cc, anpr.GetType())\r\n Else\r\n Console.WriteLine(\"No license plate found\")\r\n End If\r\n Console.ReadKey()\r\n Catch ex As gxException\r\n Console.Error.WriteLine(\"GX error (\" + gxSystem.GetErrorCode().ToString() + \") occured: \" + gxSystem.GetErrorString())\r\n Console.ReadKey()\r\n End Try\r\n End Sub\r\n End Module"}]},{"acf_fc_layout":"comparision_table_final","comparison_block_title":"Licensing Guidelines Based on
Processing Power and Requirements<\/span>","comparison_table_writeable_column_titles":[{"comparison_table_writeable_column_title":"Single License (Image\/Sec)"},{"comparison_table_writeable_column_title":"Dual License (Image\/Sec)"},{"comparison_table_writeable_column_title":"Quad License (Image\/Sec)"}],"comparison_datas_final":[{"row_title_final":"i3 processor","row_cell_contents_final":[{"row_cell_content_final":"1 - 2"},{"row_cell_content_final":"1 - 4"},{"row_cell_content_final":"1 - 8"}]},{"row_title_final":"i5 processor","row_cell_contents_final":[{"row_cell_content_final":"1 - 2"},{"row_cell_content_final":"1 - 5"},{"row_cell_content_final":"2 - 10"}]},{"row_title_final":"i7 processor","row_cell_contents_final":[{"row_cell_content_final":"1 - 3"},{"row_cell_content_final":"2 - 7"},{"row_cell_content_final":"2 - 14"}]}],"small_text_under_comparison_table":"Image processing capacity depends on numerous factors, such as resolution, the processing capacity of hardware, the complexity of regional license plates, and the number of license plate types. The values above are guidelines based on FHD resolution and OCR-ready images. For more information, please contact us."},{"acf_fc_layout":"doc_links","first_button_text":"Quick Access to Datasheet","first_button_url":"\/app\/uploads\/DOC\/Software\/Carmen\/OCR\/Railway\/railway_datasheet.pdf","second_button_text":"All Downloadable Material","secund_button_url":"\/doc\/software\/carmen-ocr-uic-software-library-for-railway-code-recognition\/"}],"tags_for_search_separate_with_comma___":"carmen, ocr, anpr, lpr, alpr, ocr, data, api, integration, software, library, code, railway, train, railcode, uic, ru, eu, eu rail, eurail, am rail, am, amrail, aar, bra, ","select_references_for_this_product":[5749,5687,5667,5690]},"yoast_head":"\nCarmen\u00ae OCR RailCode | Accurate Global Railway Code Recognition<\/title>\n<meta name=\"description\" content=\"Carmen\u00ae OCR RailCode: the leading software library for accurately recognizing all global railway codes & reporting marks, including UIC, AAR, RUS, with 99.7% accuracy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/adaptiverecognition.com\/hu\/products\/carmen-ocr-railway-code-recognition\/\" \/>\n<meta property=\"og:locale\" content=\"hu_HU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Carmen\u00ae OCR RailCode\" \/>\n<meta property=\"og:description\" content=\"Carmen\u00ae OCR RailCode: the leading software library for accurately recognizing all global railway codes & reporting marks, including UIC, AAR, RUS, with 99.7% accuracy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/adaptiverecognition.com\/hu\/products\/carmen-ocr-railway-code-recognition\/\" \/>\n<meta property=\"og:site_name\" content=\"Adaptive Recognition | Image Capturing and Analytics\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-08T09:06:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/adaptiverecognition.com\/wp-content\/uploads\/2024\/04\/Railway_Code_Software_Products_420x280_Adaptive_Recognition.png\" \/>\n\t<meta property=\"og:image:width\" content=\"840\" \/>\n\t<meta property=\"og:image:height\" content=\"560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Becs\u00fclt olvas\u00e1si id\u0151\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 perc\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/carmen-ocr-railway-code-recognition\\\/\",\"url\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/carmen-ocr-railway-code-recognition\\\/\",\"name\":\"Carmen\u00ae OCR RailCode | Accurate Global Railway Code Recognition\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/carmen-ocr-railway-code-recognition\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/carmen-ocr-railway-code-recognition\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/Railway_Code_Software_Products_420x280_Adaptive_Recognition.png\",\"datePublished\":\"2024-07-23T06:39:51+00:00\",\"dateModified\":\"2025-10-08T09:06:33+00:00\",\"description\":\"Carmen\u00ae OCR RailCode: the leading software library for accurately recognizing all global railway codes & reporting marks, including UIC, AAR, RUS, with 99.7% accuracy.\",\"breadcrumb\":{\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/carmen-ocr-railway-code-recognition\\\/#breadcrumb\"},\"inLanguage\":\"hu\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/carmen-ocr-railway-code-recognition\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"hu\",\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/carmen-ocr-railway-code-recognition\\\/#primaryimage\",\"url\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/Railway_Code_Software_Products_420x280_Adaptive_Recognition.png\",\"contentUrl\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/Railway_Code_Software_Products_420x280_Adaptive_Recognition.png\",\"width\":840,\"height\":560},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/carmen-ocr-railway-code-recognition\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product Categories\",\"item\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/products\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Software for traffic and goods transport monitoring\",\"item\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/product-categories\\\/software\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Carmen\u00ae OCR RailCode\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/#website\",\"url\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/\",\"name\":\"Adaptive Recognition | Image Capturing and Analytics\",\"description\":\"Adaptive Recognition is a leading provider of ANPR\\\/ALPR cameras, license plate recognition solutions, and ID document verification systems, enhancing traffic management and identity security worldwide.\",\"publisher\":{\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"hu\"},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/#organization\",\"name\":\"Adaptive Recognition\",\"alternateName\":\"ARH\",\"url\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"hu\",\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/adaptive_recognition_favicon.png\",\"contentUrl\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/adaptive_recognition_favicon.png\",\"width\":512,\"height\":512,\"caption\":\"Adaptive Recognition\"},\"image\":{\"@id\":\"http:\\\/\\\/adaptiverecognition.ar.local\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/adaptive-recognition\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Carmen\u00ae OCR RailCode | Accurate Global Railway Code Recognition","description":"Carmen\u00ae OCR RailCode: the leading software library for accurately recognizing all global railway codes & reporting marks, including UIC, AAR, RUS, with 99.7% accuracy.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/adaptiverecognition.com\/hu\/products\/carmen-ocr-railway-code-recognition\/","og_locale":"hu_HU","og_type":"article","og_title":"Carmen\u00ae OCR RailCode","og_description":"Carmen\u00ae OCR RailCode: the leading software library for accurately recognizing all global railway codes & reporting marks, including UIC, AAR, RUS, with 99.7% accuracy.","og_url":"https:\/\/adaptiverecognition.com\/hu\/products\/carmen-ocr-railway-code-recognition\/","og_site_name":"Adaptive Recognition | Image Capturing and Analytics","article_modified_time":"2025-10-08T09:06:33+00:00","og_image":[{"width":840,"height":560,"url":"https:\/\/adaptiverecognition.com\/wp-content\/uploads\/2024\/04\/Railway_Code_Software_Products_420x280_Adaptive_Recognition.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Becs\u00fclt olvas\u00e1si id\u0151":"1 perc"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/adaptiverecognition.com\/products\/carmen-ocr-railway-code-recognition\/","url":"https:\/\/adaptiverecognition.com\/products\/carmen-ocr-railway-code-recognition\/","name":"Carmen\u00ae OCR RailCode | Accurate Global Railway Code Recognition","isPartOf":{"@id":"https:\/\/adaptiverecognition.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/adaptiverecognition.com\/products\/carmen-ocr-railway-code-recognition\/#primaryimage"},"image":{"@id":"https:\/\/adaptiverecognition.com\/products\/carmen-ocr-railway-code-recognition\/#primaryimage"},"thumbnailUrl":"https:\/\/adaptiverecognition.com\/wp-content\/uploads\/2024\/04\/Railway_Code_Software_Products_420x280_Adaptive_Recognition.png","datePublished":"2024-07-23T06:39:51+00:00","dateModified":"2025-10-08T09:06:33+00:00","description":"Carmen\u00ae OCR RailCode: the leading software library for accurately recognizing all global railway codes & reporting marks, including UIC, AAR, RUS, with 99.7% accuracy.","breadcrumb":{"@id":"https:\/\/adaptiverecognition.com\/products\/carmen-ocr-railway-code-recognition\/#breadcrumb"},"inLanguage":"hu","potentialAction":[{"@type":"ReadAction","target":["https:\/\/adaptiverecognition.com\/products\/carmen-ocr-railway-code-recognition\/"]}]},{"@type":"ImageObject","inLanguage":"hu","@id":"https:\/\/adaptiverecognition.com\/products\/carmen-ocr-railway-code-recognition\/#primaryimage","url":"https:\/\/adaptiverecognition.com\/wp-content\/uploads\/2024\/04\/Railway_Code_Software_Products_420x280_Adaptive_Recognition.png","contentUrl":"https:\/\/adaptiverecognition.com\/wp-content\/uploads\/2024\/04\/Railway_Code_Software_Products_420x280_Adaptive_Recognition.png","width":840,"height":560},{"@type":"BreadcrumbList","@id":"https:\/\/adaptiverecognition.com\/products\/carmen-ocr-railway-code-recognition\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/adaptiverecognition.com\/"},{"@type":"ListItem","position":2,"name":"Product Categories","item":"https:\/\/adaptiverecognition.com\/products\/"},{"@type":"ListItem","position":3,"name":"Software for traffic and goods transport monitoring","item":"https:\/\/adaptiverecognition.com\/product-categories\/software\/"},{"@type":"ListItem","position":4,"name":"Carmen\u00ae OCR RailCode"}]},{"@type":"WebSite","@id":"https:\/\/adaptiverecognition.com\/#website","url":"https:\/\/adaptiverecognition.com\/","name":"Adaptive Recognition | Image Capturing and Analytics","description":"Adaptive Recognition is a leading provider of ANPR\/ALPR cameras, license plate recognition solutions, and ID document verification systems, enhancing traffic management and identity security worldwide.","publisher":{"@id":"https:\/\/adaptiverecognition.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/adaptiverecognition.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"hu"},{"@type":"Organization","@id":"https:\/\/adaptiverecognition.com\/#organization","name":"Adaptive Recognition","alternateName":"ARH","url":"https:\/\/adaptiverecognition.com\/","logo":{"@type":"ImageObject","inLanguage":"hu","@id":"https:\/\/adaptiverecognition.com\/#\/schema\/logo\/image\/","url":"https:\/\/adaptiverecognition.com\/wp-content\/uploads\/2024\/09\/adaptive_recognition_favicon.png","contentUrl":"https:\/\/adaptiverecognition.com\/wp-content\/uploads\/2024\/09\/adaptive_recognition_favicon.png","width":512,"height":512,"caption":"Adaptive Recognition"},"image":{"@id":"https:\/\/adaptiverecognition.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/adaptive-recognition\/"]}]}},"_links":{"self":[{"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/product\/2240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/types\/product"}],"version-history":[{"count":39,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/product\/2240\/revisions"}],"predecessor-version":[{"id":20577,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/product\/2240\/revisions\/20577"}],"acf:post":[{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/reference\/5690"},{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/reference\/5667"},{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/reference\/5687"},{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/reference\/5749"},{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/case-study\/1376"},{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/case-study\/1371"},{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/case-study\/1343"},{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/case-study\/1291"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/media\/8400"}],"wp:attachment":[{"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/media?parent=2240"}],"wp:term":[{"taxonomy":"category-for-product","embeddable":true,"href":"https:\/\/adaptiverecognition.com\/hu\/wp-json\/wp\/v2\/category-for-product?post=2240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}