Don't limit yourself to .NET
OCR has been a solved problem for years -- well before .NET came out, and open source projects tend to use non-proprietary languages.
I was part of the team that produced one of the first comercially successful OCR products for the PC in 1988. I would expect that most open source OCR projects were started in the early 90's.
There are probably very good open source solutions out there -- most likely in C++.
You are going to be a lot happier if you select the best quality OCR available and then do the work to interface to it -- rather than settling for inferior OCR that's easy to incorporate in your project.
A quick search turns up this project:
http://code.google.com/p/tesseract-ocr/[
^]
Apparently it was pretty accurate back in 1995 and Google has adopted it and done a lot of work on it since 2006.
It's already ported to Windows and VS2008/2010 -- so all you have to do is interface your .NET code with it.