Table Recognition Metric: 表格识别算法评测工具包及相关评测基准数据集

news2024/11/25 22:51:30

Table Recognition Metric

PyPI SemVer2.0

  • 该库用于计算TEDS指标,用来评测表格识别算法效果。可与魔搭-表格识别测试集配套使用。
  • TEDS计算代码参考:PaddleOCR 和 DAVAR-Lab-OCR

使用说明:

  1. Install package by pypi.
    pip install table_recognition_metric
    
  2. Run by command line.
    • Usage:
      $ table_recognition_metric -h
      usage: table_recognition_metric [-h] [-gt GT_HTML] [-pred PRED_HTML]
      
      optional arguments:
      -h, --help            show this help message and exit
      -gt GT_HTML, --gt_html GT_HTML
      -pred PRED_HTML, --pred_html PRED_HTM
      
    • Example:
      $ table_recognition_metric -gt '<html><body><table><tr><td>购买方</td><td colspan="5">纳税人识别号地址、电记开户行及账号</td><td>密码区</td><td colspan="4"></td></tr><tr><td colspan="2">货物或应税劳务、服务名称理肤泉清痘旅行装控油祛痘调节水油平衡理肤泉特安舒缓修护乳40ml合计</td><td>规格型号</td><td>单位</td><td>11</td><td colspan="3"></td><td></td><td>税率17%17%</td><td></td></tr><tr><td colspan="2">价税合计(大写)</td><td colspan="9"></td></tr><tr><td>销售方</td><td colspan="5">纳税人识别号地址、电话开户行及账号</td><td>备注</td><td colspan="4"></td></tr></table></body></html>' -pred ''
      
      # 0.0
      
  3. Run by script.
    from table_recognition_metric import TEDS
    
    teds = TEDS()
    
    gt_html = '<html><body><table><tr><td>购买方</td><td colspan="5">纳税人识别号地址、电记开户行及账号</td><td>密码区</td><td colspan="4"></td></tr><tr><td colspan="2">货物或应税劳务、服务名称理肤泉清痘旅行装控油祛痘调节水油平衡理肤泉特安舒缓修护乳40ml合计</td><td>规格型号</td><td>单位</td><td>11</td><td colspan="3"></td><td></td><td>税率17%17%</td><td></td></tr><tr><td colspan="2">价税合计(大写)</td><td colspan="9"></td></tr><tr><td>销售方</td><td colspan="5">纳税人识别号地址、电话开户行及账号</td><td>备注</td><td colspan="4"></td></tr></table></body></html>'
    pred_html = '<html><body><table><tr><td>购买方</td><td colspan="5">纳税人识别号地址、电记开户行及账号</td><td>密码区</td><td colspan="4"></td></tr><tr><td colspan="2">货物或应税劳务、服务名称理肤泉清痘旅行装控油祛痘调节水油平衡理肤泉特安舒缓修护乳40ml合计</td><td>规格型号</td><td>单位</td><td>11</td><td colspan="3"></td><td></td><td>税率17%17%</td><td></td></tr><tr><td colspan="2">价税合计(大写)</td><td colspan="9"></td></tr><tr><td>销售方</td><td colspan="5">纳税人识别号地址、电话开户行及账号</td><td>备注</td><td colspan="4"></td></tr></table></body></html>'
    
    score = teds(gt_html, pred_html)
    print(score)
    

数据集上评测

  • 这里以rapid-table在表格数据集liekkas/table_recognition上的评测代码,大家可以以此类推。
  • 安装必要的包
    pip install modelscope==1.5.2
    pip install rapid_table
    
  • 运行测试
    from modelscope.msdatasets import MsDataset
    from rapid_table import RapidTable
    
    from table_recognition_metric import TEDS
    
    test_data = MsDataset.load(
        "table_recognition",
        namespace="liekkas",
        subset_name="default",
        split="test",
    )
    table_engine = RapidTable()
    teds = TEDS()
    
    content = []
    for one_data in test_data:
        img_path = one_data.get("image:FILE")
        gt = one_data.get("label")
    
        pred_str, _ = table_engine(img_path)
        scores = teds(gt, pred_str)
        content.append(scores)
        print(f"{img_path}\t{scores:.5f}")
    
    avg = sum(content) / len(content)
    print(avg)
    # 0.5847187558587787
    

