当前位置: 首页 > news >正文

计算机视觉的应用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数据集能进一步改善未来的表格识别研究。

相关文章:

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

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用10-图片中的表格结构识别与提取实战,表格结构识别在信息处理领域中具有广泛应用,但由于表格的多样性和复杂性,以及难以准确解析的布局和格式,传统的方…...

P4178 Tree (点分治)

题目链接 一:我们考虑树上两点之间的路径有什么情况 1:经过根节点(即在根节点的两端) 2:不经过根节点(完全在一颗子树的一侧) 二:我们考虑这两种路径是否可以归为一类 1&#xff1…...

Kubernetes 二进制搭建

Kubernetes 二进制搭建 一、二进制搭建 Kubernetes v1.201.1 部署准备1.2 操作系统初始化配置1.3 部署 etcd 集群1.3.1 etcd 作为服务发现系统,有以下的特点1.3.2 准备签发证书环境1.3.3 在 master01 节点上操作1.3.4 生成证书 1.4 部署 docker引擎1.4.1 部署 Maste…...

QT QtXlsx安装使用

QtXlsx介绍 QtXlsx是一个可以读取和写入Excel文件的库。它不需要Microsoft Excel,可以在Qt5支持的任何平台上使用。 这里一定是需要QT5支持的。 须知安装QtXlsx时,需要下载perl 1.安装perl 这里选择官网下载安装即可。 官网地址:https://p…...

Java医院信息化HIS管理系统源码

HIS模板分为两种:病历模板和报表模板。模板管理是运营管理的核心组成部分,是基层卫生健康云中各医疗机构定制电子病历和报表的地方,各医疗机构可根据自身特点特色定制电子病历和报表,制作的电子病历及报表可直接在业务系统中使用。…...

【Uni-App】uview 开发多端应用,密码显示隐藏功能不生效问题

出现的问题: 使用uview组件u-input框密码绑定时会出现右侧密码显隐图标不显示的问题 思路: 1.看了下uview源码,发现这有一段注释,我们需要把源码修改一下,问题出在这里 这行代码修改为 :password"password || …...

人工智能算法-SVM, KNN

目录 SVM, KNN区别 一、KNN算法概述 算法的描述: 二、关于K的取值 K的取法: 三、关于距离的选取 Euclidean Distance 定义: 四、总结 SVM, KNN区别...

计算机网络—TCP

这里写目录标题 TCP头格式有哪些为什么需要TCP,TCP工作在哪什么是TCP什么是TCP连接如何确定一个TCP连接TCP和UDP的区别,以及场景TCP和UDP能共用一个端口?TCP的建立TCP三次握手过程为什么是三次握手、不是两次、四次why每次建立连接&#xff0…...

Oracle到DM实时数据同步实施方案

目录 1 项目概述 2 需求分析 3 实施操作 3.1 历史数据全量同步 3.2 增量数据实时同步 4 问题总结 4.1 字符型非空约束 4.2 字符型唯一索引尾部空格 1 项目概述 将Oracle 11g RAC生产环境数据同步到DM8分析环境,Oracle数据库大小1.5T,日增归档10…...

WebRTC | 音视频实时通信的本质

目录 一、音视频实时通信的两种指标 1. 实时通信延迟指标 2. 视频相关的基本概念 3. 音视频服务质量指标 二、解决实时通信的主要矛盾 1. 增加带宽 A. 提供更优质的接入服务 B. 保证云端网络的带宽和质量 C. 更合理的路由调度策略 2. 减少数据量 A. 采用更好的压缩算…...

ApiPost的使用

1. 设计接口 请求参数的介绍 Query:相当于get请求,写的参数在地址栏中可以看到 Body: 相当于 post请求,请求参数不在地址栏中显示。 请求表单类型,用form-data json文件类型,用row 2. 预期响应期望 设置完每一项点一下生成响应…...

6、CCS 配置工程头文件批量添加路径的方法

1、进入到图示的框框里 2、编辑好需要添加的路径,并按ctrl c 3、选中include paths(-I)框框里的最后一条路径 4、然后ctrl v,这样路径就复制到预定义路径里了...

Visual Studio配置PCL库

Visual Studio配置PCL库 Debug和Release配置新建项目配置属性表测试参考 Debug和Release Debug和Release的配置过程一模一样,唯一区别就在于最后一步插入的附加依赖项不同,因此下面以debug为例。 配置新建项目 1、新建一个C空项目,模式设置…...

数据分析 | 为什么Bagging算法的效果优于单个评估器

1. 回归问题如何降低方差 以随机森林为例,假设随机森林中含有n个弱评估器,由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的方差和偏差,因此假设任意弱评估器上输出结果为,方差均为,则随机森林的输出…...

mysql架构介绍

1.整体架构图 我们发现整体的体系是由连接层、服务层、引擎层和物理文件存储层组成。 1.连接层 连接层是处理客户端和服务端之间的通信的,比如一些连接处理、授权验证等等。 2.服务层 服务层主要完成核心的功能,如SQL接口,就是用来接收…...

EIK+Filebeat+Kafka

目录 一、Kafka 概述 1)为什么需要消息队列(MQ) 2)使用消息队列的好处 (1)解耦 (2)可恢复性 (3)缓冲 (4)灵活性 & 峰值处理…...

