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

news2025/2/12 8:24:28

大家好,我是微学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 np

table_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 image

def 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_points


if  __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.coloradmin.cn/o/864301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何消除谐波对医疗设备的影响? 安科瑞 顾语欢

1.概述 谐波的危害十分严重,尤其在医院这种医疗设备和化验设备较多的场合。大部分大型医疗设备都是谐波源,比如X光机、CT机等都会产生大量谐波,谐波使电能的生产、传输和利用的效率降低,使电气设备过热、产生振动和噪声&#xff…

opencv进阶01-直方图的应用及示例cv2.calcHist()

直方图是什么? 直方图是一种图形表示方法,用于显示数据中各个数值或数值范围的分布情况。它将数据划分为一系列的区间(也称为“箱子”或“bin”),然后统计每个区间中数据出现的频次(或频率)。直…

supervisor常见错误场景

项目场景&#xff1a; python虚拟环境venv启动supervisor服务 一、类型一 unix:///var/run/supervisor.sock no such file error: <class ‘FileNotFoundError’>, [Errno 2] No such file or directory: file: /home/zhaon/miniconda3/envs/abio_filesvr/lib/python3.…

Stable Diffusion Webui源码剖析

1、关键python依赖 &#xff08;1&#xff09;xformers&#xff1a;优化加速方案。它可以对模型进行适当的优化来加速图片生成并降低显存占用。缺点是输出图像不稳定&#xff0c;有可能比不开Xformers略差。 &#xff08;2&#xff09;GFPGAN&#xff1a;它是腾讯开源的人脸修…

出于网络安全考虑,印度启用本土操作系统”玛雅“取代Windows

据《印度教徒报》报道&#xff0c;印度将放弃微软系统&#xff0c;选择新的操作系统和端点检测与保护系统。 备受期待的 "玛雅操作系统 "将很快用于印度国防部的数字领域&#xff0c;而新的端点检测和保护系统 "Chakravyuh "也将一起面世。 不过&#xf…

Sharding-JDBC概述

前言 ​ 随着业务数据量的增加&#xff0c;原来所有的数据都是在一个数据库上的&#xff0c;网络IO及文件IO都集中在一个数据库上的&#xff0c;因此CPU、内存、文件IO、网络IO都可能会成为系统瓶颈。当业务系统的数据容量接近或超过单台服务器的容量、QPS/TPS接近或超过单个数…

分布式作业调度框架——ElasticJob

1、简介 ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案&#xff0c;由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能&#xff0c;打造一个适用于互联网场景的分布式调度解决方案&#xff0c;…

c语言进阶部分详解(数据在内存中的存储)

大家好&#xff0c;今天要进行梳理的内容是数据在内存中的存储相关内容。 在C语言中&#xff0c;数据在内存中的存储是一个非常重要的概念。了解数据在内存中的存储方式可以帮助我们更好地理解程序的执行过程&#xff0c;优化内存使用&#xff0c;提高程序的性能。 目录 一.数…

5.0SMDJ24CA 瞬态抑制TVS二极管 可过4kV 2Ω测试

瞬态概述 浪涌描述的是存在于电源或信号线上uS级以上的脉冲。通常浪涌产生于雷击或开关瞬变能量。雷击能量可能是由于直击雷或感应雷作用于系统所产生的瞬变能量&#xff0c;开关瞬变能量通常由于配电系统的电源切换&#xff0c;或是负载的变化导致。 雷击浪涌测试目的 GB/T …

QT中的PRO文件怎么进行相关的信息的注释?

小白学开发之QT下的PRO文件怎么进行注释&#xff0c;以及Pro文件的作用 Hello大家好&#xff0c;这里是程序员小白学开发&#xff0c;我是一个刚入门QT的初学者&#xff0c;晕乎晕乎的&#xff01;希望能够随时随地将自己所学的知识分享给大家&#xff0c;带着大学从零基础开始…

测试设计规范:优秀实践的全面指南

测试设计规范是一个定义了与测试项目相关的测试条件、详细的测试方法和高级测试用例的文档。它确定了要运行哪些测试套件和测试用例&#xff0c;以及要跳过哪些。 使用测试设计规范&#xff0c;可以简化对当前测试周期的理解。这个文档回答了像“我们在做什么?”&#xff0c;…

springcloud3 springcloud stream的学习以及案例(了解)

一 springcloud stream的作用 1.1 springcloud stream作用 stream屏蔽底层消息中间件的差异&#xff0c;降低切换成本&#xff0c;统一消息的编程模型。 stream中的消息通信模式遵循了“发布-订阅”模式。 1.2 Binder作用 通过定义绑定器Binder作为中间层&#xff0c;实现…

基于DEM tif影像的插值平滑和tif纹理贴图构建方法

准备数据是一个10米分辨率的Tif影像&#xff0c;直接用于生成DEM会十分的不平滑。如下图所示&#xff0c;平滑前后的对比效果图差异&#xff1a; 基于ArcGIS的DEM平滑插值 等值线生成&#xff08;指定加密间距&#xff09; 平滑线&#xff08;指定平滑容差平滑等高线&#xff0…

jackson库收发json格式数据和ajax发送json格式的数据

一、jackson库收发json格式数据 jackson库是maven仓库中用来实现组织json数据功能的库。 json格式  json格式一个组织数据的字符文本格式&#xff0c;它用键值对的方式存贮数据&#xff0c;json数据都是有一对对键值对组成的&#xff0c;键只能是字符串&#xff0c;用双引号包…

python爬虫——爬虫伪装和反“反爬”

前言 爬虫伪装和反“反爬”是在爬虫领域中非常重要的话题。伪装可以让你的爬虫看起来更像普通的浏览器或者应用程序&#xff0c;从而减少被服务器封禁的风险&#xff1b;反“反爬”则是应对服务器加强的反爬虫机制。下面将详细介绍一些常见的伪装和反反爬技巧&#xff0c;并提…

ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960)

ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) 二、CVE-2022-23960 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) Title TF-A披露通过分支预测目标重用&#xff08;branch prediction target reuse&#xff09;引发的前瞻执行处理器漏洞 CV…

2000-2022年全国各地级市绿色金融指数数据

2000-2022年全国各地级市绿色金融指数数据 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;来源&#xff1a;统计局、科技部、中国人民银行等权威机构网站及各种权威统计年鉴&#xff0c;包括全国及各省市统计年鉴、环境状况公报及一些专业统计年鉴&#xff0c;如 《中国…

工厂老化设备维护的重要性及如何维护老化设备?

工业领域的老化设备问题日益凸显&#xff0c;对于保持生产稳定和效率至关重要。本文将探讨工厂老化设备维护的重要性&#xff0c;并介绍如何通过PreMaint设备数字化平台实现对老化设备的高效维护&#xff0c;从而确保工厂持续高效运转。 一、工厂老化设备的重要性 随着时间的推…

Flutter实现倒计时功能,秒数转时分秒,然后倒计时

Flutter实现倒计时功能 发布时间&#xff1a;2023/05/12 本文实例为大家分享了Flutter实现倒计时功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 有一个需求&#xff0c;需要在页面进行显示倒计时&#xff0c;倒计时结束后&#xff0c;做相应的逻辑处理。 实…

【Spring专题】Bean的声明周期流程图

前言 我向来不主张【通过源码】理解业务&#xff0c;因为每个人的能力有限&#xff0c;甚至可能会因为阅读错误导致出现理解上的偏差&#xff0c;所以我决定&#xff0c;还是先帮大家【开天眼】&#xff0c;先整体看看流程图&#xff0c;好知道&#xff0c;Spring在写源码的过…