屏幕区域的 OCR 方法。 SDK 或应用程序

Posted

技术标签:

【中文标题】屏幕区域的 OCR 方法。 SDK 或应用程序【英文标题】:Method for OCR of a screen region. SDK or application 【发布时间】:2012-09-22 10:52:21 【问题描述】:

我还没有找到解决方案。我想做的是从专有的金融软件平台读取特定的数字文本值。我首先尝试了可访问性和元素间谍方法,但没有成功。我能想到的唯一可行的方法是使用屏幕的 OCR,具有特定的固定区域。

我检查过的所有 OCR 解决方案似乎都是基于文件的(PDF、TIFF 等)。我真正需要的是可以从屏幕上捕获的 OCR 解决方案。我能想到的几个挑战: 要捕获的文本是黑色背景,可以是彩色文本(黄色、绿色、红色、橙色)。文字大小也很小(我认为是 6pt)。

理想情况下,我想要一个 .NET API,但我愿意尝试任何可行的方法。

【问题讨论】:

你能说一下程序是什么,你想要完成什么,可能还有其他方法可以完成你想做的事情。不要陷入XY problem。 当然,这个程序叫做thinkorswim。我相信这是一个Java应用程序。我尝试过的一种解决方案是 Screen Scraper Studio。他们声称能够从 Java 应用程序中提取 UI 元素,但我无法使用他们的程序这样做。 Screen Scraper Studio 也有在屏幕区域上的 OCR 方法,但我发现 OCR 按预期工作的时间不到 50%,我需要它接近 99%。 【参考方案1】:

这可能无法回答您的 OCR 问题,但您可以尝试的最后一种方法是挂钩 Windows 的 DrawText API。我最近了解到这个来解决一个similar problem like you had myself。

去下载EasyHook 库并查看示例。尝试在外部应用程序上挂钩DrawTextA, DrawTextW、DrawTextExA and DrawTextExW(这将与我的问题中的代码不同,因为我挂钩的是 Inproc DLL,而不是外部程序,但您的用例是 EasyHook 的设计目的,我的方式是一个黑客)。找出它使用什么,看看你是否可以让你的代码解析出文本。

【讨论】:

【参考方案2】:

试试这个OCR SDK

您制作屏幕截图,指定区域并将其传递给 OCR。我们用这种方法得到了很好的结果。我们也尝试了 tesseract,但无法使其与屏幕字体正常工作。

【讨论】:

以上是关于屏幕区域的 OCR 方法。 SDK 或应用程序的主要内容,如果未能解决你的问题,请参考以下文章

图像 OCR 安卓

渐进式网络应用 OCR SDK (JavaScript)

用于 OCR 的 Google Drive SDK

用ABBYY提取文本和表格的方法

实战基于OpenCV的水表字符识别(OCR)

屏幕截图中低分辨率文本的 OCR