python安装xgboost报错

ERROR: Could not find a version that satisfies the requirement xgboost (from versions: none) ERROR: No matching distribution found for xgboost 解决办法: 换成国内的pip源 pip install xgboost -i http://pypi.doubanio.com/simple/ --trusted-host py …...

语音芯片的型号有哪些?为什么强烈推荐使用flash型可擦写的

一、语音芯片的简介 语音芯片的型号有哪些?为什么强烈推荐使用flash型可擦写的芯片。这里我们简单描述一下如下常见类容: 1、他们都有什么特点?以及发展的历程简介 2、常见的语音芯片有哪些? 3、为什么推荐使用flash型可以重复…...

【OpenCV常用函数:轮廓检测+外接矩形检测】cv2.findContours()+cv2.boundingRect()

文章目录 1、cv2.findContours()2、cv2.boundingRect() 1、cv2.findContours() 对具有黑色背景的二值图像寻找白色区域的轮廓,因此一般都会先经过cvtColor()灰度化和threshold()二值化后的图像作为输入。 cv2.findContous(image, mode, method[, contours[, hiera…...

opencv,opengl,osg,vulkan,webgL,opencL,cuda

OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Python、Ruby、MATLAB等…...

uniapp map组件的基础与实践

UniApp 中的 map 组件用于在应用中展示地图,并且支持在地图上添加标记、绘制线条和多边形等功能。以下是一些基本用法: 1. 基本结构 首先,确保你在页面的 .vue 文件中引入了 map 组件。以下是创建一个简单地图的基本代码结构: <template><view class="con…...

jenkins集成gitlab发布到远程服务器

jenkins集成gitlab发布到远程服务器 前面我们讲了通过创建maven项目部署在jenkins本地服务器&#xff0c;这次实验我们将部署在远程服务器&#xff0c;再以nginx作为前端项目做一个小小的举例 1、部署nginx服务 [rootweb ~]# docker pull nginx [rootweb ~]# docker images …...

多分辨率 LCD 的 GUI 架构设计与实现

1.1多分辨率显示系统的挑战与解决方案 1.1.1 分辨率适配的核心问题 在嵌入式系统中,同时支持不同分辨率的 LCD(如 240160、320480 等)面临以下挑战: 布局适配:同一界面元素在不同分辨率下需要调整大小和位置 字体显示:小分辨率屏幕需要更小的字体,而大分辨率需要更清…...

Hubstudio浏览器如何使用Loongproxy?

1. 使用软件 1.1 Loongproxy 1. 顶级ISP资源&#xff1a;Loongproxy是神龙云旗下品牌&#xff0c;依托与全球领先ISP运营商的深度合作&#xff0c;Loongproxy 精选全球优质静态住宅IP资源。 2. IP池庞大&#xff1a;覆盖 100 国家/地区&#xff0c;构建庞大的 70 万 静态IP池…...

Github 2025-06-04 C开源项目日报 Top7

根据Github Trendings的统计,今日(2025-06-04统计)共有7个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目7C++项目1Assembly项目1jq:轻量灵活的命令行JSON处理器 创建周期:4207 天开发语言:C协议类型:OtherStar数量:27698 个Fork数量:1538 …...

敏捷开发中如何避免过度加班

在敏捷开发过程中避免过度加班&#xff0c;需要明确敏捷原则、合理规划迭代任务、加强团队沟通、优化流程效率、设定合理的工作负荷、注重团队士气和成员健康。明确敏捷原则&#xff0c;即保证可持续发展的步调&#xff0c;避免频繁地变更需求、过度承诺任务量。合理规划迭代任…...

汽车的安全性能测试:试验台铁地板的重要性

汽车的安全性能测试是非常重要的&#xff0c;其中试验台铁地板的设计和材料选择起着至关重要的作用。试验台铁地板是指在进行汽车碰撞、侧翻等试验时&#xff0c;用于支撑汽车底部和提供稳定支撑的重要部件。 在进行汽车碰撞试验时&#xff0c;试验台铁地板的设计和材料需要具…...

麒麟v10系统的docker重大问题解决-不支持容器名称解析

今天给客户在麒麟v10Kylin-Server-V10-SP1下安装nextcloudonlyoffice的时候出现无法连接onlyoffice的问题,经过分析找到了是docker版本过低的原因,现在把解决思路和步骤分享给大家。 一、问题 用一键安装工具,给客户装好了系统,Nextcloud可以正常访问 但是访问nextcloud中的o…...

35.成功解决编写关于“江协科技”编写技巧第二期标志位积累的问题

江科大学长又发布了第二期的编写技巧&#xff01; 大家可以看看&#xff1a;https://space.bilibili.com/383400717 最后面给了一个未完成的任务&#xff1a; 这里我已经把这个问题给解决了&#xff01; 总代码放在资源里面&#xff0c;key.c放在文章最后面&#xff01;同时感…...

Delphi 实现远程连接 Access 数据库的指南

方法一&#xff1a;通过局域网共享 Access 文件&#xff08;简单但有限&#xff09; 步骤 1&#xff1a;共享 Access 数据库 将 .mdb 或 .accdb 文件放在局域网内某台电脑的共享文件夹中。 右键文件夹 → 属性 → 共享 → 启用共享并设置权限&#xff08;需允许网络用户读写&a…...