关于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.表格排序可以根据识别到的表格然后计算中心位置进行排序。
相关推荐
悠仁さん7 分钟前
数据结构 树 二叉树 堆 (链式二叉树模拟实现篇)
数据结构·算法
Rust研习社14 分钟前
Nightly 前瞻:cargo-script 让 Rust 也能写脚本
后端·rust·编程语言
AskHarries14 分钟前
Chrome 插件有没有机会
后端
浩风祭月16 分钟前
一次诡异的 MySQL 死锁,靠 AI 分析日志十分钟定位根因
后端·ai编程
z2005093018 分钟前
今日算法(带回文问题的回溯)
算法·leetcode·回溯
洛水水19 分钟前
【力扣100题】55.编辑距离
算法·leetcode·动态规划
我是一颗柠檬23 分钟前
【MySQL全面教学】MySQL子查询与高级查询Day7(2026年)
数据库·后端·mysql
洛水水33 分钟前
【力扣100题】62.滑动窗口最大值
数据结构·算法·leetcode
IronMurphy37 分钟前
算法五十一 64. 最小路径和
算法
醒醒该学习了!41 分钟前
Prompt提示词——带有深度思考模型的提示方法(理论篇)
人工智能·算法·prompt