10

是否有任何 OCR 引擎设计用于识别屏幕捕获图像中的文本而不是扫描文本?我有一个项目,我需要在应用程序中检索和识别文本,到目前为止,我尝试过的所有 OCR 引擎都没有很好地处理屏幕截图。

理想情况下,引擎应该可以很好地处理颜色和背景噪音,但如果没有类似的东西,我可以做一些余量。

它需要与 .NET 兼容;用 .NET 编写或具有 .NET 可调用 API。

4

4 回答 4

5

我发现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方法也可以写入流。

于 2010-08-27T02:58:46.917 回答
4

通常 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 工作

于 2010-08-05T11:20:46.037 回答
1

您实际上是在寻找各种研究人员尝试过的CAPTCHA 规避工具,其中一些已经成功。

另一种方法是使用平滑算法插入 96 DPI 捕获并将它们转换为 300 DPI(例如,photoshop it),然后使用标准 OCR 工具。

于 2010-08-29T04:46:38.173 回答
0

使用第一个答案(OCR 软件),对于屏幕截图,您可能会发送一个 PRNTSCRN(打印屏幕)字符,然后将剪贴板(bmp)的内容转换为 tiff。

希望这能帮助你更多地进入你的事业

于 2010-08-31T09:33:04.937 回答