Tree-EditDistance-based Similarity (TEDS)

  • TEDS是IBM在论文《Image-based table recognition: data, model, and evaluation》中提出的。

  • 之前提出的评测算法,主要是将一个表格的ground truthrecognition result各自展平为非空cell两两之间的邻接关系列表。然后通过比较这两个列表,来计算precision, recall和F1-score。该metric主要存在两个明显问题:

    1. 由于它只检查非空单元格之间的直接邻接关系,因此它无法检测由空单元格和超出直接邻居的单元格未对齐引起的错误;
    2. 由于它通过精准匹配来检查关系,因此它没有衡量fine-grained单元格内容识别性能的机制。
  • 针对以上问题,TEDS通过以下方法予以解决:

    1. 通过在全局树结构级别检查识别结果,使其能够识别它识别所有类型的结构错误,来解决上述问题1;
    2. tree-edit的操作是节点替换时,计算对应的字符串编辑距离,来解决上述问题2。
  • 计算公式:

    T E D S ( T a , T b ) = 1 − E d i t D i s t ( T a , T b ) m a x ( ∣ T a ∣ , ∣ T b ∣ ) TEDS(T_{a}, T_{b}) = 1 - \frac{EditDist(T_{a}, T_{b})}{max(|T_{a}|, |T_{b}|)} TEDS(Ta,Tb)=1max(Ta,Tb)EditDist(Ta,Tb)
    其中, E d i t D i s t EditDist EditDist指的是tree-edit distance, ∣ T ∣ |T| T指的是在 T T T中节点的数量。一个表格还原算法在一系列测试集上识别效果可以定义为:测试集中所有样例逐个计算其ground truthpredict result之间的TEDS,最终对所有样例的TEDS求均值得到最终得分。

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

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

相关文章

2023-7-13-第十八式观察者模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

【python手写算法】【多元】利用梯度下降实现线性拟合

本来是想做一个特征缩放的&#xff0c;然鹅发现我那种归一化缩放反而让训练速度变慢了。。先搞一个二元的。 if __name__ __main__:X1 [12.46, 0.25, 5.22, 11.3, 6.81, 4.59, 0.66, 14.53, 15.49, 14.43,2.19, 1.35, 10.02, 12.93, 5.93, 2.92, 12.81, 4.88, 13.11, 5.8,29.…

135432-37-0,Cyclo(-Gly-Arg-Gly-Asp-Ser-Pro)多肽合成(化学)方法

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ ---试剂基团反应特点&#xff08;Reagent group reaction characteristics&#xff09;--- 多肽试剂Cyclo(-Gly-Arg-Gly-Asp-Ser-Pro)&#xff08;CAS号&#xff1a;135432-37-0&#xff09;&#xff0c;目前多肽合成中&a…

左神算法中级提升(4) 超级重点:动态规划的空间压缩技巧

【案例1】 【题目描述】【以后出现这种的题型 概率很低】 【案例2】 【题目描述】 【思路解析】 构建两个栈&#xff0c;一个栈存放基本数据&#xff0c;一个栈存放最小值数据。每次加入一个数据时&#xff0c;当前元素和栈顶元素比较&#xff0c;谁小谁进入。 然后弹出时&a…

Hugging News #0710: 体验 MusicGen、Diffusers 库发布一周年、我们的内容政策更新

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息&#xff0…

[PyTorch][chapter 44][时间序列表示方法4]

前言&#xff1a; 训练复杂度 OE*T*Q 参数 全称 E 迭代次数 Number of the training epochs T数据集大小 Number of the words in the training set Q 模型计算复杂度 Model computational complexity E,T 一般都认为相同&#xff0c;所以这里面主要讨论Q&#xff0c;模…

maven-依赖管理-下

依赖冲突 特殊优先 特殊优先∶当同级配置了相同资源的不同版本&#xff0c;后配置的覆盖先配置的(提醒&#xff1a;要尽量避免这种没有意义的冲突)修改D:\java_projects\maven_A\pom.xml, 引入mysql5.1 <?xml version"1.0" encoding"UTF-8"?> &…

