计算机视觉的应用10-图片中的表格结构识别与提取实战

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用10-图片中的表格结构识别与提取实战,表格结构识别在信息处理领域中具有广泛应用,但由于表格的多样性和复杂性,以及难以准确解析的布局和格式,传统的方法往往存在一定的局限性。本项目基于深度学习技术,通过训练神经网络模型,实现了高效准确的表格结构识别。本文将详细介绍该项目的研究背景、方法、实验结果以及应用前景。

目录
表格结构提取项目介绍
表格结构提取论文介绍
表格结构步骤
代码实现
总结
在这里插入图片描述

表格结构提取项目介绍

图片中表格结构提取是一种计算机视觉技术,旨在识别和提取图像中的表格结构、内容和数据。其主要目的是自动化处理包含表格的图像或文档,并将表格数据转换为结构化的形式,以便进行后续的分析和处理。

表格识别的思路:

1.图像预处理:对输入的图像进行预处理,包括图像去噪、二值化、边缘检测等操作,以便更好地提取表格区域。

2.表格定位:通过使用图像分割和特征提取的方法,自动识别和定位出图像中的表格区域。

3.表格行列识别:识别表格中的行和列,并确定它们的边界位置和大小。

4.单元格分割:将表格中的每个单元格分割出来,以便进一步分析和处理。

5.文本识别:使用光学字符识别(OCR)技术,将每个单元格中的文本内容提取出来,并进行识别和字符编码。

6.数据校正和清理:对提取出的表格数据进行校正和清理,包括去除冗余空格、修正错误格式、合并合适的单元格等。

7.结构化输出:将清洗后的表格数据以结构化的形式输出,例如保存为CSV、Excel或数据库等格式。

表格结构提取论文介绍

关于表格结构提取的论文地址:
https://openaccess.thecvf.com/content/ICCV2021/papers/Long_Parsing_Table_Structures_in_the_Wild_ICCV_2021_paper.pdf

论文主要内容:
本论文主要解决了在真实环境中从图像中解析表格结构(Table Structure Parsing,TSP)的问题。与现有研究主要集中在解析来自扫描PDF文件的布局简单、对齐的表格图像不同,我们旨在为拍摄或扫描时出现弯曲、变形或遮挡的现实场景建立实用的表格结构解析系统。为了设计这样一个系统,我们提出了一种名为Cycle-CenterNet的方法,在CenterNet基础上引入了一个新颖的循环配对模块,以同时检测和分组表格单元并形成结构化表格。在循环配对模块中,我们提出了一种新的配对损失函数用于网络训练。除了Cycle-CenterNet,我们还介绍了一个大规模数据集,名为Wired Table in the Wild(WTW),其中包括多种风格的表格在照片、扫描文件、网页等场景下的结构解析的精确注释。实验证明,我们的Cycle-CenterNet在新的WTW数据集上始终以TEDS度量标准衡量的24.6%绝对改进的准确率取得最佳效果。更全面的实验分析也验证了我们提出的TSP任务方法的优势。
在这里插入图片描述

表格结构步骤

关于Cycle-CenterNet的方法,主要是基于CenterNet,并引入了新颖的循环配对模块。其主要步骤:

1.图像预处理:首先,对输入的图像进行预处理,包括去噪、增强对比度和颜色校正等操作,以提升表格区域的清晰度和可读性。

2.表格检测:利用CenterNet进行表格的检测,即定位图像中可能存在的表格区域。CenterNet是一种基于单点目标检测的网络模型,可以高效地识别表格。

3.循环配对模块:在表格检测的基础上,引入循环配对模块。该模块通过同时检测和分组表格中的单元格,将它们组成结构化的表格。循环配对模块采用新的配对损失函数进行网络训练,以提高准确性。

4.数据集:为了验证方法的有效性,研究人员还创建了一个大规模数据集,命名为Wired Table in the Wild(WTW)。该数据集包含了多种风格的表格图像,并对这些表格的结构进行了准确注释。

5.实验分析:通过在WTW数据集上进行实验,研究人员证明Cycle-CenterNet方法相比其他方法在表格结构解析方面具有显著优势。采用TEDS度量标准评估,Cycle-CenterNet的准确率相对提升了24.6%。
在这里插入图片描述

代码实现

这里代码实现过程,主要通过直接加载table_recognition模型,省略了中间辅助的表格识别操作过程,直接开箱即用。

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import cv2
from PIL import Image
from PIL import ImageDraw
import numpy as nptable_recognition = pipeline(Tasks.table_recognition)def draw_box(det_res, image):image = Image.fromarray(image)draw = ImageDraw.Draw(image)for i in range(det_res.shape[0]):p0, p1, p2, p3 = order_point(det_res[i])draw.line([*p0, *p1, *p2, *p3, *p0], fill='red', width=5)image = np.array(image)return imagedef order_point(coor):arr = np.array(coor).reshape([4, 2])sum_ = np.sum(arr, 0)centroid = sum_ / arr.shape[0]theta = np.arctan2(arr[:, 1] - centroid[1], arr[:, 0] - centroid[0])sort_points = arr[np.argsort(theta)]sort_points = sort_points.reshape([4, -1])if sort_points[0][0] > centroid[0]:sort_points = np.concatenate([sort_points[3:], sort_points[:3]])sort_points = sort_points.reshape([4, 2]).astype('float32')return sort_pointsif  __name__ == '__main__':image_path = '333.png'image = cv2.imread(image_path)result = table_recognition(image_path)res= draw_box(result['polygons'], image)cv2.imwrite('result33.png', res)print('finished!')

