Wednesday, 10 September 2014

Quick WiFi v1.0

QuickWiFi aims to make connecting to a WiFi AP easier, especially when WiFi keys (WEP or WPA2) are usually annoyingly long random alphanumeric strings.

Using OCR (Optical Character Recognition) Quick WiFi parses in the SSID and Key of a WiFi network from an image, and connects to the network automatically. The whole process (when it works), can take much less time than it takes to read and type in a long password on the back of a WiFi router.

I started this project back at the start of summer. It is intended as a novelty use of the Tesseract OCR system, compiled for android. With some more work the app could in theory become useful for real world application, but at the moment it only performs well under "controlled conditions".

How it works
1. Quick WiFi uses the android camera library to create it's own camera instance 
2. The user takes a photo 
3. The user crops the photo to try and include just the SSID and Key text, using the android-crop library, in order to improve the accuracy of OCR reading (removal of extraneous text) 
4. Quick WiFi then calls Tesseract to extract the text from the cropped image 
5. Then the SSID and the Key is extracted from the text 
6. Quick WiFi calculates the hamming distance of the SSID against the SSID of each currently available WiFi connection (This allows space for error in the SSID but not in the key) 
7. It then connects the network with the shortest hamming distance using the acquired key.

Ideal conditions
On my travels I noticed that in the places I stay in (ranging from hostels to B&Bs to hotels) most places opt for the WiFi network name and password written on a piece of paper on the wall in the lobby or in your room. For Quick WiFi, these conditions are ideal as the text is normally large and clear. However when it comes to the back of a router, the text is normally very small and Quick WiFi can struggle to produce accurate results.

Further Work 
The reliability of OCR results on Quick WiFi are only as accurate as the Tesseract library will produce. OCR is still an ongoing research area in Computer Science.
The Parsing of SSID and Password in Quick WiFi is still very primitive, and It matches on only a few key words and arrangements of this information. NLP techniques could be implemented in it's place but it could also be overkill for such a small amount of text. A slightly more sophisticated algorithm would suffice.

You have the following options;
- Clone GitHub repository and compile using gradle
- Bleeding edge download 
- Version 1.0 download