Python, Android, Kotlin, Google Vision AI, Tesseract-OCR, Vue.js
OCR and MRZ based form fillup.
Ridid is an OCR based system for hotel chains in Spain where their id is scanned and the data is fed in from the MRZ. The hotels by law have to keep the data updated into government records. The system allows the hotels to update such data in real-time with the concerned authority. The system is used at the reception of the hotels and the manager is able to collect verified information at the reception without the need to keep records on a book.
We started with the project by making a niche feature of creating interactive Acroforms pdf for the client, Arturo Lopez, an entrepreneur from a town Andorra in Spain. After the feature development, we agreed upon building a mobile app and a webapp which evidently collects the information by scanning MRZ present in each card. Our client did the market study and reached to the conclusion of testing the markets with an android application first. He also decided to create a responsive webapp that would mirror the functionalities of the app for people who have access to a system at the front desk. As a third-party procurement, he also 3D printed a module with an IoT device set in for the app.
Our client was also a technology enthusiast and decided to develop the server-side himself. The tech stack he chose to build his API was to use Flask framework for Python 3.x. The OCR technology was decided to keep in the client-side with the objective of collecting the correct MRZ with different variants of id cards. Since the OCR was kept on the client-side it was essential to gain accuracy separately in both the mobile app and the webapp. We built the Android app with Kotlin and the modules of OCR were tested and tweaked for various open-source libraries with Tesseract-OCR by Google and Google Vision AI, giving the best accuracy until ML was used later for the purpose. For the webapp we used VueJS as our frontend framework and Google Vision AI as the OCR library to collect MRZ information which got triggered from the backend. This MRZ information was used to prefill the next form. The MRZ served the purpose of validated data feeding to the authorities. As the phases progressed we had the requirement to collect and prefill the address of the user from the card and append a signature pad for the users in the form. Once collected the information on the client-side, it was passed on the user’s server-side using the API created by Arturo, and it later served on to pass the data to the concerned authority from the server-side itself.
We followed the agile scrum creating multiple sprints to develop and integrate different parts of the apps. The design for the mobile apps was procured from the client and the designs for the webapp were kept in a similar theme and created by our own team. The features were built individually to test the accuracy first and then integrated and delivered to the client. The bugs during each sprint were revised and fixed in the next sprints. A considerable amount of time was spent to get the accuracy of the OCR for different variants of id cards under check.
We have delivered both the apps to the client with the integration of the ML module created/procured by the client for later use in the OCR. The client is actively testing the product with different vendors and is currently in the feedback phase. From here on our client is curious to expand the project himself and our team helped and supported him during the transition.