2017-06-14 132 views
0

我试图使用Tesseract OCR和楔形文字OCR从图像中获取文本。有没有什么办法可以知道低于特定值的颜色的RGB值是否较浅颜色

但是,如果文本是小字体或字体很薄,则结果文本中会出现错误。

我们需要获取文本的大部分图像都是以较深的颜色返回文本,而图像的其余部分则以较浅的颜色显示。所以我正在考虑将所有较浅的颜色转换为白色,然后增加缓冲图像的大小以使得结果文本正确。 (纠正我,如果我的方法是错误的)。

任何人都可以提供关于如何实现这一目标将是真正有用的

回答

1

如果文字太小/细为您OCR引擎的任何信息,那么就没有什么可以做一下。

如果这是造成OCR引擎问题的对比度问题,那么使“黑暗”变暗,“灯光”变轻是一种好方法。

下面是我以前使用和工作很好的对比度公式:

float contrast = 0.2; 
float factor = (x*(contrast + y))/(x - contrast); 

,其中x> 1.0意味着更多的对比度,并且x < 1.0意味着更少的对比度和 y是对于任何颜色分量的最大值(通常为1.0或255)

编辑:判断一个颜色比不同的颜色较浅:

  1. 转换颜色为灰度以下列方式之一:

明度方法平均最突出的和最不突出的颜色: (MAX(R,G,B)+分钟(R,G,B))/ 2。

平均方法简单地平均化的值:(R + G + B)/ 3。

的光度方法是平均 方法的更复杂的版本。它也对这些值进行平均,但它形成了加权平均值 以说明人类的看法。我们对绿色比其他颜色更敏感,所以绿色的权重最重。对于 光度的公式是0.21 R + 0.72 G + 0.07 B.

  • 比较所得到的值,以查看其是轻。
  • +0

    我意识到我从来没有完全回答你的问题。我编辑了我的答案以反映解决方案。 –

    +0

    我会试试你的答案。我有另一个想法。我可以考虑如果R <125 G <125 B <125当颜色较浅时,如果任何rgb值大于125则它会变成较暗的颜色 –

    +0

    转换为灰度将比检查各个组件的结果更稳定。在某些情况下,您的方法会将颜色定义为黑色,但如果您查看颜色,则会很轻,反之亦然。亮度对于人类感知是最好的,第二种平均方法(R + G + B)/ 3对于OCR可能是最好的。 –