快速屏幕字体OCR技术或API?

3
我想知道是否有任何技术/ API 可以用于快速屏幕字体OCR?以下是假定的条件:
- OCR 的文本应从屏幕截图中获取,并使用屏幕字体呈现。 - OCR 的文本可能会被抗锯齿处理,也可能不会被抗锯齿处理。 - 抗锯齿处理可能或者不可能使用 RGB 降采样(又称亚像素 AA 或 ClearType 等)。 - 屏幕截图可能是 RGB 或 RBG 顺序。 - 基线很容易找到(只需查看所有屏幕字体:基线非常清晰且易于通过算法找到)。 - 允许出现很多错误(字符识别不需要完全正确)。 - 字体基本上是预先知道的,但如何呈现字体是未知的(大小未知,颜色未知,抗锯齿类型未知)。基本上已知的是它将是非常常见的字体。
所以我认为这并不像实际的OCR那么复杂:找到基线并“切割”每个字符相当容易做到(我已经做到了)。有人知道特定技术、论文或甚至API来完成这样的事吗?
请注意:此问题与屏幕抓取无关。此问题与破解CAPTCHA无关。此问题不涉及常规OCR(如OCR扫描文本)。此问题不涉及GUI自动化(尽管有些人可能会这样使用它)。

请查看此问题的任何答案 https://dev59.com/r0fRa4cB1Zd3GeqP_LDB 是否适用于您的情况。 - rwong
2个回答

1

我在不变矩方面有丰富的经验(例如Hu矩),但是它们可能对您的目的来说有点不太恰当,因为您已经预定义了方向。我建议使用聚类分析搭配马氏距离进行特征提取,这样可以获得非常好的结果。
如果您对Java编程感兴趣,我们的SF项目可能会对您有所帮助:

http://sourceforge.net/projects/javaocr/

这也适用于安卓手机。

(欢迎帮忙)


尺度不变性来自于不变矩,马哈拉诺比斯距离与此无关,它来自于聚类分析领域。我引用的SF项目包含了所有实现以及可工作的Android演示。 - Konstantin Pribluda

0

您可以尝试按照Daniel Graupe的《人工神经网络原理》(1997年),第13章中所述的方法来实现LAMSTAR。

基本上包括以下步骤:

  • 将您的“输入”分成“子词”(他以将图像细分为像素序列为例,每列一个子词,每行一个子词)
  • 将每个子词馈入动态KSOM(Kohonen自组织映射)中,该映射将标准化的子词分类为不同数量的类别
  • 每个KSOM都是一种胜者通吃分类器,对于其输出中的一个输出1,对于其他所有输出输出0
  • 然后,使用“链接权重到输出层”进行线性组合,并使用非线性激活函数(例如逻辑函数),输出神经元的兴奋给出表示识别字符的位序列。

LAMSTAR的优点在于一切都是可追溯的:

  • 通过考虑您提供的输入,您可以了解NN看到了什么,
  • 通过观察KSOM分类结果,您可以知道NN认为它看到了什么。
  • 通过考虑特定K-SOM的权重向量,您可以知道NN想要看到什么。
  • 通过比较链接权重,您可以知道NN真正认为重要的内容(以及它忽略的图像部分)。

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