大家好,感谢您的提前帮助。我正在尝试开发一个使用OCR读取入站传真的应用程序。我正在使用在Windows Server 2012平台上运行的Microsoft传真服务。首先,我正在尝试使用Tesseract 4.0执行OCR功能。视传真而定,结果令人沮丧,这在给定可变质量的情况下是可以理解的。我试图使用以下代码更改每个tiff帧的分辨率并将图像另存为png:
foreach (Guid guid in tiffImage.FrameDimensionsList)
{
for (int index = 0; index < noOfPages; index++)
{
FrameDimension currentFrame = new FrameDimension(guid);
tiffImage.SelectActiveFrame(currentFrame, index);
//tiffImage.VerticalResolution = 300;
tiffImage.Save(string.Concat(pstrOutputPath, @"\", index, ".TIF"), encodeInfo, null);
float xDpi = 500.00F;
float yDpi = 500.00F;
Bitmap bmp = new Bitmap(tiffImage);
bmp.SetResolution(xDpi, yDpi);
//PngBitmapEncoder encoder = new PngBitmapEncoder();
FileInfo info = new FileInfo(pstrInputFilePath);
bmp.Save(string.Concat(pstrOutputPath, @"\", Path.GetFileNameWithoutExtension(pstrInputFilePath) + "_" + index, "_PNG.png"), System.Drawing.Imaging.ImageFormat.Png);
string NewFile = string.Concat(pstrOutputPath, @"\", Path.GetFileNameWithoutExtension(pstrInputFilePath) + "_" + index, "_PNG.png");
GetExtractedText(DataPath, NewFile);
}
我还没有真正尝试过任何其他类型的预处理。由于入站输入的可变性,我意识到传真是困难的,但是我必须相信商业产品的结果率比我实现的要高。我想知道我还可以进行其他什么预处理,例如OpenCV或类似的东西。任何帮助将不胜感激。
更新:
我必须清理一些示例,但为了简洁起见,我将发布一些示例,并附上更多示例:
当Tesseract碰到这一部分时,我要么变得完全乱码,要么最好是将日期中的斜杠返回为数字1。
样本2返回乱码。示例3还仅返回乱码,可能是由于未按比例调整图像大小,但是,令我惊讶的是,此操作失败。我意识到图像的背景和粒度导致了问题,但我认为(可能是错误地)可以解决此问题。我对图像处理的经验不是很丰富,因此您提到的一些想法是我过去从未处理过的。