not sure wether I'm the only one, but I hate spending time registering client ID data for legal reports and have been thinking of a way to speed things up (NB: the script is still in debugging phase).
My set-up (how data goes from IDs into HD):
ID scanning app --> email (as "interface" with the scanning app) --> bash script --> HD
I'm using BlinkID from Microblink on Android. This app does a fairly good job scanning the Machine Readable Zone (MRZ) available on all modern IDs. I estimate accuracy to be well above 95%, as long as scanning conditions are taken care of:
- light (get enough of it)
- reflection (get rid of it)
- stabilisation (both the phone and the ID should stand still)
The best way to achieve this is to build some sort of stand, ideally with an integrated light source at the right angle (using the camera LED will produce reflection).
The result:
- scanning each ID takes about 3 seconds (provided scanning conditions are alright)
- at the end of the day, running the script will insert all data into HD
- from inside HD, I can then generate a document containing all the info for the authorities
- as a bonus, my client profiles are accurate and contain additionnal information that might prove usefull (e.g. gender, birthdate)
Installation
1. if you use Windows, you need to install WSL to use bash:
https://docs.microsoft.com/en-gb/windows/wsl/install-win10
2. create a modified lista_nazioni.php file, replacing two-letter with three letter codes, or use this one:
https://pastebin.com/v3Y1LeF8
This file is used to match country ICAO codes found on IDs with actual country names, for registration inside HD.
3. install curl, getmail and pcregrep
4. download the script from here: https://pastebin.com/Br67DYAJ and make it executable (i.e. chmod +x yourscriptname)
5. set-up getmail config file and needed directories (additionnal info inside the script; sample .getmailrc: https://pastebin.com/7hwr4UpZ)
6. install NetGuard firewall app on your android tab/phone (optional but recommended if you don't want to send your guests' ID data to Microblink)
7. install BlinkId app on your android tab/phone and set up NetGuard to forbid internet access to BlinkId
8. install and set-up k-9 mail on your android tab/phone (optionnal, but handy as it allows to specify a default Bcc address, saving the hastle of entering a recepient after every scan)
Usage:
Open BlinkId app and scan an ID
Share to k-9 mail, send and go back for next scan
Once all IDs have been scanned, run the script to insert the data inside HD
Final thoughts
This is a obviously a WIP. As stated inside the script, there are things left to be done. Furthermore, I'm not a bash expert, so there surely is room for improvements: if anyone has some corrections to submit, please do!
But Microblink's technology does work surpisingly well for OCR, and their SDK would allow for a nice app integrating into HD

EDIT 1 (01/03/18): new script version with some minor errors corrected. Also added pcregrep to installation.