What is the algorithm behind OCR? I'm curious about the algorithm and basic principles behind Optical Character Recognition. 

Can anyone explain:


The most basic OCR algorithm that can be fairly easily implemented from scratch? Or the common denominator between different OCR algorithms?
Extensions/changes made to tailor the algorithm for application specific goals?


Also see my follow up question on OCR.
Probably the simplest OCR algorithm would be the case where the characters are from a known font, in perfect rows with no distortion or rotation, and then you can find occurrences of each character in the text by doing cross-correlation with the known characters from the known font.

Or even simpler if you can create the font before it's used, with cheaper ways to recognize characters, like the MICR fonts or OCR fonts.