什么是用电信息采集系统?

用电信息采集系统是一种用于收集、处理和分析电力用户用电信息的系统&#xff0c;旨在提高电力系统的运行效率、可靠性和安全性。该系统主要通过对电力用户的用电数据进行实时监测、分析和处理&#xff0c;为电力公司、政府部门和用户提供有用的信息&#xff0c;以帮助他们更好…

PyTorch 1.13简介

# 1.  PyTorch 1.13 据官方介绍&#xff0c;PyTorch 1.13 中包括了 BetterTransformer 的稳定版&#xff0c;且不再支持 CUDA 10.2 及 11.3&#xff0c;并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。 1.1 主要更新 Be…

JavaWeb 前后端分离

AJax 1. 前端视图 ajax\src\main\webapp\ajax-register.html <html><head><meta charset"UTF-8"> </head><body><form class"form-horizontal" role"form"><div><tr><td>账号</td&…

数据库主从同步

目录 一、准备工作1.1 安装或关闭以下服务1.2 本次安装环境 2、主数据库配置2.1主数据库配置2.2创建用户2.3查看信息 三、从主数据库配置3.1从数据库配置3.2连接主服务器3.3测试 4、其他4.1连接完毕后发现Slave_IO_Running值异常&#xff0c;4.2报错Error connecting to source…

第一阶段-第七章 Python的函数进阶

目录 一、函数多返回值  1.学习目标  2.多个返回值的语法  3.本节的代码演示 二、函数多种传参方式  1.学习目标  2.函数参数种类&#xff08;位置参数、关键字参数、缺省参数、不定长参数&#xff08;位置传递、关键字传递&#xff09;&#xff09;  3.本节的代码…

一条命令解决端口占用,开启mysql

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录 端口占用开启mysql 端口占用 如果发现 8080 端口被占用可以使用命令 sudo lsof -t -i:8080 | sudo xargs kill -9 查找并杀死相应的进程。 开启mysql 打开命令提示符或终端。如果您已经安装了MySQL&…

【雕爷学编程】Arduino动手做(161)---16路PWM舵机驱动板PCA9685

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

HTML语法

文章目录 前言HTML 文件基本结构常见标签标签种类特殊符号图片链接a链接 双标签链接 列表表格 &#xff1a;表单多行文本域: 前言 HTML是有标签组成的 <body>hello</body>大部分标签成对出现. 为开始标签, 为结束标签. 少数标签只有开始标签, 称为 “单标签”. 开…

第二章:类和对象(中)

系列文章目录 文章目录 系列文章目录前言类的6个默认成员函数构造函数概念特性 析构函数概念特性 拷贝构造函数概念特征 赋值运算符重载运算符重载赋值运算符重载赋值运算符重载格式赋值运算符只能重载成类的成员函数不能重载成全局函数用户没有显式实现时&#xff0c;编译器会…

【物理】模拟粒子在电场和磁场中的轨迹研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Mysql的分库分表策略

一.水平切分 水平切分又称为 Sharding 策略&#xff0c;它是将同一个表中的记录拆分到多个结构相同的表中。 当一个表的数据不断增多时&#xff0c;Sharding 是必然的选择&#xff0c;它可以将数据分布到集群的不同节点上&#xff0c;从而缓存单个数据库的压力。 Sharding 策…

后端(五):JVM

目录 JVM 中的内存区域划分 JVM 的类加载机制 1. 加载 2. 验证 3. 准备 4. 解析 5. 初始化 JVM 中的垃圾回收策略 找&#xff0c;确认垃圾 1. 引用计数 2. 可达行分析 释放”垃圾“对象 1. 标记清除 2. 复制算法 3. 标记整理 分代算法 JVM也就是我们俗称的八股…

Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面

Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面 虽然说IE6除了部分要求苛刻的需求以外已经被可以不考虑了&#xff0c;但是WIN7自带的浏览器IE8还是需要支持的。 本文这个方法主要的优点&#xff0c;个人觉得就是准备少&#xff0c;不需要上网寻找大量的图片做素材&…