屏幕阅读的OCR引擎

10

是否有针对屏幕截图中的文本识别而非扫描文本设计的OCR引擎?我正在进行一个项目,需要检索和识别应用程序中的文本,在我的尝试中,没有任何OCR引擎在截图方面表现良好。

理想情况下,该引擎应能够处理颜色和背景噪声,但如果没有类似的引擎,我可能需要做一些让步。

它需要与.NET兼容,要么是用.NET编写的,要么具有.NET可调用的API。


扫描文本和屏幕截图有什么区别? - Hans Passant
3
截图文本保证是一条直线,但它也带有彩色背景噪声。我想知道是否有一个专门设计用于阅读截图的OCR引擎。 - Erik Forbes
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方法也可以写入流。

刚刚发现已经有了 .net 集成:http://www.pixel-technology.com/freeware/tessnet2/ - Philip Daubmeier

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工作。

1

你基本上在寻找各种研究人员尝试过并且有些成功的验证码绕过工具

另一种方法是使用平滑算法来插值96 DPI截图并将其转换为300 DPI(例如,使用Photoshop),然后使用标准OCR工具。


我不是在寻找验证码解决方案 - 没有任何文本会以那种方式被混淆 - 但这仍然会有所帮助。=) - Erik Forbes

0

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

希望这能对您的事业有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接