『工程项目实践』表格识别 — V1.0

前言

实现简单的横竖表格图片的识别,提取表格并生成对应的Word文档

  • 表格检测(Table Detection)任务是从一个页面中检测出表格所在的区域
  • 表格结构识别(Table Structure Recognition)任务则是在检测到的表格区域的基础上,进一步将表格的内容与逻辑结构识别出来

本篇文章采用的传统方法实现的,在复杂场景下的鲁棒性有所不足,故之后采用了深度学习的方法进行了重新实现(暂定为1.0版本)

其中有些地方只是记录一下实现的思路,具体实现由于公司项目具有极高的商业价值,出于尊重和保护,我不能将所以的实现细节所完全表述,以及代码不能够开源,望谅解。(出于相互学习,朋友可以联系我,相互交流😊😊😊)

一、整体识别流程

二、去印章:remove_mark

step 1: 为了加快后面的印章处理速度,首先进行图片的 resize 操作;
step 2: 遍历图片像素点,将图片的部分位置灰度化,突出红色区域,以便寻找红色轮廓;
step 3: 分离通道,利用红色通道和蓝色通道进行异或,突出 mask 区域;
step 4: 利用 mask,进行印章位置的寻找,可能也会有其他 contour 的干扰;
step 5: 对上面的可疑区域(包含印章部分)进行处理。

三、寻找表格区域:get_pt

对去完印章的图片进行处理,寻找到表格位置,返回表格坐标点位置信息;
对去完印章的图片寻找 contour,利用 contour 的面积以及投影的长度来判定是否属于表格;

四、图片分割:TransformTable

图片分割,根据 pt 值将图片分为 文字区域 和 表格区域:TransformTable

五、文本部分检测

六、文本部分识别

七、表格部分的处理

step 1: 提取表格区域部分;
step 2: 提取表格的 mask : FindContours
step 3: 通过 mask,寻找表格内部的 cell:FindBlocks
step 4: 表格 json 初始化以及位置的计算:table_json_XH
step 5: 表格内部的识别:可参考上面的流程图即可明了。

八、识别结果

1. 速度对比

与其他算法,我们的算法速度有明显的优势。
以下图为例,在同样准确率情况下,我们的算法只需要 0.623s:
在这里插入图片描述
而其他表格识别算法需要 1.985s:
在这里插入图片描述

2. 鲁棒性

2.1 倾斜不会影响识别结果

在这里插入图片描述

2.2 旋转不会影响识别结果:

在这里插入图片描述

2.3 背景白平衡不会影响识别结果: 文字识别没有问题,这张图是公司随机生成的一些文字

在这里插入图片描述

2.4 复杂结构表格识别:

在这里插入图片描述
在这里插入图片描述

2.5 多个表格情景:

在这里插入图片描述

2.6 多行文字情景:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

libo-coder

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值