Railcar ID number recognition

Viinex offers a module with a universal set of functions for recognizing 8-digit numbers for 1520mm gauge railways. Numbers are applied to all types of railcars of any form of ownership that have the right to exit on public tracks. The directory album is used by countries: Armenia, Azerbaijan, Belarus, Estonia, Georgia, Kazakhstan, Kyrgyzstan, Latvia, Lithuania, Moldavia, Russian Federation, Tajikistan, Turkmenistan, Ukraine, Uzbekistan.

Railcar ID recognition module can be integrated and deployed as a part of weighbridge and train supervision checkpoints software. The module is released as an external software, it is started automatically by Viinex service and allows to perform railcar number recognition in the process of static and dynamic weighing:

  • receives video data simultaneously from several cameras, both survey and for railcar number recognition via ONVIF and RTSP;
  • records video to the archive;
  • decompresses video stream for video analytics;
  • recognizes railway car ID numbers;
  • consolidates the results produced by a recognition algorithm for video stream from each camera, including the cameras mounted on either side of the railcar/rail tank or controlling numbers on a bogie (truck) and railcar side. This is done to improve recognition quality, which is particularly important for dirty ID numbers of cars transporting hydrocarbons, cement and coal or illegible ID numbers of old railcar fleet. The results of recognition are automatically consolidated to get the best hypothesis for each railcar or railtank.
  • “divides” train to railcars for recognition:
  • based on a signal from a sensor connected to Viinex via ModbusTCP protocols;
  • based on API on request from an integrating software, this is to ensure that the number and the list of railcars in weighing software and in Viinex correspond, since the data on railcars separation is taken from the same source.

There are two ways to receive the results produced by the railcar number recognition module HTTP request and WebSocket subscription.

Managed mode railcar number recognition (HTTP request)

HTTP request GET to the control script that serves a railroad track:


Automated mode railcar number recognition (Websocket)

WebSocket subscription, using the command:

["subscribe",{"topics":["RailcarNumberRecognition", "Train"]}]

The application will start receiving via its WebSocket channel recognition events, as well as events on start and end of train passing. Every recognition event is a result of a single railcar recognition.

Recognition results return as a JSON object containing the last recognition result as well as an array of a certain number of last recognition results.

A recognition result on a single railcar contains the following fields:

  • timestamp for the frame that recognition was performed on, which contains three other timestamps indicating the time of the first frame processed for this railcar in this video channel, the time of the last frame and the timestamp for the frame with the best result. These timestamps can be used to make snapshots or playback videos stored in the archive.
  • railcar number recognition result;
  • identification of the railway track the result comes from;
  • a number value that describes engine confidence level;
  • a 64-bit number identifying the act of recognition;
  • an array containing information for each railcar on recognition details for each of the video channels.