Aniruddha-Tapas / Document-Scanner

Source code for the Capstone Project of Udacity Android Developer Nanodegree
GNU General Public License v3.0
364 stars 140 forks source link

Document Scanner

This app turns your mobile into a portable scanner, which can be used for scanning handwritten notes and printed documents.

It automatically detect the edge of the paper over a contrasting surface. When using the printed special page template it automatically detects the QR Code printed on the bottom right corner and scans the page immediately. After the page is detected, it compensates any perspective from the image adjusting it to a 90 degree top view and saves it on a folder on the device.

It also incorporates OCR functionality which the user can use to detect text from documents and save them as editable text files in the external storage of the device.

It is possible to launch the application from any other application that asks for a picture.


Features

Screenshots

Libraries

  1. OpenCV Android v3.1.0 for capturing and manipulation of images. Due to this version of OpenCV integerated in the app, it needs to run on Android 5.0 (lollipop) or newer. You can integrate a lower version of OpenCV like v2.4.3 if you want to run the app on devices below Android 5.0.

    How to integrate OpenCV into Android Studio

    This stackoverflow link demonstrates the static initialization of OpenCV in Android Studio. The OpenCV native libraries are the main reason for the 38mb sized APK. To avoid this, you can make use of OpenCV Manager application which should to be installed on the android device so as to make OpenCV work.

Google Services:

  1. Google Zxing for barcode detection and image processing.

  2. Google Mobile Vision Text API to see and understand text using OCR.

  3. Google Analytics to measure user interaction with the app.

    If you want to use Google Analytics in your app, you'll require a configuration file. You must have a Google Analytics account and a registered property to get the configuration file.

    Get A Configuration File

    Then copy the google-services.json file you just downloaded into the app/ or mobile/ directory of your Android Studio project. Open the Android Studio Terminal pane: For Windows : $ move path-to-download/google-services.json app/ For Mac/Linux : $ mv path-to-download/google-services.json app/

  4. Android-Universal-Image-Loader for loading, caching and displaying images in the gallery grid layout.

  5. FABToolbar for implementing a Floating Action Button transforming into toolbar.

  6. Drag-Select-RecyclerView for Google Photos style multiselection for RecyclerViews.

External code and References

This project wouldn't have been possible without the following great resources:

not to forget: