Our LPR API 2.0, trained on a vast collection of images using TensorFlow 2.X and YOLO V4, provides a cost-effective solution to the increasing demand for license plate recognition (LPR) technology. This system processes license plate images and uses advanced optical character recognition (OCR) to convert them into alphanumeric characters. This conversion enables various applications, such as automating vehicle entry and exit from parking areas or secure zones, managing inventory, and automatically blurring license plates.
Our web-based, real-time LPR technology allows you to implement these solutions with a modest budget, eliminating the need for substantial initial investment. Our LPR API makes cutting-edge technology accessible without significant financial outlay. LPR is crucial for automated systems in road traffic monitoring, toll payments on freeways and highways, security access, and parking control. Given the variation in license plates across different jurisdictions, our LPR engine is specifically designed to work effectively within the USA and Canadian regions.
LPR is a multi-stage process comprising plate localization, character segmentation, optical character recognition (OCR), and identification of originating jurisdiction (state or province).
To obtain the maximum license plate recognition accuracy, you need to take a clear image. The image is sent to our system that analyzes the image and extracts license plate information
While the whole process seems simple enough, consistent challenges affect the accuracy of the system – jurisdictional license plate designs, varying fonts, graphic designs, cleanliness, coverings, and the presence of only one license plate to name a few. The inconsistencies can result in misreads, these misreads can impact the accuracy of the data being extracted.
The OCR subsystem in our LPR engine accepts individual character images as input and runs algorithms to classify the image as one of 32-36 (depending on jurisdiction) class labels such as A-Z and 0-9. Resolving the so-called "close-character" ambiguity is critical to maintaining high accuracy in the OCR results. These “close character” errors includes: "I" incorrectly recognized as "1"("I/1", vice versa), "B" incorrectly recognized as "8"("B/8", vice versa), "D" incorrectly recognized as "0"("D/0", vice versa), "O" incorrectly as "0"("O/0", vice versa), "A" incorrectly as "4"("A/4", vice versa), "W" incorrectly as "H" ("W/H", vice versa), "M" incorrectly as "H" ("M/H", vice versa), etc.. These close character errors become even more prevalent when the captured license plate image has more extensive blur in it.
One method to resolve this close-character ambiguity is to use knowledge of the valid character sequences for a given jurisdiction and/or plate type. For instance, in NY the standard passenger car license plate is formatted as three letters followed by four numbers (LLLNNNN). Thus, if the OCR of a NY license plate produces a result of A8C567B, the mistakes in the “8” and “B” locations can easily be corrected. The same would be true for the “0” and “D” close-characters since they too cross a letter-number boundary.
An extremely challenging aspect of the overall LPR problem is the segmentation of the individual license plate characters into separate images in preparation for OCR. The accuracy of the OCR process can be negatively impacted by inconsistencies in the segmentation. One particular challenge with segmentation is separating valid characters from logos and other symbols on the license plate.
A related challenge is the ability to identify valid characters versus extraneous content, like logos and border artifacts, which may also appear in the plate image. It is desirable to pre-screen these candidate characters prior to OCR in order to prevent erroneously recognizing a non-character as a valid symbol. In our LPR engine, a second stage machine learning classifier is used to screen these candidate character images.
There are six primary algorithms that our LPR engine requires for identifying a licence plate:
US/Canada license plate formats are something of a mixed salad when compared to other countries, especially the EU countries. While fonts and spacings for the main number of a license plate is mostly standard across the states/provinces, other aspects of a plate vary widely from one jurisdiction to another. One of the main problems is the fonts and styles used for the jurisdiction of issue of the plate as well as color schemes and custom designs. Contrast across the plate can vary wildly with graphic elements creating such poor contrast between the number and the background that it is barely readable.
The use of state/province approved slogans such as “YOURS TO DISCOVER” or “EMPIRE STATE” as additional little quips which clutter the plate only serve to complicate the process of automated recognition and reading.
Once the LPR engine has managed to sort out the fonts, graded background color scheme, custom reflectivity, random prose, tax stickers, decals and assorted images of palm trees, medals and other paraphernalia, the engine then has to make sense of the information it has received. The number itself has different meanings in different states/provinces with no standard format. A letter or number position in one state/province could mean the month of issue while it could mean the county of issue in another state/province.
Our LPR API may be used for/by:
Our LPR Web Serivce works reasonably well on still pictures. It has never been tested on videos.
<LPR>
<License_Number>BVRX578</License_Number>
<Region>Ontario</Region>
<Country>Canada</Country>
<Left>45</Left>
<Top>57</Top>
<Width>305</Width>
<Height>25</Height>
</LPR>
<LPR>
<License_Number>800002</License_Number>
<Region>Washington DC</Region>
<Country>USA</Country>
<Left>336</Left>
<Top>258</Top>
<Width>165</Width>
<Height>27</Height>
</LPR>
<LPR>
<License_Number>ILUVNY</License_Number>
<Region>New York</Region>
<Country>USA</Country>
<Left>640</Left>
<Top>678</Top>
<Width>198</Width>
<Height>78</Height>
</LPR>