Jedd Hui
Automatic Number Plate Recognition
Motivation
Driving is a very integral part of life in the United States. As such an important everyday activity, systems must be put in place in order to efficiently catch people breaking traffic laws and maintain the safety of the road. With the rising popularity of deep learning and computer vision, automatic license plate recognition has become a promising idea. The ability to automatically precisely track specific vehicles has many applications for keeping the road safe. Automatic license plate detection systems can both be installed on roads and on vehicles themselves. Some applications include but are not limited to toll booths, border crossings, ticketless parking, vehicle registration, and vehicle tracking. License plate recognition has the potential to streamline the process of many vehicle related systems by allowing each vehicle to be tracked much more easily.
Current Technology
Currently, automatic number-plate recognition (ANPR) is used in various countries around the world for law enforcement purposes. It is also commonly used in electronic toll systems and tracking the movement of traffic. ANPR was first developed in 1976, but did not become used in a widespread fashion until the 1990s. Traditionally, ANPR uses optical character recognition on photos to recognize the characters on each license plate. Generally, ANPR systems will be tailored to the license plate designs of the area they are placed in. Many of the programs are tied to each country because of the difference in license plate design. There are several main algorithms that ANPR systems follow in order to identify a license plate. The software first isolates the license plate in the picture, normalizes the picture to the correct dimensions and brightness, finds the individual characters on the plate, and finally uses optical character recognition. Common issues that current systems face include blurry images and pictures taken from angles where the license plate is slanted.
My Approach
I originally planned on training an optical character recognition system from scratch and then implementing object recognition using TensorFlow. However, due to hardware difficulties and difficulty in implementing and training the OCR I ended up using an open source OCR called OpenOCR that makes use of the well known Tesseract API for OCR. I then used TensorFlow's object detection API as a baseline for my license plate detection. TensorFlow models generally are convolutional neural networks which are very good for training computers to recognize images or videos. I then used this API for license plate recognition by training it on an open source Kaggle dataset containing various pictures of vehicles with license plates.
Issues during Implementation
Trying to create an OCR from scratch without using one of the well established open source OCR APIs was much more difficult than I expected. After deciding to use OpenOCR, the main problem I encountered was the OCR recognizing other characters on the license plate that were not part of the license plate numbers.

For example, in the image above, the program would pick up both "New York" and "Excelsior" as part of the license plate numbers. I solved this problem by having the program filter out the characters in the image that did not take up a significant part of the images.
Results






Further Ideas
With better hardware and more time I would like the implement real time video detection. I would also like to try to put the program into a full application that is more user friendly and maintains all the functionality of the program.
Sources and Links
https://en.wikipedia.org/wiki/Automatic_number-plate_recognition
https://www.kaggle.com/datasets/andrewmvd/car-plate-detection
https://github.com/nicknochnack/TFODCourse
Source Code: https://drive.google.com/drive/folders/1iMSMNBcxoS6mVAfFl3OOZ0D74SrMVQXo?usp=share_link
Presentation: https://docs.google.com/presentation/d/1TAfPE8j7lIKQwbUAo4Ni7sVPFzWKKzNg3ML9E24KPmo/edit?usp=share_link