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

我们来围绕文档智能这个方向,一个是10种PDF解析工具+6种不同文档类别的测试分析,这个有好落地,能够给出一些具有参考意义的工具。

另一个是关于图表跟知识图谱的结合,ChartKG,其中对于知识图谱的设计、图表要素的抽取以及下游应用的设计,都很有想法,读下来都不错,会有收获。

供大家一起参考并思考。

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

再看看pdf文档的解析工具综述,也是目前大家谈的重点,《A Comparative Study of PDF Parsing Tools Across Diverse Document Categories》,https://arxiv.org/abs/2410.09871,这个工作评估和比较10种流行的PDF解析工具在6种不同文档类别上的表现,这些工具包括PyPDF、pdfminer.six、PyMuPDF、pdfplumber、pypdfium2、Unstructured、Tabula、Camelot以及基于深度学习的工具Nougat和Table Transformer(TATR)。研究使用了DocLayNet数据集,该数据集包含了超过80,000个手动标注的文档,涵盖了金融报告、手册、科学文章、法律和法规、专利和政府招标等类别。

可以看看一些有趣的结论:

1、对比的现有工具

工具包括PyPDF、pdfminer.six、PyMuPDF、pdfplumber、pypdfium2、Unstructured、Tabula、Camelot

以下是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

2、相关数据集

从PDF中提取信息的常用数据集,详细说明了各种类型的基准真实元素(GTE),包括参考文献(R)、带有布局细节的全文(FT)和表格(T)。这些基准真实元素是通过使用XML或LaTeX文件自动生成的,或者通过人工干预手动生成的。

3、评估结论

以下是不同PDF解析工具的对比结论,可参考,

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

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

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

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

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

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

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

读到一个有趣的工作,《ChartKG: A Knowledge-Graph-Based Representation for Chart Images》,https://arxiv.org/abs/2410.09761,介绍了一个名为ChartKG的知识图谱表示方法,用于建模图表图像中的实体和关系。

ChartKG通过定义四种类型的实体和三种类型的关系,有效地表示了可视化中的语义信息。为了实现这种表示,还开发了一个名为chart-to-KG转换的框架,该框架整合了ResNet、YOLOv5、OCR和基于规则的方法,将基于位图的可视化转换为知识图谱。

先看成品: 四种类型图表的知识图谱表示示例。(a) 条形图;(b) 折线图;© 饼图;(d) 散点图,如下

接着,来看几个有趣的点:

1、基于ChartKG的示例应用,能用来做什么

主要有两个:语义感知的图表检索(Semantic-aware Chart Retrieval)和图表问题回答(Chart Question Answering)。

1)语义感知的图表检索(Semantic-aware Chart Retrieval)

旨在提供一种图表检索方法,能够根据用户的偏好和需求,从大量的图表中检索出符合特定语义要求的图表。

具体实现上, 用户首先根据需要输入图表的类型、关键实体以及实体之间的关系。系统根据用户的输入,通过条件过滤来检索图表。具体步骤在于,用户以特定的句子格式指定图表类型、关键实体和实体间的关系。系统根据指定的图表类型过滤数据集,然后通过变量字典匹配用户输入的变量和变量名,进一步缩小目标图表的范围,最后,在满足上述条件的图表知识图中匹配编码关系,最终筛选出符合用户要求的图表。

2)图表问题回答(Chart Question Answering)

旨在通过ChartKG增强视觉问题回答(VQA)任务,使其能够更准确地回答关于图表的问题。

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

在具体实现上,利用ChartKG的知识结构,设计了三个问题模板,分别针对数据比较、视觉编码查询和视觉洞察推理。过图基检索和推理,执行知识图谱中的问答过程。具体步骤包括:通过匹配关键词确定问题的类型,然后利用知识图谱匹配问题中的关键词,定位必要的实体。最后 ,根据问题类型对应的搜索规则进行知识搜索,并应用推理规则找到答案。

2、再看知识图谱是怎么做的

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

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

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

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

具体的,在对象识别上 ,使用YOLOv5模型检测图表中的元素,如条形、线条、颜色标记和文本等。针对不同类型的图表,训练不同的对象检测模型以提高可扩展性。

