A Cloud-Native Infrastructure for License Plate Recognition and Text Extraction with Python Integration
The inspiration of this project stemmed from the passion of leveraging emerging technologies such as Machine Learning and Artificial Intelligence in real world applications. As such, a use case was explored where a cloud-based infrastructure on the Google Cloud Platform could be integrated at AutoNation to provide a personalized customer experience specifically in the service center department by extracting the text from the license plate of a car and retrieving relevant customer information from a database using the value of the license plate as a lookup criteria. Key information such as scheduled appointments, reason for visit, and customer contact information could be used by a service advisor at AutoNation to speed-up the check-in process and promote a high-quality customer-centric environment.
This project has the potential to further expand on the existing cloud infrastructure to intelligently automate status updates, appointments, document signing, customer checkout, car inspections, and rating or reviews of service. Additionally, given the current situation regarding the COVID-19 pandemic, a health aspect can be incorporated to notify customers of high density hours, reminders to social distance, locations of sanitizing stations across the AutoNation facility, and the ability to expedite/delay appointments in intervals (i.e., 15 min, 30 min, 1 hour) in response to high or low activity at a given location.
Our Database design and modeling (schema) is depicted below for reference
To view the end goal and the holistic approach of our project, please preview the demo below
An example of the constructed GUI prepopulated with information from the cloud infrastructure is displayed below
- Google Cloud Platform (GCP)
- SQL Server & SQL Server Management Studio
- Python 3.8 (on Anaconda)
- JavaFX 8.5 (on IntelliJ IDEA)
- Java 8 (on IntelliJ IDEA)
- (Optional) SceneBuilder (for UI development purposes only)
- (Optional) Blender; for video demo and animation purposes only
- Ensure that the Google Cloud SDK is installed and configured properly.
- A. Follow the instructions and documentation located here.
- Ensure that the Google Cloud SQL Proxy is installed and configured properly.
- A. Follow the instructions and documentation located here.
-
Ensure that a recent version of Python is installed (i.e., > 3.5).
-
(Recommended) Ensure that an IDE of your preference is installed for running the source code as opposed to terminal executions. The utilized technologies are listed in the above section.
-
(Optional) Install JavaFX, Java, and SceneBuilder (for displaying UI).
To download a copy of this project's source code, do a git clone
in a terminal window as follows:
git clone https://github.com/eitanflor/ShellHacks-2020.git
A large portion of the functionality resides in the cloud, as such, it is suggested to replicate the cloud infrastructure as depicted in the above diagram. As an alternative, the python portion of our implementation is independent and will process and return the extracted License Plate text from an image, this can be done in the following steps:
- Open API_utils.py and change the location path to your native Google Secret Key file as declared in
os.environ['GOOGLE_APPLICATION_CREDENTIALS']='path/to/your/key/file.json'
- Run the function below in order to extract the text from a local image of a license plate.
extract_license_plate(YOUR_LOCAL_IMAGE_PATH)
- Run the function below in order to save and export the results of the text extraction into a
.txt
file on Google Storage.
save_to_cloud(YOUR_GOOGLE_STORAGE_BUCKET_NAME, YOUR_LOCAL_FILENAME, YOUR_DESTINATION_FILENAME)
- To view the UI that is automatically populated with information from the cloud infrastructure, ensure that only the gui folder is imported a project into your preferred IDE for Java. Customize the configurations as seen below for proper functionality.
- A.
public void sql_Start(String plate)
"jdbc:sqlserver://YOUR_SERVER_NAME:PORTNUMBER;"
+ "database=YOUR_DATABASE_NAME;"
+ "user=YOUR_USER_NAME;"
+ "password=YOUR_PASSWORD;";
- B.
String PATH_TO_JSON_KEY = "path/to/your/key/file.json";
String BUCKET_NAME = "YOUR_GOOGLE_STORAGE_BUCKET_NAME";
String OBJECT_NAME = "YOUR_GOOGLE_STORAGE_FILE_NAME";
Once this is completed, build and compile the source code using the respective feature in your IDE. The UI should now be visible and display the information dashboard.
- Eitan Flor - [email protected]
- Jerry Contreras - [email protected]
- Jarret Torres - [email protected]
- Hanson Nguyen - [email protected]