问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

文档处理之10种PDF解析工具测评:兼看知识图谱遇见Chart图表的有趣实现思路

创作时间:
作者:
@小白创作中心

文档处理之10种PDF解析工具测评:兼看知识图谱遇见Chart图表的有趣实现思路

引用
CSDN
1.
https://blog.csdn.net/yifangyun_360/article/details/143632456

本文主要介绍了两个技术研究:一个是关于10种PDF解析工具的对比研究,另一个是关于将图表图像转换为知识图谱的研究。这些内容对于从事相关技术工作的读者具有较高的参考价值。

一、10种PDF解析工具+6种不同文档类别的测试分析

一篇来自arXiv的研究论文《A Comparative Study of PDF Parsing Tools Across Diverse Document Categories》对10种流行的PDF解析工具在6种不同文档类别上的表现进行了评估和比较。这些工具包括PyPDF、pdfminer.six、PyMuPDF、pdfplumber、pypdfium2、Unstructured、Tabula、Camelot以及基于深度学习的工具Nougat和Table Transformer(TATR)。研究使用了DocLayNet数据集,该数据集包含了超过80,000个手动标注的文档,涵盖了金融报告、手册、科学文章、法律和法规、专利和政府招标等类别。

对比的现有工具

以下是10个PDF解析工具的地址:

  1. PyPDF: PyPDF是一个纯Python库,能够拆分、合并、裁剪和转换PDF文件的页面。它还可以从PDF中检索文本和元数据:https://github.com/py-pdf/pypdf
  2. pdfminer.six: pdfminer.six是一个基于PDFMiner项目的增强版,用于从PDF文档中提取文本和结构信息:https://github.com/pdfminer/pdfminer.six
  3. PyMuPDF: PyMuPDF提供Python绑定到MuPDF库,用于处理PDF和其他格式的文档:https://github.com/pymupdf/PyMuPDF
  4. pdfplumber: pdfplumber是一个基于pdfminer的工具,可以提取PDF中的文本和表格:https://github.com/jsvine/pdfplumber
  5. pypdfium2: pypdfium2是一个绑定到PDFium库的工具,能够提取文本和图像:https://github.com/pypdfium2-team/pypdfium2
  6. Unstructured: Unstructured是一个Python库,用于从图像和文本文档中提取数据:https://github.com/Unstructured-IO/unstructured
  7. Tabula: Tabula是一个工具,用于从PDF文件中提取表格数据:https://github.com/tabulapdf/tabula
  8. Camelot: Camelot是一个Python库,专门用于从PDF文件中提取表格:https://github.com/camelot-dev/camelot
  9. Nougat: Nougat是一个基于Transformer模型的工具,可以处理PDF文档并将它们转换为MultiMarkdown格式:https://github.com/facebookresearch/nougat
  10. Table Transformer (TATR): TATR是一个基于Transformer的模型,专门用于表格检测:https://github.com/bobSmock/pubTables

评估结论

以下是不同PDF解析工具的对比结论:

  1. 文本提取能力:PyMuPDF和pypdfium在金融、法律、手册和招标类别的文档中表现较好,但在科学和专利类别的文档中所有工具都遇到了挑战。对于科学文档,基于学习的Nougat工具在文本提取方面表现更优,尤其是在处理包含复杂数学公式的文档时。

  2. 表格检测能力:TATR(Table Transformer)在金融、专利、法律和科学类别中表现出色,而在手册和招标类别中,PyMuPDF和Camelot表现更好。规则基础的解析工具在表格检测方面表现不佳,尤其是在面对复杂或非标准表格布局时。

  3. 规则基础与学习基础方法:规则基础方法(如PyMuPDF和pdfplumber)在处理结构相对简单的文档时表现良好,但在处理科学和专利文档时,学习基础方法(如Nougat和TATR)由于其能够处理更复杂的布局和结构,表现更优。

  4. 特定类别的挑战:科学文档中的数学公式和专利文档中的图像或图表对规则基础解析工具来说是一个挑战,这些工具通常无法准确提取这些元素。基于学习的方法能够更好地处理这些复杂的元素,但可能需要更多的计算资源和训练数据。

  5. 评估指标选择:可以使用F1分数、BLEU分数和局部对齐分数等多种评估指标来全面评估文本提取的质量,这些指标考虑了词序、单词识别、段落对齐和表格识别等多个因素。

  6. 工具的适用性:选择合适的工具需要考虑文档类型和特定任务的需求。例如,对于需要保持文档结构的任务,可能会优先选择BLEU分数高的工具,如PyMuPDF。对于需要全面信息捕获的任务,可能会选择召回率更高的工具。

