I use Remark Office at my University for course evaluations, exams, surveys, etc. Been using it nearly ten years and I'm pretty happy with the results.
It takes a bit of work getting the initial form designed, but after that scanning and reporting are very straightforward.
You design a form (I usually just use MS Word), scan the form to an image file (jpg, tiff) and then 'train' Remark from the image to recognize response regions on the form. As long as the response areas on the form are unchanged (nothing added or moved) you can make changes to other parts of the form and use the same scanning template.
Scanning can be done with any optical scanner (from a cheap-o desktop type to a mode costly production model). Remark will scan duplexed forms if the scanner supports them.
For example, for course evaluations, the main part of the form is reserved for questions with bullet lists for responses. The headings on the form can be changed (course title, semester, instructor, etc.) without having to re-train Remark to recognize the responses. To allow us to identify different forms, we have a field in the header which contains an ID number encoded as a bar code. Remark interprets the bar code during scanning and includes the ID in the output file.
The reporting utilities are pretty good, but you can also export the raw data if you need to generate something fancy.
Remark is NOT inexpensive (currently it is $995.00), but it is very flexible.