我的任务是: 获取所有文本块的所有坐标
我正在构建可识别图片,照片,文档中表格的应用程序。 我正在使用概率霍夫变换来检测照片上的所有线条,并且我需要检测细线和长线。
但是,我有一个问题:HoughLinesP可以像检测线一样检测表格中的文本,我将附上图片进行描述。在某些图像上,这不是问题,但是在某些照片上,它检测到许多错误的行(错误肯定),实际上是文本,而不是行。
我要解决的决定:
因此,我需要在图像上具有所有文本块的所有坐标。它应该是围绕文本块的矩形
正常情况:
来源:enter image description here
公认:enter image description here
这是错误的情况:
来源:enter image description here
公认:enter image description here
这是我的代码:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# Use Canny edge detection and dilate the edges for better result.
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
kernel = np.ones((4, 4), np.uint8)
dilation = cv2.dilate(thresh, kernel, iterations=1)
# Perform HoughLinesP tranform.
lines = cv2.HoughLinesP(dilation, rho=1, theta=np.pi / 180, threshold=35, minLineLength=50, maxLineGap=3)
for line in lines:
for x1, y1, x2, y2 in line:
cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 5)
self.group_lines(lines)
self.draw_recognized_lines(lines, img)
这行是我自己的算法,用于将检测到的行合并为一行(HoughtLinesP将行检测为许多小行的集合):
self.group_lines(lines)
P.S。我尝试使用 minLineLength , maxLineGap ,阈值,但是每个图像与上一个图像都不相同,每个表都不同,所以我不能使用该参数的一个值来描述所有图像。
也许您有解决该问题的决定?
谢谢您的帮助!