大语言模型-PDF文档解析

PDF解析能够提升大语言模型系统的信息处理能力和应用范围,为用户提供更加便捷、高效、个性化的服务体验。本文介绍三种常用的pdf解析方式:Open ParsepdfplumberPyMuPD

一、Open Parse

Open Parse是一个能够直观地识别文档布局并有效地对其进行分块的灵活、易于使用的库。

处理流程

将解析出来的相关元素组合在一起,形成一个连贯的结构,输出表示文档不同部分的节点。如下图所示。
在这里插入图片描述

默认处理流程

from openparse import DocumentParserparser = DocumentParser()

语义辅助的处理流程

将每个节点的文本向量化,然后根据它们的相似性将它们聚类在一起。
目前只支持OpenAI API生成嵌入,但计划很快添加更多选项。

from openparse import processing, DocumentParsersemantic_pipeline = processing.SemanticIngestionPipeline(openai_api_key=OPEN_AI_KEY,model="text-embedding-3-large",min_tokens=64,max_tokens=1024,
)
parser = DocumentParser(processing_pipeline=semantic_pipeline,
)
parsed_content = parser.parse(basic_doc_path)

表格处理流程

目前,我们提供三种从PDF中提取表格的选项:unitable, pymupdftable-transformer
用法如下:

parser = openparse.DocumentParser(table_args={...}
)# ingesting the document
parsed_10k = parser.parse(meta10k_path)
1) Unitable

缺点:计算量大,检测表格位置时会遗漏或错误裁剪。

NameTypeDescriptionDefault
parsing_algorithmLiteral[“unitable”]将使用的解析方式,当前unitableNone
min_table_confidencefloat要提取的表的最小置信度得分。0.75
table_output_formatLiteral[“html”]提取的表格的格式。目前只支持html。None
parser = openparse.DocumentParser(table_args={"parsing_algorithm": "unitable","min_table_confidence": 0.8,}
)
parsed_doc = parser.parse(doc_with_tables_path)
2) Pymupdf

在结构相对简单的密集表上运行良好、也很快。

NameTypeDescriptionDefault
parsing_algorithmLiteral[‘pymupdf’]将使用的解析方式,当前pymupdfNone
min_table_confidencefloat要提取的表的最小置信度得分。0.75
table_output_formatLiteral[‘html|markdown’]提取的表格的格式。目前只支持html和markdown。None
# defining the parser (table_args is a dict)
parser = openparse.DocumentParser(table_args={"parsing_algorithm": "pymupdf","table_output_format": "markdown"}
)# ingesting the document
parsed_10k = parser.parse(meta10k_path)
3) Table Transformer

在具有更复杂结构和大量空白的表上运行良好。

NameTypeDescriptionDefault
parsing_algorithmLiteral[“table-transformers”]将使用的解析方式,当前table-transformersNone
min_table_confidencefloat要提取的表的最小置信度得分。None
min_cell_confidencefloat要提取的单元格的最小置信度分数。None
table_output_formatLiteral[“markdown”, “html”]提取的表格的格式。同时支持markdown和html。None
parser = openparse.DocumentParser(table_args={"parsing_algorithm": "table-transformers","min_table_confidence": 0.8,}
)
parsed_doc2 = parser.parse(doc_with_tables_path)

Visualization

Node类内置了对在jupyter笔记本中将其文本内容呈现为markdown的支持。

import openparsebasic_doc_path = "./sample-docs/mobile-home-manual.pdf"
parser = openparse.DocumentParser()
parsed_basic_doc = parser.parse(basic_doc_path)for node in parsed_basic_doc.nodes:display(node)

还可以将结果直接叠加在原始pdf上显示

pdf = openparse.Pdf(basic_doc_path)
pdf.display_with_bboxes(parsed_basic_doc.nodes,
)

还可以将原始pdf上标记结果并导出到单独的pdf文件中

pdf = openparse.Pdf(basic_doc_path)
pdf.export_with_bboxes(parsed_basic_doc.nodes,output_pdf="./sample-docs/mobile-home-manual-marked-up.pdf"
)

突出特点

🔍 视觉驱动:Open-Parse通过视觉分析提升给LLM的输入质量,超越简单的文本分割。

✍️ Markdown支持:支持基础Markdown解析,包括标题、粗体和斜体。

📊 高精度表格支持:以准确度超越传统工具的方式,将表格提取到干净的Markdown格式。

🛠️ 可扩展性:轻松实现自定义后处理步骤。

💡 直观易用:优秀的编辑器支持,处处自动补全,减少调试时间。

🎯 易于使用:设计上易于上手和学习,减少查阅文档的时间。

二、pdfplumber

三、PyMuPD

Reference

Open Parse Document

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac安装java17(jdk17)

1. 下载jdk17 官网下载:https://www.oracle.com/java/technologies/downloads 2. 直接安装 安装完后目录会存放在下面目录下 /Library/Java/JavaVirtualMachines 111111deMBP JavaVirtualMachines % ls jdk-11.0.227 jdk-17.jdk 3. 如果你已经安装过java&#…

kafka的12个重要概念

kafka的12个重要概念 1、服务器broker1.1、Broker 的主要功能1.2、Kafka Broker 的架构1.3、配置和管理1.4、高可用性和负载均衡1.5、总结 2、主题topic2.1、主要特点 3、事件Event4、生产者producer4.1、主要功能4.2、Producer 的配置选项4.3、Producer 的工作流程4.4、总结 5…

网页,html,Web端实现RTSP/RTMP实时推流视频和播放

随着技术的不断发展,实时流传输已经成为许多应用的重要组成部分。RTSP(Real-Time Streaming Protocol)作为一种实时流媒体传输协议,广泛应用于视频监控、直播等领域。然而,在Web端实现RTSP实时推流视频播放却面临一些挑…

