Like many companies and individuals, I still have to deal with paper. Even though it's becoming an increasingly digital world, paper still reigns supreme in some areas. I have looked at document imaging systems in the past when I worked at another company, and found them to be quite expensive. Below is my open source solution to this common problem, and it only cost me hardware.
Step 1: Find a good scanner
Sometimes it's hard to get good hardware that is supported in Linux. Many major manufacturers are now offering Linux drivers and Brother happens to be one of them. They have a line of multi-function machines that work very well in Linux with their supplied driver (at least in my experience). The scanner I use is the MFC5440CN. The reason I use this particular model is because it has a 35 page automatic document feeder (ADF). That may not seem like very much capacity, but if you have a longer document you can add pages to the ADF while it's scanning. In addition to the ADF, the scanner can be acquired for little money; Amazon has it listed for $123.49 with free shipping. A USB cable will have to be acquired separately (if you don't already have one) because it is not included with the scanner.
Step 2: Install drivers & software
This part is incredibly simple compared to some other devices I've tried to use, partially because of the simple package management in Debian Linux and partly because Brother supplies a good open source driver. You can simply navigate to their page that contains Linux drivers and download the appropriate one for your distribution. I used the brscan2 Debian installer package.
After the driver is downloaded, it can be installed by typing (as root) "dpkg -i brscan2-0.0.2-1.i386.deb" (without quotes). The only other software required for this is SANE, ImageMagick, and pdftk. In Debian Linux these are easily installed by running "apt-get install sane imagemagick pdftk" (again, without quotes).
Now that the driver and software is installed, some configuration may be necessary in /etc/fstab depending on your configuration. If you already have a line for /proc/bus/usb in your /etc/fstab then you will need to modify it with your favorite text editor (VIM) to read:
(users with 2.4.x kernels use usbdevfs instead of usbfs)
none /proc/bus/usb usbfs auto,devmode=0666 0 0