关于opencv提取表格的方式总结

1.开头闲谈

最近闲下时间在学习和写的表格识别的demo。很久前用java玩了下opencv后面也就是在网上找些例子写写demo,然后用过python和go搞了下hello world(可以看下我的其他文章);但也就是了解下常用的api一段时间不用就忘记了;用go的过程接触了paddleocr又是靠java吃饭的,后来想了下就打算用java写个完整可以用的表格识别demo,不知道今年是否能完成因为今年工作上的事可能要忙很多,但愿这个表格识别的小系统能够有个雏形。下面说下表格识别最近总结一些提取处理思路。

2.识别方式

直接标记定制方式

根据坐标来提取数据是定制提取很通用的一种手段也是最简单的,缺点也是有的就是对图片的宽高比是需要一致的不然内容定位就会出现问题。

思路:就是提前计算好图片中想要提取数据的位置比例,然后进行截图提取识别。可以看下前面写的一篇文章java调用opencv身份证号识别 里面的对证件照号的提取部分采用的就是这种方式,里面参考的原始文章连接,里面有对身份证其他内容的提取也是采用的这种方式。

win下面我看了下画图有坐标点位置的标记可以手工处理想要的位置(对角线坐标就可以了。

简单坐标定位识别

因为表格简单不复杂的情况下做到通用需要先识别到表格中的线条,当然图片也是有的干扰的和一些小细节需要处理的。

思路:就是检测表格中的横线和竖线,排序然后交叉得到坐标点就可以截图提取。前面写的一篇文章里面对这种的实现步骤详细的写了。 java简单的表格识别

复杂表格的识别

这里复杂主要是有单元格合并的处理,这个我感觉也是需要对于特定一类需求需要进行特定的处理就是所谓的模板处理(主要就是想要的数据对应),因为对于合并的单元格做到通用有点复杂主要是说生成excel。另外对应表格外的内容需要结合第一个识别的方式,下面是一个回单具体内容就不贴了,在表格的上面有(币别、时间、流水号。

思路:

  • 0.因为原始图片比较大需要白板也比较多需要进行截取,有些也有可能需要进行等比缩放
  • 1.然后进行轮廓识别。
  • 2.过滤可以根据面积过滤掉字体部分。
  • 3.然后需要根据表格进行排序,根据特定一类需求进行数据提取。
  • 4.表格排序可以根据识别到的表格然后计算中心位置进行排序。
相关推荐
pe7er1 小时前
window管理开发环境篇 - 持续更新
前端·后端
We་ct2 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·javascript·算法·leetcode·typescript
陈随易6 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
王老师青少年编程6 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【哈夫曼贪心】:合并果子
c++·算法·贪心·csp·信奥赛·哈夫曼贪心·合并果子
叼烟扛炮7 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
天疆说7 小时前
【哈密顿力学】深入解读航天器交会最优控制中的Hamilton函数
人工智能·算法·机器学习
陈随易7 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
wuweijianlove8 小时前
关于算法设计中的代价函数优化与约束求解的技术7
算法
leoufung8 小时前
LeetCode 149: Max Points on a Line - 解题思路详解
算法·leetcode·职场和发展
样例过了就是过了8 小时前
LeetCode热题100 最长公共子序列
c++·算法·leetcode·动态规划