I've found Tesseract OCR to be pretty solid for an open source project. I've found that it can even read and decode simple captchas, like Megaupload's. I'd think with a little tweaking this could work pretty well.
The only pain is that it only accepts uncompressed TIFF images, which can be annoying.
EDIT: Philip Daubmeier already found a .NET integration, but below is code to convert a Bitmap to uncompressed TIFF.
private void ConvertBitmapToTIF(Bitmap convert)
{
ImageCodecInfo codecInfo = GetEncoderInfo("image/tiff");
System.Drawing.Imaging.Encoder encodeCom = System.Drawing.Imaging.Encoder.Compression;
System.Drawing.Imaging.Encoder encodeBPP = System.Drawing.Imaging.Encoder.ColorDepth;
EncoderParameters parms = new EncoderParameters(2);
EncoderParameter param0 = new EncoderParameter(encodeCom, (long)EncoderValue.CompressionNone);
EncoderParameter param1 = new EncoderParameter(encodeBPP, 8L);
parms.Param[0] = param0;
parms.Param[1] = param1;
convert.Save("output.tif", codecInfo, parms);
}
This saves to a file, but the Bitmap.Save method can write to a stream also.