我正在尝试使用Tesseract OCR和Cuneiform OCR从图像中获取文本。
但是,如果文本是小字体或字体很薄,则生成的文本中会有错误。
我们需要获取文本的大多数图像都是以深色返回文本,而图像的其余部分则为浅色。所以我想将所有较浅的颜色转换为白色,然后增加缓冲图像的大小,以便生成的文本是正确的。 (如果我的方法有误,请纠正我。)
任何人都可以提供有关如何实现这一目标的任何信息真的很有帮助
答案 0 :(得分:1)
如果您的OCR引擎的文字太小/太薄,那么您无法做到这一点。
如果造成对比问题导致OCR引擎出现问题,那么“黑暗”会变暗,“灯光”变亮也是一个不错的选择。
以下是我之前使用过的对比公式,效果很好:
float contrast = 0.2;
float factor = (x*(contrast + y)) / (x - contrast);
其中x&gt; 1.0意味着更多的对比度并且x <1。 1.0表示对比度较低 y是任何颜色分量的最大值(通常为1.0或255)
编辑:判断颜色是否比其他颜色浅:
亮度方法平均最突出和最不突出的颜色: (max(R,G,B)+ min(R,G,B))/ 2。
平均方法简单地平均值:(R + G + B)/ 3.
发光度方法是平均值的更复杂版本 方法。它还对值进行平均,但它形成加权平均值 考虑到人类的感知。我们对绿色比对绿色更敏感 其他颜色,所以绿色加权最重。的公式 发光度为0.21 R + 0.72 G + 0.07 B。