使用CV2填补字符中的空白

时间:2018-12-30 10:43:35

标签: python opencv ocr cv2

我有一个图像文件,该文本包含我想使用OCR提取的文本。 但是它上面有对角线重叠的文本行(右上角),例如this。 我使用

删除了这一行
  image = cv2.imread(image_path)

  image = cv2.resize(image, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)

  image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

  image = cv2.GaussianBlur(image, (5, 5), 0)

  image = cv2.threshold(image, 100, 255, cv2.THRESH_BINARY)[1] # 100 here as the diagonal line is grey

这将产生this之类的图像。

请注意剪切应力的粗字符,这是对角线重叠的区域之一。 现在我申请OCR。但是,前面的步骤删除了一些像素。例如,边缘错位中的 e 不完整。

这会导致不良结果,例如“ edve脱位”。我尝试了腐蚀和扩张,但没有明显改善。

有什么方法可以填补字符中的空白吗?

有什么方法可以减少与对角线重叠的字符的粗细?

1 个答案:

答案 0 :(得分:0)

由于在图像中,如果您看到,我们可以表示从2 ^ 0 = 0的暗区域(黑色)到亮区域(白色)2 ^ 8 = 256的黑色区域。 因此,您可以尝试一件事(对此我也不确定):
img = cv2.imread(image_path,0) new_img = img.copy() new_img[new_img<=230] = 0 ## just try to change that 230 value to anywhere b/w 150 to 230 然后尝试使用OCR来检查它是否真的有效。

-删除重叠后将其应用于图像结果