This is an end to end application to automate the process of manual feeding in data from a form into the database. Instead of manually typing each and every data of every form, now the user can just click a picture of the form, upload it on our web app and the data is automatically stored into the database with each data into their respective field.
The document scanning project involves
- Marking The Template from an Empty Form
- Registration of Form Template with the Filled Form
- Extraction of Fields from Filled Form
- Breaking of Fields into Boxes each consisting of Character
- Character Recognition from the Box Image
- Storing the translated data into the Database
From Thousand Clicks to One Click
The application uses the following modules:
- Flask
- Numpy
- OpenCV
- SQLAlchemy
To install the packages run the following commands:
$ pip install -r requirements
To run, clone the directory, make sure all the required packages are installed, then type the following commands, inside the cloned directory:
$ cd template-marker
$ python3 flask_app.py
This hosts the backend flask server in the localserver port 8080. Now run the following command
$ cd react-app
$ yarn
$ yarn start
The user can Signup or Login with the credentials: Username : admin Password : admin
Next the user should Mark the Template by selecting the Mark Template option in the navigation bar. To mark the the template, one has to fulfil the following steps:
- Upload the Empty Form Image
- Mouse Left click on the form to make a draggable rectangle appear
- Resize and drag the rectangle by clicking on the rectangle sides and moving the cursor, such that it traces the field borders
- Click on the green button to lock the rectangle position and enter the respective field name, optional field description, the field type (text,checkbox,signature) and submit it
- To edit any marked field just press on the orange button to unlock it and make changes
- To delete a field press the red button along the rectangle
- After marking all the fields enter the template name and optional description and submit the template
Now to get the data of a filled form, make sure that its template is already marked by the user. Then select the Get Data option from the navigation bar and fulfil the following steps:
- Select the template that the filled form corresponds to
- Upload the image of the filled form and press submit
- Wait for the prompt of succesful submit
- Now Go to previous templates option in the nav bar and press the show data button for the corresponding form to check the translated data
Some Useful Tips and Information regarding the pipeline intermediates:
- The Uploaded Empty Form is stored in the
./react-app/public/templates
folder with name corresponding to the template id - The Uploaded Filled Form for getting data is stored in
./react-app/public/templates
folder with the name corresponding to the template id + " form" - The registered image is stored as
finalimage.png
in the./react-app/public/temp
folder - The extracted boxes are stored in the
./react-app/public/temp/blocks
folder with name corresponding to the field id along with the box number