是否有任何 OCR 引擎设计用于识别屏幕捕获图像中的文本而不是扫描文本?我有一个项目,我需要在应用程序中检索和识别文本,到目前为止,我尝试过的所有 OCR 引擎都没有很好地处理屏幕截图。
理想情况下,引擎应该可以很好地处理颜色和背景噪音,但如果没有类似的东西,我可以做一些余量。
它需要与 .NET 兼容;用 .NET 编写或具有 .NET 可调用 API。
是否有任何 OCR 引擎设计用于识别屏幕捕获图像中的文本而不是扫描文本?我有一个项目,我需要在应用程序中检索和识别文本,到目前为止,我尝试过的所有 OCR 引擎都没有很好地处理屏幕截图。
理想情况下,引擎应该可以很好地处理颜色和背景噪音,但如果没有类似的东西,我可以做一些余量。
它需要与 .NET 兼容;用 .NET 编写或具有 .NET 可调用 API。
我发现Tesseract OCR对于开源项目来说非常可靠。我发现它甚至可以读取和解码简单的验证码,比如 Megaupload 的。我认为稍微调整一下这可以很好地工作。
唯一的痛苦是它只接受未压缩的 TIFF 图像,这可能很烦人。
编辑:Philip Daubmeier 已经找到了 .NET 集成,但下面是将位图转换为未压缩 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);
}
这将保存到文件,但Bitmap.Save方法也可以写入流。
通常 OCR 技术经过调整以处理至少 200 dpi 的扫描文本,但建议使用 300 dpi 以获得可靠的 OCR 质量。因此,您需要付出一些努力来调整设置和一切以使其在屏幕文本上工作,这通常被认为接近 96 dpi。
ABBYY 有截屏 OCR 软件:http ://www.abbyy.com/screenshot_reader/这证明其技术能够很好地在这种情况下工作。我用它,它只是工作。因此,您可能需要联系 ABBYY 以获取 OCR SDK:http ://www.abbyy.com/ocr_sdk/ (可以从 .NET 使用)
它并不便宜,但它确实有效。免责声明:我为 ABBYY 工作
您实际上是在寻找各种研究人员尝试过的CAPTCHA 规避工具,其中一些已经成功。
另一种方法是使用平滑算法插入 96 DPI 捕获并将它们转换为 300 DPI(例如,photoshop it),然后使用标准 OCR 工具。
使用第一个答案(OCR 软件),对于屏幕截图,您可能会发送一个 PRNTSCRN(打印屏幕)字符,然后将剪贴板(bmp)的内容转换为 tiff。
希望这能帮助你更多地进入你的事业