表格图像提取-基于传统交点方法和Tesseract-OCR

本文应用传统交点方法来提取框线表格,主要是针对存在合并单元格的表格,并用tesseract-ocr来做了文字识别,主要难点是前者的提取部分,现将部分方法分享给大家。

建议各位可以先去看其他博主针对简单表格的提取方法,再来看这篇,因为我省略了很多内容,主要讲方法,不建议之前完全没了解过的朋友来看,推荐一篇:

python-opencv表格识别_我想问问天的博客-CSDN博客_opencv 表格识别

本人第一次发文章,该表格结构提取只提供思路,不涉及代码,如有不到位的地方,还望指出。


一、表格提取的难点

1.合并单元格

我查看了许多发表在csdn上的博文,传统方法就是利用框线相交,获得交点以此来提取单元格,但是大多数都是针对简单的表格,在实际的办公场景中,我们更多的遇见存在合并单元格的复杂表如下图,那么就需要一套复杂的方法提取。

2.图像处理

图像的预处理是至关重要的一步,必须要减少图像中存在的各类干扰,目的是将能够准确提取交点,整个提取过程,都是依照交点坐标进行的,图像预处理可参考其他博主的,一般情况需要进行图像二值化、灰度化、去噪、锐化等处理......

举个例子:存在某些图像,其框线的交接部分并没有连接,不能提取出交点,那就可以利用Opencv库中的方法,将检测出来的框线延长一些,使得能得到交点,如下图。

的撒
此图进行过二值化
横线和竖线都延长了

因为图像处理部分至关重要,将影响之后的表格结构提取和文字识别,所以需要各位不断去调试,以达到理想效果,我认为这也是传统方法的局限性,所以当前热门的都是用深度学习的方法。

二、表格提取过程

图像预处理完成后,就来到了本文章的主要内容——提取表格结构

整个提取过程分为两步:

        1.交点分类

        2.依据交点类别进行表格提取


1.交点分类

这是一张原始图片,存在合并单元格的情况,因为这篇文章重要讲述方法,不讲太多图像处理过程,所以使用了清晰度高的图像,但是必须要强调图像预处理的重要性。

(1)经过二值化、灰度化之后

 (2)提取横线和竖线,经过腐蚀膨胀,故线条比原图要长一些

 (3)将横线和竖线叠加,目的是获得交点

 (4)经过叠加,则获取了交点,标记为黑点

 (5)进行交点分类,首先标识出代表每个单元格的标志点,例如下图单元格中,p1点则为标志点,即代表当前单元格。

P1为标志点

 以上述信息,即可将图中交点进行初次分类,其中标志点为红色点:

 当前分类远远不够,仍不能将表格单元格很好提取,需要再次进行分类,保留红色点,以及表格最下和最右上的点的颜色,其余点设为绿色,如图:

(6)按照不同颜色类型的交点,设计一套方法,即可将每个单元的区域位置得到。

 (7)接下来的步骤就是将截取的各个单元格保存在文件夹中,记录单元格位置信息,为之后的表格结构还原和文字识别做准备。

3.实际演示

过程界面
经过图像预处理后
完成交点分类

依据设计算法,获得各个单元格区域

表格还原以及经过文字识别后的最终成果

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chen Zing

想存点钱去毕业旅行,请施主施舍

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值