然后进行光学字符识别(OCR): 使用Tesseract OCR引擎从图表中提取文本信息,如标题、轴标签等。最后进行图形标记解析: 根据不同类型图表的特点,解析图形标记(如条形图的条形、折线图的线段、饼图的扇区和散点图的点)的颜色、大小和位置等信息。

3)知识图谱构建(Knowledge Graph Construction),将解析出的图表元素和关系构建成知识图谱

在实现上,线进行实体分类(Entity Classification): 将解析出的图表元素归类为不同的实体类型,如视觉元素(VE)、视觉元素属性值(VEPV)、数据变量(DV)、数据变量值(DVV)和视觉洞察(VI),如图2所示,

然后进行关系构建(Relationship Construction): 定义并构建实体之间的关系,包括视觉属性对应关系、数据变量对应关系、视觉编码映射和视觉洞察对应关系。

这个关系包括视觉属性对应关系: 连接视觉元素与其属性值,如条形的高度或颜色;数据变量对应关系: 连接数据变量与其值,如“年份”变量与“2011”值;视觉编码映射: 表示数据变量或其值如何被编码为视觉元素的属性,如条形的高度表示数据值;视觉洞察对应关系: 表示数据变量和值之间的视觉洞察,如趋势或比较。

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

总结

本文主要介绍了两个工作,还是围绕文档智能这个方向,一个是10种PDF解析工具+6种不同文档类别的测试分析,这个有好落地,能够给出一些具有参考意义的工具。

另一个是关于图表跟知识图谱的结合,ChartKG,其中对于知识图谱的设计、图表要素的抽取以及下游应用的设计,都很有想法,读下来都不错,但跟落地还是两码事。

多思考,多看,批判性的看问题,总会有所收获。大家一起加油

参考文献

1、https://arxiv.org/abs/2410.09871

2、https://arxiv.org/abs/2410.09761

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于大模型的招聘智能体:从创意到MVP

正在考虑下一个 SaaS 创意?以下是我在短短几个小时内从创意到 MVP 的过程。 以下是我将在这篇文章中介绍的内容概述: 为什么这个想法让我产生共鸣我是如何开始构建它的我现在的处境以及我是否会真正推出 获得 SaaS 创意并构建它并不容易。就是这样。 …

SD-WAN可以搭建在任何网络上,通过中央控制器管理企业所有用户的终端路由器,实现集中配置和监控。

中国联通国际公司产品之 SD-WAN 在数字化转型的浪潮中,企业对于网络灵活性和高效性的需求日益增长。中国联通国际公司推出的SD-WAN(软件定义广域网)产品,正是基于这一背景应运而生,它以其独特的技术优势和全球化的网络…

何使用本地 LLMs 为可观察性 AI 助手提供本地部署支持

作者:来自 Elastic David Hope 了解如何为私有或本地部署配置本地 LLM。更多阅读:使用 Elastic 和 LM Studio 的 Herding Llama 3.1。 智能大语言模型已经存在了一段时间,一些客户做的第一件事就是在发生了许多严重的数据泄露事件后采取措施…

nltk_data下载安装

gitee上下载zip下载后解压缩(三次)packages文件夹改名为nltk_data 找应该放在哪: 放到上面列出的任一位置: 放到正确位置后:

搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程

参考文章: 安装protoc、protoc-gen-go、protoc-gen-go-grpc-CSDN博客 一、简单介绍 本文开发环境,均为 windows 环境,mac 环境其实也类似 ~ ① 编译proto文件,相关插件 简单介绍: protoc 是编译器,用于将…

数据分析和可视化python库orange简单使用方法

Orange 是一个基于 Python 的数据挖掘和机器学习库,它提供了一系列可视化工具和算法,用于数据分析、机器学习和数据可视化等任务。 一、主要特点 可视化界面:Orange 提供了直观的可视化界面,使得用户可以通过拖放操作构建数据分…

HCIP-HarmonyOS Application Developer 习题(十五)

(判断)1、在HarmonyOs中发布带权限公共事件,发布者首先要在config.json中申请所需的权限。 答案:正确 分析:发布携带权限的公共事件:构造CommonEventPublishInfo对象,设置订阅者的权限。 &#…

nacos实现配置管理

项目结构 引入依赖 <!--统一配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--读取bootstrap文件--><dependency>&l…

