今天是2023年10月27日,星期五,北京,天气晴。
我们来谈谈文档智能。文档智能作为知识图谱和大模型落地过程中的重要前置性工作,在提升其工具属性,提升RAG准确性上能够发挥重要作用。
在前面的文章中,我们已经就"文档智能"这一专题介绍了多篇文章,包括《PDF文档智能之DOC转换开源实现解析:从PyMuPDF到pdf2docx基本思路与实践总结》与《NLP文本与文档信息抽取数据标注实操:基于Label studio的训练数据标注指南》。
而,如何自动的构造出标注数据集,在文档智能领域当中是一个十分重要的问题。
因此,本文主要针对版面分析和表格识别两个任务,从Publaynet版面分析数据集的自动生成、基于编辑转换方式的TableBank表格检测数据集自动生成、基于随机组合方式得到TableGeneration表格识别训练数据自动生成三个方面的内容进行介绍。供大家一起参考。
版面分析是当前文档智能的一个重要的基础性任务,指的是对图片形式的文档进行区域划分,定位其中的关键区域,如文字、标题、表格、图片等。
目前主流模型,英文支持Text、Title、Tale、Figure、List5类区域的检测,中文模型支持Text、Title、Figure、Figure caption、Table、Table caption、Header、Footer、Reference、Equation10类区域的检测,表格版面分析支持Table区域的检测。 在数据集方面,当前知名的数据集包括英文数据集PubLayNet、中文文档版面分析数据集CDLA等。
1、PubLayNet数据集
PubLayNet是文档图像版面分析的大型数据集,其布局用多边形边框分割标注。文档的来源是PubMed Central Open Access子集(商业用途集合),通过匹配PubMed Central Open Access子集中的文章的PDF格式和XML格式,自动生成注释,包含Text、Title、Tale、Figure、List,共5个类别,数据集中包含335,703张训练集、11,245张验证集和11,405张测试集。
而如何获得这样一个大规模的数据集,其构造方式十分有趣。
2、基于匹配方式的Publaynet版面分析数据集的构造方式
在实现思想上,Publaynet数据集的构造十分有趣,其将PDF元素与XML节点相匹配,计算和PDF元素及其对应boudingbox,利用XML节点来决定每个boudingbox和区域的类别标签。
在具体实现上:
首先,先对PDF文本进行排序,论文标题、摘要、关键词、章节标题和正文中的文字排序,XML节点的顺序与PDF文档中的阅读顺序一致。由PDFMiner按照阅读顺序进行解析,得到每个模块的boudingbox和正文内容。
其次,由PDFMiner解析的PDF内容与XML节点的文本之间经常有微小的差异。采用模糊字符串匹配来计算。针对不同的长度,设置不同的阈值,由于一个文本框可能涵盖多个XML节点,则依次搜索XML节点文本中的文本框的文本线。
最后,为了控制生成数据的质量,该方法定义一个质量控制指标,PDF页面的注释质量被定义为被注释的文本框、图像和几何图形的面积与该页面主文本框内的文本框、图像和几何图形的面积之比。注释质量低于99%的非标题页被排除在PubLayNet之外。
1、TableBank数据集
TableBank数据集包含Latex(训练集187199张,验证集7265张,测试集5719张)与Word(训练集73383张,验证集2735张,测试集2281张)两种类别的文档。仅包含Table1个类别。
下载地址:https://doc-analysis.github.io/tablebank-page/index.html
2、基于编辑转换方式的数据标注
1)表格检测数据标注
首先,将doc文档按照表格区域进行修改。修改了XML文件中的代码片段,使表格的边框与文件的其他部分相比,可以变成一种可区分的颜色。
其次,将word或者latex转换为pdf,圈定boudingbox。为了获得真实标签,从生成的PDF文件中提取注释从生成的PDF文档中提取注释。
对于每一页的注释的PDF文档中的每一页,我们都会在原始页面的表格上添加边界框,并使用白色。到原始页面中的表格上,并加上白色,以便使两页在同一位置对齐。
然后,简单地在像素层面上比较两页,这样就可以找到不同的像素,得到表格的左上角以及宽度和长度。
2)表格结构识别数据标注
表格结构识别是表格检测的一个后续步骤,其大致含义为:给定一个图片格式的表格,生成一个代表HTML标签序列的图像格式的表格,生成一个HTML标签序列,表示行和列的排列,以及表格单元的类型。
通过这种方式,可以自动创建结构识别数据集。Word和Latex文档的源代码中创建结构识别数据集。对于Word文档,只需将文档中的原始XML信息转换成HTML标签序列。
对于Latex文档来说,首先使用LaTeXML工具包,从Latex中生成XML,然后将XML转换成HTML。Latex,然后将XML转换为HTML。
如上图中显示了一个简单的例子,用'<cell_y>'来表示有内容的单元格。表示有内容的单元格,而'<cell_n>'代表没有内容的单元格。
在推断的过程中,从表格结构识别结果中得到行和列的结构,并从表格结构识别结果中得到以及所有紧密排列的文本块的内容和边界框。
TableGeneration是当前自动生成多样性表格识别训练数据的一个开源项目,其思想在于通过浏览器渲染生成表格图像,代码修改自论文《Rethinking Table Parsing using Graph Neural Networks》源代码。
修改后支持更多参数可配置,如单元格类型,表格行列,合并单元格数量,并支持彩色单元格。以满足简单表格场景、彩色表格场景、清单长表格场景以及宽表换行表格场景等不同的需求。
1、基于随机组合方式的表格生成流程
1)随机生成表格行列
2)随机生成表格合并单元格数量和合并的起始结束位置
3)对于每一个单元格随机生成文本并组合成html字符串
4)使用浏览器对html字符串进行渲染生成表格图片
5)浏览器截图获取表格图片
6)裁剪图片,只保留表格区域
7)保存PP-Structure标注格式
2、规范表格场景下的表格类型细分
更细致的,针对规范表格场景,该方法还提供了border:全部边框、border_top:上横线框、border_bottom:下横线框、head_border_bottom:下横线框、no_border:无边框、border_right:右竖线框以及border_left:左竖线框共7小类的表格类型。
项目地址:
https://github.com/hassan-mahmood/TIES_DataGeneration
https://github.com/WenmuZhou/TableGeneration
本文主要针对版面分析和表格识别两个任务,从Publaynet版面分析数据集的自动生成、基于编辑转换方式的TableBank表格检测数据集自动生成、基于随机组合方式得到TableGeneration表格识别训练数据自动生成三个方面的内容进行了介绍。
感兴趣的朋友可以自己阅读文献,并实操项目,增进自己的理解。
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。