二、知识图谱遇见Chart图表的有趣工作

一篇来自arXiv的研究论文《ChartKG: A Knowledge-Graph-Based Representation for Chart Images》介绍了一个名为ChartKG的知识图谱表示方法,用于建模图表图像中的实体和关系。ChartKG通过定义四种类型的实体和三种类型的关系,有效地表示了可视化中的语义信息。为了实现这种表示,还开发了一个名为chart-to-KG转换的框架,该框架整合了ResNet、YOLOv5、OCR和基于规则的方法,将基于位图的可视化转换为知识图谱。

基于ChartKG的示例应用

主要有两个应用方向:

  1. 语义感知的图表检索(Semantic-aware Chart Retrieval):旨在提供一种图表检索方法,能够根据用户的偏好和需求,从大量的图表中检索出符合特定语义要求的图表。具体实现上,用户首先根据需要输入图表的类型、关键实体以及实体之间的关系。系统根据用户的输入,通过条件过滤来检索图表。

  2. 图表问题回答(Chart Question Answering):旨在通过ChartKG增强视觉问题回答(VQA)任务,使其能够更准确地回答关于图表的问题。具体实现上,利用ChartKG的知识结构,设计了三个问题模板,分别针对数据比较、视觉编码查询和视觉洞察推理。通过图基检索和推理,执行知识图谱中的问答过程。

如图4. ChartKG驱动的图表检索的示例结果。(a) 展示了数据变量检索的结果,其中突出显示了满足查询要求的关键词。(b) 描述了结合数据变量和视觉洞察检索的结果,并在图表下方显示了相关的实体和关系。

知识图谱构建过程

ChartKG的构建是一个将图表图像转换成知识图谱表示的过程。这个过程涉及到多个步骤,包括图表分类、图表解析和知识图谱构建,将图表图像中的视觉元素和语义信息转换为结构化的知识图谱,为后续的图表分析和理解任务提供语义信息和可解释性。

如图1所示,将图表图像转换为所提出的知识图谱表示的框架概述。首先使用卷积神经网络(CNN)检测输入图像以进行图表分类。然后,引入对象识别和光学字符识别(OCR)来解析图表,并开发了一种基于规则的方法来构建图表图像的最终知识图谱。

  1. 图表分类(Chart Classification):确定输入图表图像的类型,如条形图、折线图、饼图和散点图等。在实现上,使用预训练的深度学习模型ResNet50对图表进行分类。

  2. 图表解析(Chart Parsing):从图表中提取视觉元素和文本信息。在实现上,结合对象识别和光学字符识别(OCR)技术。

  • 对象识别:使用YOLOv5模型检测图表中的元素,如条形、线条、颜色标记和文本等。针对不同类型的图表,训练不同的对象检测模型以提高可扩展性。
  • 光学字符识别(OCR):使用Tesseract OCR引擎从图表中提取文本信息,如标题、轴标签等。
  • 图形标记解析:根据不同类型图表的特点,解析图形标记(如条形图的条形、折线图的线段、饼图的扇区和散点图的点)的颜色、大小和位置等信息。
  1. 知识图谱构建(Knowledge Graph Construction):将解析出的图表元素和关系构建成知识图谱。
  • 实体分类(Entity Classification):将解析出的图表元素归类为不同的实体类型,如视觉元素(VE)、视觉元素属性值(VEPV)、数据变量(DV)、数据变量值(DVV)和视觉洞察(VI)。
  • 关系构建(Relationship Construction):定义并构建实体之间的关系,包括视觉属性对应关系、数据变量对应关系、视觉编码映射和视觉洞察对应关系。

这个工作很有趣,想法很不错,是个结合的工作,但是也存在一些问题,尤其是戏落地过程中,图表到知识图谱的转换框架中,使用了不同的技术进行图表分类、对象识别和光学字符识别(OCR),这些存在着经典的piepline级联错误传播问题,并且为了做这个,其实还蛮耗费硬件资源的。

总结

本文主要介绍了两个工作,还是围绕文档智能这个方向,一个是10种PDF解析工具+6种不同文档类别的测试分析,这个有好落地,能够给出一些具有参考意义的工具。另一个是关于图表跟知识图谱的结合,ChartKG,其中对于知识图谱的设计、图表要素的抽取以及下游应用的设计,都很有想法,读下来都不错,但跟落地还是两码事。多思考,多看,批判性的看问题,总会有所收获。大家一起加油

参考文献

  1. https://arxiv.org/abs/2410.09871
  2. https://arxiv.org/abs/2410.09761
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号