运行结果:我们打开生成的图片看一下:
在这里插入图片描述
在这里插入图片描述

总结

在这篇论文中,主要通过提出一个新的WTW数据集和一个深度表格结构解析器Cycle-CenterNet,来解决野外环境下的表格结构解析问题。首先,我们的WTW数据集包含约14k张真实场景图像,这些图像是在野外成像条件下拍摄的,将表格结构解析的边界从数字文档图像扩展到了真实场景图像。另一方面,我们提出了一种新的野外场景表格结构识别方法,称为Cycle-CenterNet,解决了现有方法的主要弱点,包括对具有极端物理扭曲的实例的几何预测不准确以及提取不对齐表格的逻辑结构时存在的缺陷。通过全面的实验证明,所提出的方法以原则性的方式解决了上述问题,并在表格结构解析方面取得了最新的研究成果。我们希望我们提出的WTW数据集能进一步改善未来的表格识别研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/72602.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#__使用Type类反射数据的基本用法

// 简单介绍 // 元数据(metadata):与程序及其类型有关的数据。 // 反射:一个运行的程序查看本身元数据或其他程序集中的元数据的行为 // Assembly类:允许访问给定程序集的元数据,包含了可以加载和执行程序…

类与对象(上)

类与对象(上) 一、面向过程和面向对象的区别二、类1、类的引入2、类的定义(1)类的基本定义(2)类的成员函数的定义方法 3、类的访问限定符4、封装5、驼峰法命名规则6、类的作用域7、类的实例化(1…

TCP服务器实现—多进程版,多线程版,线程池版

目录 前言 1.存在的问题 2.多进程版 3.多线程版 4.线程池版 总结 前言 在上一篇文章中使用TCP协议实现了一个简单的服务器,可以用来服务端和客户端通信,但是之前的服务器存在一个问题,就是当有多个客户端连接服务器的时候,服…

强强联手:Eyeshot 2023.2 集成 CAD Exchanger SDK 3.21 Crack

Lab 中的新绘图模式和网格抽取、Eyeshot 集成以及从 CAD Exchanger 3.21.0 中的 CATIA 导入图形 PMI 通过探索新的绘图模式和可调整的网格抽取,更深入地了解实验室,见证与 devDept Eyeshot 的无缝集成,并直接从 CATIA 导入图形 PMI。 今年 8…

linux——MongoDB服务

目录 一、MongoDB概述 相关概念 特性 应用场景 二、目录结构 三、默认数据库 admin local config 四、数据库操作 库操作 文档操作 五、MongoDB数据库备份 一、备份 mongodump mongoexport 二、恢复 mongorestore mongoimport ​编辑 一、MongoDB概述 MongoDB是…

游乐场vr设备虚拟游乐园vr项目沉浸体验馆

在景区建设一个VR游乐场项目可以为游客提供一种新颖、刺激和沉浸式的游乐体验。提高游客的体验类型,以及景区的类目,从而可以吸引更多的人来体验。 1、市场调研:在决定建设VR游乐场项目之前,需要进行市场调研,了解当地…

【Linux】IO多路转接——poll接口

目录 poll初识 poll函数 poll服务器 poll的优点 poll的缺点 poll初识 poll也是系统提供的一个多路转接接口。 poll系统调用也可以让我们的程序同时监视多个文件描述符上的事件是否就绪,和select的定位是一样的,适用场景也是一样的。 poll函数 po…

(二)Git在公司中团队内合作和跨团队合作和分支操作的全部流程(一篇就够)

(一)Git连接GitHub的全部流程https://blog.csdn.net/m0_65992672/article/details/132333727 团队内协作 项目经理通过git push将代码推送到远程仓库【也就是git、gitee等代码托管中心】,推完以后组员可以通过git clone克隆下来代码,如果组…

初阶C语言-结构体

🌞 “少年有梦不至于心动,更要付诸行动。” 今天我们一起学习一下结构体的相关内容! 结构体 🎈1.结构体的声明1.1结构的基础知识1.2结构的声明1.3结构成员的类型1.4结构体变量的定义和初始化 🎈2.结构体成员的访问2.1结…

文字点选验证码识别(上)-YOLO位置识别

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 文章中没有代码,只有过程思路,请大家谨慎订阅。…

【探索Linux】—— 强大的命令行工具 P.5(yum工具、git 命令行提交代码)

阅读导航 前言一、软件包管理器 yum1.yum的概念yum的基本指令使用例子 二、git 命令行提交代码总结温馨提示 前言 前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C的一些知识,也学习了一些Linux的基本操作,也了…

侯捷 C++ part2 兼谈对象模型笔记——7 reference、const、new/delete

7 reference、const、new/delete 7.1 reference x 是整数,占4字节;p 是指针占4字节(32位);r 代表x,那么r也是整数,占4字节 int x 0; int* p &x; // 地址和指针是互通的 int& r x;…