谈下日本IT业现状以及未来的发展

日本IT业现状 市场规模与增长率: 根据最新数据,日本IT行业的市场规模在不断扩大。例如,2022年日本IT行业的总市值达到了约4500亿美元,年复合增长率约为3.5%。这表明该行业在经济中占据重要地位,并持续保持增长态势。就…

我忘记给我的代码备份了。。。。。。

ok啊,历经1个月,这个项目总算是快写完啦!很烧脑,写这个脑细胞都不知道噶了多少,哎~ 虽然目前还有很大一部分可以改进,我觉得以我目前的能力能写成这样已经很不错了,还是学艺不精啊~ 实际上的话…

分享一个基于python新闻订阅与分享平台flask新闻发布系统(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

SpringBoot集成kafka开发-消息消费的分区策略(消费者如何判断从哪个分区中消费消息的?)

这里写目录标题 1、kafak消息者消费消息的4种分区策略2、kafka默认的消费分区策略1-RangeAssignor(均匀分配、默认分配策略)2.1、代码验证RangeAssignor的消息分区策略2.1.1、消费者2.1.2、生产者2.1.3、kafak配置类2.1.4、对象实体类2.1.5、项目配置文件…

卸载通过pip安装的所有Python包的详细指南

卸载所有通过pip安装的Python包的方法总结(Windows系统) 方法 1: 使用 pip freeze 和 requirements.txt 步骤: 导出依赖到requirements.txt文件: pip freeze > requirements.txt这个命令会将当前环境中所有已安装的Python包及其版本号输出到requirem…

Django | 从中间件的角度来认识Django发送邮件功能

文章目录 概要中间件中间件 ---> 钩子实现中间件demo 邮件发送过程Django如何做邮件服务配置流程 中间件结合邮件服务实现告警 概要 摘要 业务告警 邮件验证 密码找回 邮件告警 中间件 中间件 —> ‘钩子’ 例如 访问路由 的次数【请求】 中间件类须实现下列五个方法…

ubuntu系统在线安装下载firefox-esr流览器

1、在线firefox流览器 Firefox ESR(Extended Support Release)是火狐浏览器的长期支持版本,针对同一个主版本提供一年左右的安全性与稳定性支持。如果您因为火狐浏览器改版而导致有原本能用的功能变得不能使用的话(例如Firefox 64.0把RSS订阅的功能拿掉了)&#xf…

【持续更新】1DM+ 17.1 Pro 号称安卓上的 idm,下载超快!最新免费高级修改版

这款安卓平台上的下载管理器,号称安卓上的 idm,堪称最快。 其下载速度比普通下载快高达 500%,有以下特点: • 无广告干扰 • 提供深色与浅色主题选择 • 支持直接下载至SD卡(Android 4.4版本除外) • 具备…

文献阅读:Pathway Ensemble Tool癌症通路和治疗法的无偏发现

介绍 正确地识别生物途径的扰动是揭示基本疾病机制和发展急需的治疗策略的关键步骤。然而,目前的工具是否最优化用于无偏发现相关途径仍然不清楚。在这里,我们创建了“基准测试”(Benchmark)来严格评估现有工具,并发现…

5步掌握Python Django+Vue二手房项目,实现房价预测与知识图谱系统

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

【SpringBoot】电脑商城-07-上传头像

基于SpringMVC的文件上传 1 MultipartFile接口 MultipartFile接口常用的的API见下表: 方法功能描述String getOriginalFilename()获取上传文件的原始文件名,即该文件在客户端中的文件名boolean isEmpty()判断上传的文件是否为空,当没有选择…

1-Wired一线式总线

常见的几种通信接口 一线式总线 定义 一线式:说明CPU和外设之间数据通信只需一根信号线,此信号线必然是数据线,并且数据线连接了一个上拉电阻,默认为高电平串行:说明CPU和外设的数据通信一个时钟周期传输一个bit位 问:没有时钟…

GoWeb 设置别名和多环境配置

别名 vite.config.ts中添加代码如下即可 //设置别名resolve: {alias: {"": path.resolve(process.cwd(),"src"),//用替代src}}随后即可使用 配置多环境 vite.config.ts中添加代码如下 envDir: ./viteenv,//相对路径随后在项目根目录创建对应的viteenv…

WEB渗透Win提权篇-RDPFirewall

渗透测试60w字全套md笔记:夸克网盘分享 爆破RDP Hydra爆破RDP >hydra -l admin -P /root/Desktop/passwords -S 192.168.0.0 rdpNlbrute MSF开启 >run post/windows/manage/enable_rdp多用户登陆 Mimikatz设置允许多用户登录 >privilege::debug >t…

游戏开发设计模式之单例模式

单例模式(Singleton Pattern)是一种常见的设计模式,其主要目的是确保一个类在整个程序的生命周期中只有一个实例,并提供一个全局访问点来获取这个实例。在游戏开发中,单例模式具有广泛的应用和重要的作用。 单例模式的…

Vue3-win7搭建vue3环境

Vue3-win7搭建vue3环境 官方要求的信息是是node.js 18.03以上。而我的环境:win7 x64, vscode 1.34。 参考网址: 0、基本的安装 https://blog.csdn.net/m0_49139268/article/details/126159171 a、这里有各种安装包的下载路径(镜…

FedoSSL

题目:《Towards Unbiased Training in Federated Open-world Semi-supervised》 来源:ICML2023 注意比较与 ORCA 的区别 Abstract 联邦半监督学习(FedSSL)已经成为一种新范式,允许分布式客户端在稀缺的标记数据和丰富…