How to scan in/to a Webapplication
I have contemplating how to handle paper document input in Webapps for some time. The main problem is how to unify metadata and a scanned PDF. For the sake of this example I will present a hypothetical Expense Claim Application. Approaches I have considered so far:
- Web 1.0, Open a webpage, create an expense claim & enter data, switch to scanning app, scan to file, switch to Browser, click on "choose file" navigate to scanned file upload it. Pros: simple to code. Cons: terrible workflow, every workstation needs a scanner (and drivers and disk space, etc. / might not work with thin clients: Citrix / the IPad)
- Barcode Style Open a webpage, create an expense claim & enter data, save, a barcode sticker is printed, stick barcode onto paper. At the end of the day scan all barcoded papers. bulk upload them and assign them based on the barcode to the expense claims. (OCRing barcodes in scans is a solved issue, e.g. see exactCODE) Pros: decent workflow, one scanner per department is enough. Cons: need barcode label printers at every workstation (easier than scanners but not cheaper), scanned papers become only available after a few hours
- Web 2.0 Style Scan with a local scanner to a [Dropbox] folder. Webapp uses the Dropbox API to detect new scans, present them to the user and ask them for entering the Meta-Data. Pros: nice Workflow. Cons: Everybody needs a Scanner, Webapp cant just pop-up and say "there's a new scan available".
- Batch Style Somebody scans all documents separating them by person which has to process them (or by type of document: Expense Claim, Invoice, Order). Documents get batch uploaded (e.g. as an ZIP) to the Webserver in a queue. A person now have to work through this queue and enter the required meta data. Pros: Only a single Scanner needs to maintained. Cons: Staff doesn't have the paper at hand anymore, only the online version. This is considered a big show stopper by my colleagues.
- Barcode Batch Somebody barcode-labels all incoming documents, scans them in a single folder and bulk-uploads them to a repository, then distributes the paper the old fashioned way to the different departments. People processing an expense claim also enter the barcode number from the paper. The Webapp contacts the repository and retrieves based on the barcode number the scanned document and saves it together with the metadata. PPros: simple to code, Cons: lot of paper still wandering around, documents might gat scanned which probably never should enter a digital repository - e.g. medical records)
- Desktop app Write an TWAIN based small Desktop application which scans, uploads to the Webapp and opens a browser window to add the metadata. Pros: nice workflow, Cons: One scanner per desktop, Not a Webapp/platform issues
Any suggestions for a better solution or comments on one of the approaches above?
Have you thought about using Flash/Air. You can allow users to use web cams or upload the barcodes via flash.
I have also been involved with some awesome products/projects where we created custom drivers, and opened them to a 127.0.0.1 localhost, and did scans/prints to and from a air application.
Air is also has recently added a NativeProcess ability which would allow you to connect to a low level TWAIN app.
Simplify metadata as much as possible, use mail for input, and the Web only for reports/edits
Assumptions: Department printers in large offices have a "Scan to email" function, which means that you get a PDF in your email for each document you scan. Even smallish "All in One" printers in the $100 to $200 range have such a function, and home offices or small businesses are likely to have one.
The process would be as follows:
- scan your document
- receive email
- add metadata in semi free-form in email
- forward email to expense service
- receive a confirmation by email w/ a link to expense report
- confirm expense report on the web
First a comment on Dekstop App: A twain app can work indside the browser if it is written as an applet or as a flash program.
Next I like the Barcode style, but I think it would be much easier if the barcodes are preprinted or bought.
- A guy can print sheets of secuencial stickers using a regular laser printer
- Or you can buy a roll of secuencial stickers
In addition, when expense claim is created the user should be asked to enter the secuencial number.