如何在图像中找到类似表格的结构
如何在图像中找到类似表格的结构
我有不同类型的发票文件,我想在每个发票文件中找到表格。在这个表格中,位置是不固定的。所以我采用了图像处理的方法。首先我尝试将我的发票转换成图像,然后找到基于表格边框的轮廓,最后我可以得到表格的位置。
为了完成这个任务,我使用了以下代码:
with Image(page) as page_image: page_image.alpha_channel = False # 消除透明度 img_buffer=np.asarray(bytearray(page_image.make_blob()), dtype=np.uint8) img = cv2.imdecode(img_buffer, cv2.IMREAD_UNCHANGED) ret, thresh = cv2.threshold(img, 127, 255, 0) im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) margin=[] for contour in contours: # 获取包围轮廓的矩形 [x, y, w, h] = cv2.boundingRect(contour) # 不绘制小的错误结果,这些不是文本 if (w >thresh1 and h> thresh2): margin.append([x, y, x + w, y + h]) # 对边界进行数据清理以提取所需的位置值。
在这段代码中,我会根据文件的情况更新`thresh1`和`thresh2`的值。
使用这段代码,我可以成功读取图像中表格的位置,使用这些位置,我将处理我的发票pdf文件。例如:
样本1:
[链接](https://i.stack.imgur.com/NJXjD.png)
样本2:
[链接](https://i.stack.imgur.com/Ntbce.png)
样本3:
[链接](https://i.stack.imgur.com/SqpiK.png)
输出:
样本1:
[链接](https://i.stack.imgur.com/MIaGH.png)
样本2:
[链接](https://i.stack.imgur.com/CXv8x.png)
样本3:
[链接](https://i.stack.imgur.com/d76gQ.png)
但是,现在我有了一种新的格式,它没有任何边框,但是它是一个表格。如何解决这个问题?因为我的整个操作都仅依赖于表格的边框。但是现在我没有表格边框了。我该如何解决这个问题?我对解决这个问题没有任何想法。我的问题是,是否有办法根据表格结构找到位置?
例如,我的问题输入如下:
[链接](https://i.stack.imgur.com/Fw3Qa.jpg)
我想要找到它的位置,如下所示:
[链接](https://i.stack.imgur.com/5or8D.png)
如何解决这个问题?
非常感谢您提供解决这个问题的思路。
提前致谢。