【问题标题】:Extracting text OpenCV Contours提取文本 OpenCV 轮廓
【发布时间】:2018-07-20 21:41:13
【问题描述】:

我尝试使用 tesseract 对每个单独的轮廓进行 ocr,但没有从中获取正确的文本。使用Extracting text OpenCV 正确完成轮廓识别。 请提出建议。

【问题讨论】:

  • 进行图像归一化和形态学运算,以均衡图像并减少图像中的噪声。然后,如果你遵循轮廓过程,它有助于给出正确的结果。
  • 如果可能,分享图片以便更好地了解您的问题
  • 感谢您的快速回复,是的,我做了形态学操作,但没有给出正确的结果。我先腐蚀然后膨胀,然后定位轮廓并提取轮廓块。提取这些块后,我正在为 tesseract-ocr 处理相同的内容,但没有为大多数块提供正确的文本。我从上面的链接中获取了图片以供参考。

标签: python-3.x opencv3.0


【解决方案1】:

由于图像预处理不当,您无法从 OCR 获得正确的文本。 尝试各种图像处理技术来缩小图像的可行方法。 正如你在python下问过的,如果你有彩色图像,

  1. 将其转换为黑白图像,以消除颜色噪点。

    img = cv2.imread('name_of_the_coloured_input_image',0)

  2. 使用opencv的模糊技术(平均、高斯模糊、中值模糊和双边滤波)对图像进行模糊处理,从而减少图像中的各种噪声。 Please refer to this link and try out various techniques

  3. 然后使用阈值处理(简单、自适应或 otsu 阈值处理),它会移除所有小于某个阈值的像素。 Please refer to this link and try out various techniques

现在,获取轮廓并尝试在轮廓上使用 tesseract 以获得更好的结果。

注意:请记住,要使 tesseract 正常工作,您的文本应该是黑底白字。

【讨论】:

  • 感谢您的回答。我已经在下面的答案中发布了我的步骤,请检查并告诉我改进点。
【解决方案2】:

请检查以下功能,如果有什么遗漏请告诉我。

#gray out the image
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray', gray)
cv2.waitKey(0)

#image blurring
blur = cv2.blur(gray,(1,1))
cv2.imshow('Blur', blur)
cv2.waitKey(0)

#threshold & invert
ret, thresh = cv2.threshold(blur, 127, 255, cv2.THRESH_BINARY_INV)
thresh_copy = thresh.copy()
cv2.imshow("Threshold", thresh_copy)
cv2.waitKey(0)

#Erosion
kernel1 = np.ones((1,1), np.uint8)
img_erosion = cv2.erode(thresh, kernel1, iterations=1)
cv2.imshow("Erosion", img_erosion.copy())
cv2.waitKey(0)

#applying dilation
kernel = np.ones((6,10), np.uint8)
img_dilation = cv2.dilate(img_erosion.copy(), kernel, iterations=1)
cv2.imshow("Dilation", img_dilation)
cv2.waitKey(0)

#find contours
im2, ctrs, hier = cv2.findContours(img_dilation.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

return ctrs

【讨论】:

  • 尝试用adaptive threshold代替thresholdkernel1结构元素可以用Size(12, 3)MORPH_RECT替换,后跟morphologyEx可以在findContours进程之前使用。
  • 我也尝试使用自适应阈值,我能够找到确切的轮廓,但是在将这些提取的轮廓处理为 tesseract 时,我得到了奇怪的结果。
  • 您可以在轮廓处理之前进行水平和垂直线检测,从图像中过滤掉不敬的对象。请参阅此链接 [docs.opencv.org/3.2.0/d1/dee/…
猜你喜欢
  • 1970-01-01
  • 2012-05-10
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
相关资源
最近更新 更多