电机学习-Park变换

一、Park变换 坐标关系&#xff1a; I d I α ∗ c o s θ e I β ∗ s i n θ e I_d I_\alpha*cos\theta_e I_\beta*sin\theta_e Id​Iα​∗cosθe​Iβ​∗sinθe​ I q − I α ∗ s i n θ e I β ∗ c o s θ e I_q -I_\alpha*sin\theta_e I_\beta*cos\theta_…

Redis 常用指令详解

Redis是一款开源的、高性能的键值对存储数据库&#xff0c;常用于缓存、会话存储以及其他需要快速访问的数据场景。本文将介绍Redis的一些常用指令&#xff0c;并通过代码示例进行说明。 一、连接操作指令 1. 连接 Redis 服务器 ./redis-cli -h 127.0.0.1 -p 63792. 认证&a…

【基于Spring Boot+Unipp的古诗词学习小程序【原创】

一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17 前端&#xff1a; 技术&#xff1a;框架Vue.js&#xff1b;UI库&#xff1a;ElementUI&#xff1b; 开发工具&…

【纯前端excel导出】vue2纯前端导出excel,使用xlsx插件,修改样式、合并单元格

官网&#xff1a; 1、xlsx-js-style xlsx-js-style | xlsx-js-style homepage 2、xlsx SheetJS 中文网 一、使用第三方插件 1、安装 npm install xlsx-js-style 2、引入 import xlsx from xlsx-js-style xlsx插件是基础的导出&#xff0c;不可以修改样式&#xff0c;直接xlsx-s…

基于SSM校园拼车系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;司机管理&#xff0c;订单信息管理&#xff0c;接单信息管理&#xff0c;留言信息管理 司机账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;订单信息管理&…

用Spring AI 做智能客服,基于私有知识库和RAG技术

Java智能客服系统运用RAG技术提升答疑精准度 基于Spring ai 的 RAG&#xff08;检索增强生成&#xff09;技术&#xff0c;Java智能客服系统能够利用私有知识库中的信息提供更准确的答疑服务。 它的核心思路是&#xff1a; 首先&#xff0c;将客服QA以Word形式导入到系统中&…

vr体验馆计时收银软件试用版下载 佳易王VR游戏厅计时计费管理系统使用操作教程

一、前言 【软件试用版资源文件下载可以点击文章最后卡片了解】 vr体验馆计时收银软件试用版下载 佳易王VR游戏厅计时计费管理系统使用操作教程 VR体验馆计时计费软件是专门为VR体验馆设计的管理工具&#xff0c;旨在提高服务效率和客户的满意度。软件能够记录客户使用设备的…

Windows 通过私钥远程连接 Linux 服务器【含密钥对制作】

在现代软件开发和系统管理中&#xff0c;远程连接 Linux 服务器是非常常见的任务。尤其在 Windows 系统下&#xff0c;使用 SSH 工具连接 Linux 服务器是开发者们不可或缺的技能之一。为了保证安全性&#xff0c;SSH 密钥对&#xff08;公钥和私钥&#xff09;的使用可以避免传…

STM32CUBEIDE FreeRTOS操作教程(七):queue队列

STM32CUBEIDE FreeRTOS操作教程&#xff08;七&#xff09;&#xff1a;queue队列 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件&#xff0c;不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板为例&#xff…

家用wifi的ip地址固定吗?换wifi就是换ip地址吗

在探讨家用WiFi的IP地址是否固定&#xff0c;以及换WiFi是否就意味着换IP地址这两个问题时&#xff0c;我们首先需要明确几个关键概念&#xff1a;IP地址、家用WiFi网络、以及它们之间的相互作用。 一、家用WiFi的IP地址固定性 家用WiFi环境中的IP地址通常涉及两类&#xff1a…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十四集:制作新的场景以及制作创建切换管理系统

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作新的场景 1.重新翻新各种Sprite2.制作地图前期应该做的事情3.疯狂的制作地图二、制作场景切换管理系统 1.制作场景切换点TransitionPoint2.切换场景时的…

【Linux内核】eBPF基础篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了学习ebpf机制的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于–知乎ebpf专栏文章–进行的&#xff0c;每个知识点的修正和深…