Sweden, 2014 - 2016
6 engineers

Parking management and control SaaS tool

A parking management SaaS system with plate number recognition software, payments, SMS integration, financial reports and comprehensive back end management panel for city operators such as municipalities and parking companies.

 

Technical stack includes:

PHP Symfony 2 AngularJS jQuery OpenCV OpenALPR TesseractAndroid Java Objective CMySQL HTML5 CSS3 RedisMemcache AWS Jenkins Kubernetes Docker

The idea

Our goal was to help drivers to pay easily with SMS and be informed when the paid time slot is about to be over, help attendants to check and validate car plate numbers, monitor car stats, and accept cash payments, help parking operators to monitor all processes happened on the parking and be able to act adequately, finally to help CFO to get immediate and correct financial information for better business control.

PoC and MVP

Having analyzed all the client's requirements, we decided to take the safest development path. In order not to get into technical risks, we decided to create a POC before creating an MVP. Therefore, initially, we created only a system for recognizing vehicle numbers. When it became technically clear that our development was successful, we started working on the MVP.
 

Plate recognition

The famous OpenALPR solution was poor at the time when we started our work on this project. So we developed our own plate recognition solution using the OpenCV library. We launched MVP with our implementation, and in a year we switched to OpenALPR. As a result, the system can recognize license plates of not even the best quality, purity, or with additional images.

Database

The database model was designed and improved during four sprints. Since this software is an enterprise-level SaaS we had to make it multi-company. Every company will have hundreds of users which are either operators or attendants. A car is parked and validated in a certain zone so we always know all information sliced by either zone, car, or attendant. We designed storage for tons of incoming validation requests.

Plate recognition

Without revealing all technical secrets and getting into weeds, we use OpenCV and Tesseract libraries... and lots of complex maths.

Locating a plate

Using a combination of filters, histogram, and contour analysis we find a vertical position of a plate. The license plate is not the only text we can find ;-)

Fine crop and noise removal

We fine crop plate numbers very accurately to remove all unneeded objects and make the final result cleaner. Using various filters we remove other noise around characters preparing it for recognition.

Rotation handling

We support the rotation up to 30 degrees in both directions. Skew is detected and the plate is deskewed for a more accurate histogram analysis.

Tesseract teaching

To make it recognize accurately we had to gather a big database of different plates, built vocabulary of all possible characters and digits written in all fonts used in the countries of our clients.

Mobile Application

Choosing a parking zone

A mobile application was developed for parking attendants to simplify and speed up plate validation and car control. After logging in an attendant chooses a zone he is currently in from the list of assigned ones and is redirected to the video camera screen.

Video stream, plate capturing, and recognition

A video camera is used to capture a plate number. Our software locates and recognizes license numbers on the video frame which can be corrected then if needed. After validating the car attendant receives all car-related information from the server such as balance, paid time left, notes, etc. and can either accept cash payment or go to the next car.

Fines and payments

If paid time is over and the car owner didn't pay attendant can rise a fine for this car which is printed on the mobile Bluetooth printer and immediately visible in the parking administrative panel.

Operator back-end

Using Bao, our own back-end development package based on Symfony 2, AngularJS, Bootstrap, and jQuery frameworks, we have built a Google-style administrative back-end for parking operators as well as a system administrator who can control all companies.

Fast and informative data grids show all information needed for operators to monitor everything that happened in parking zones. Bulk operations such as deletions, status changes save a lot of time. Filters and sorts are all fast and work without page reload making all management to be a pleasure.

We are in the progress of adding reports and charts...

AI teaching

Since this system was developed for implementation in African countries, where rather specific license plates are used. They come in one or two lines, blue, which is not typical for USA or Europe. Therefore, we used existing open-source databases to train the system to recognize license plates, but the accuracy turned out to be quite low. We were able to increase the accuracy from 50% to 85% by programming the system in case the parking operator takes a picture of the car license plate and sends it to the sysadmin, who manually entered this data into the system. So with each new picture, the recognition accuracy increased and reached a decent level of use.
 

Do you have a similar SaaS product that requires development?

Whatever stage your SaaS solution is at, get in touch with us to discuss it. It is FREE and we engage fast. We will help you with onboarding right engineers with strong experience in SaaS development and deep understranding of SaaS business, better planning, priorities, and realistic estimations.

 
Diana
Tarazevich
Head of sales department