专门为渲染文本设计开源 OCR 引擎(截图)

Posted

技术标签:

【中文标题】专门为渲染文本设计开源 OCR 引擎(截图)【英文标题】:Designing an open source OCR engine specifically for rendered text (screenshots) 【发布时间】:2011-05-31 00:31:39 【问题描述】:

所以我目前的个人项目是能够自动从游戏中截取屏幕截图,对文本进行 OCR,并计算给定单词的出现次数。

我整晚都在四处寻找不同的 OCR 解决方案,我开始意识到市面上的大多数 OCR 软件包都是为扫描文本设计的。如果有任何软件包可以可靠地读取屏幕文本,那么它们远远超出了这个爱好者的预算。

我一直在阅读其他一些问题,我找到的最接近的问题是OCR engines designed for screen-reading。

在我看来,阅读渲染文本应该比打印和扫描文本容易得多。线条总是笔直的,任何给定的字母总是以完全相同的像素表示出现(大多数情况下,无论如何)。另外,为什么不使用实际的字体文件(如果有的话)作为识别字符的备忘单?使用这样的系统,我们实际上可能会达到 100% 的准确率。

假设您有备忘单的字体文件,并且您的源图像是完美的正方形且没有噪点,您将如何识别屏幕上的字符?

(我可以预见的问题是 ui 线条和图像可能会混淆任何粗略的像素猜测尝试。)

如果您已经知道专为屏幕阅读而设计的免费/开源 OCR 包,请告诉我。不过,我有点怀疑这是否会出现,因为似乎也没有其他提问者获得领先。

首选 Python 接口,但乞丐不能选择。

编辑: 为了澄清,我正在寻找专门用于从屏幕截图中读取文本的 OCR 解决方案的设计建议。像 tesseract(在我链接的问题中提到)这样的流行工具充其量很难使用,因为它们不是为这种源文件设计的。

【问题讨论】:

我的老板曾经为此创造了一个我喜欢的术语——明显的字符识别。 哈!我喜欢这个词,尤其是因为它适用。很遗憾它与其他首字母缩写词发生冲突,否则我会使用它。 嗨@Hovis,你收到了吗?你有开源项目的链接吗? 不,我从来没有考虑过。 【参考方案1】:

所以我一直在考虑这个问题,我觉得最好的方法是计算每个 blob/glyph/character 中的像素数。这应该确实减少了我需要做的区分字形的测试数量。

很遗憾,我必须非常具体地介绍字体。该软件将只能识别正确 dpi 的字体、正确的字体和粗细等。

这并不理想,我仍然希望看到更了解这些东西的人为渲染文本设计 OCR;但它适用于我有限的情况。

【讨论】:

【参考方案2】:

如果您的目标是计算游戏中某些事件的发生次数,那么 OCR 确实不是正确的方法。也就是说,如果您确定要使用 OCR,那么 tesseract-OCR 是用于执行光学字符识别的知名开源软件包。我不确定你在扫描文本和渲染文本方面得到了什么,但 tesseract 可能会像任何可用的开源包一样好。 OCR 仍然是一门棘手的艺术,所以我不希望 100% 准确。

【讨论】:

我整个上午都在尝试使用 tesseract,但这是不行的。它遇到了为“大”扫描文本设计的相同问题。 (即高 dpi 但可能是杂乱的文本)【参考方案3】:

这不是你想要的,但你可能想看看Sikuli。

【讨论】:

嗯,这看起来很酷。这真的不是我所追求的,但我可能最终会玩它。谢谢! 为了将来参考,该 bit.ly 链接实际上转到 sikuli.org。为什么首先使用链接缩短器? @SilverWolf 谁知道,我写了这个答案差不多十年前!

以上是关于专门为渲染文本设计开源 OCR 引擎(截图)的主要内容,如果未能解决你的问题,请参考以下文章

如何忽略 OCR Engine 没有意义的输出?

三维渲染引擎设计与实践

vue集成流程设计引擎

屏幕截图上的 OCR

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

如何通过Tesseract开源OCR引擎创建Android OCR应用