Our client looks to implement an automated system for passport and visa recognition. Target solution should provide an optimal way to scan a passport (possibly, just machine-read any bar-codes / machine readable fields), and to process resulting images to get out of them:
- Personal information (owner’s photo, first / last name, birth date, document ID number, issue / expiration date, place of issue, etc.);
- Visa information. For each visa in passport it includes: visa type, countries it is valid for, issue / expiration date, ID number(s), is still valid or was it annulated, etc.
- Optionally, we would like to verify that entire passport was scanned, i.e. that the total number of pages matches the expected one, that each page matches expected design for the passport of that country, etc. Think about two use cases: (1) we just want the person to prove that he has a valid visa to travel to specific country(-es); in such case we can ask to scan just the main page, and the page with visa; (2) we want a full scan of passport, to ensure that we have full information about visas a person has.
In this ideation challenge we want you to explore this subject and propose detailed proposals on the most optimal way to implement such system; from the best device to use for scanning of passport, to software solution to process the input and provide extracted data to the external system. Pay especial attention to the fact that we want to support passports and visas for a large list of countries (~100 of them), thus you should elaborate on the most efficient way to train / program your solution to work with such large list of possible passports / visas (including the best ways to get reference data for this training / programming). Also, take into account that resulting solution will be used in .NET project.