从图像中提取表结构

时间:2017-07-13 18:10:17

标签: opencv

我有一堆像Table Sample

这样的图像

从图像中提取表结构的好方法是什么?我只对提取直线感兴趣。

我一直在使用OpenCV Finding Contours代码示例,结果很有希望。我只是想知道是否有更好的方法?

2 个答案:

答案 0 :(得分:5)

OpenCV有一种检测线段的好方法。这是python中的代码片段:

import math
import numpy as np
import cv2

img = cv2.imread('page2.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

lsd = cv2.createLineSegmentDetector(0)
dlines = lsd.detect(gray)

for dline in dlines[0]:
    x0 = int(round(dline[0][0]))
    y0 = int(round(dline[0][1]))
    x1 = int(round(dline[0][2]))
    y1 = int(round(dline[0][3]))
    cv2.line(img, (x0, y0), (x1,y1), 255, 1, cv2.LINE_AA)

    # print line segment length
    a = (x0-x1) * (x0-x1)
    b = (y0-y1) * (y0-y1)
    c = a + b
    print(math.sqrt(c))

cv2.imwrite('page2_lines.png', img)

答案 1 :(得分:0)

请仔细检查我的Github存储库Code for table extraction

开发的代码检测表并通过保持空间坐标完整来提取信息。 enter image description here

该代码从表中检测行,如下图所示。我希望它能解决您的问题。 enter image description here

以表格形式显示的提取输出如下所示。enter image description here