首页 > 其他分享 >大模型时代的PDF解析工具

大模型时代的PDF解析工具

时间:2024-03-24 11:45:59浏览次数:29  
标签:中文 模型 2022 PDF 工具 解析

去年(2023年)是大模型爆发元年。但是大模型具有两个缺点:缺失私有领域知识和幻觉。缺失私有领域知识是指大模型训练时并没有企业私有数据/知识,所以无法正确回答相关问题。并且在这种情况下,大模型会一本正经地胡说八道(即幻觉),给出错误的回答。
那么如何解决这两个缺点?目前主要有两种方法,微调和RAG。微调是指使用企业私有数据/知识基于现有大模型训练出一个新的模型,然后我们使用这个新的模型来回答用户问题。RAG是检索增强生成(Retrieval-Augmented Generation)的缩写,是指在用户提问时系统后台根据用户问题检索相关数据/知识,然后将所检索到的相关数据/知识加上用户问题一起交给大模型处理。
我们可以看到,无论是哪种方法,将企业私有数据/知识传给大模型都是位于整个流程的上游,这个阶段的任何失误都会直接影响到整个流程的下游,最终影响整个问答的准确率。
为了让读者更形象地了解这个环节,本文将以一份上市公司年报PDF为例进行讲解。
本文选择了恒生电子(600570)2022年的年度报告(修订版)做为示例,大家可以在巨潮资讯搜索下载这份PDF文件。

使用传统PDF解析工具解析PDF

首先我们使用传统的PDF解析工具解析PDF。
传统的PDF解析库相当地多,我们就不一一罗列和分析了。这里我们仅以目前最流行的大模型框架LangChain所支持的其中一个解析库PyPDF为例。
我们使用LangChain并选择PyPDFLoader来读取文件“恒生电子:恒生电子股份有限公司2022年年度报告(修订版).PDF”

from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("example_data/恒生电子:恒生电子股份有限公司2022年年度报告(修订版).PDF")
pages = loader.load_and_split()

存在的问题

我们发现通过PyPDFLoader读取的结果存在很多问题,这里仅以PDF第6页和第7页的“七、近三年主要会计数据和财务指标”为例:

通过PyPDFLoader读取的结果为(为节省篇幅,这里去除了所有空白换行符):

七、 近三年主要会计数据和财务指标
(一) 主要会计数据
单位:元 币种:人民币
主要会计数据 2022年 2021年
本期比上年 同期增减
(%)
2020年
营业收入 6,502,387,143.49 5,496,578,624.88 18.30 4,172,645,156.56
归属于上市公司股东的 净利润 1,091,088,379.58 1,463,538,930.14 -25.45 1,321,735,522.48
归属于上市公司股东的 扣除非经常性损益的净 利润
1,144,419,161.05 946,569,672.55 20.90 733,590,924.61
经营活动产生的现金流 1,138,192,779.96 956,789,306.14 18.96 1,397,902,270.41
2022 年年度报告
**7** /
**211** 量净额
2022年末 2021年末
本期末比上 年同期末增
减(%)
2020年末
归属于上市公司股东的 净资产 6,811,761,050.50 5,695,031,051.05 19.61 4,554,029,323.59
总资产 13,004,578,298.67 12,079,908,312.76 7.65 9,971,144,688.34

我们可以发现以下问题:

  1. PDF换页导致表格行头被断开:第四行的行头“经营活动产生的现金流量净额”被断成两截,生生加入了“1,138,192,779.96 956,789,306.14 18.96 1,397,902,270.41 2022 年年度报告 **7** /**211** ”一长串内容。我们可以看到,这一段内容中,干扰信息比正常信息还要多一两倍。遇到这种问题,再强大的大模型都无法正确处理!
  2. 丢失表格列头信息:表格最后几行数据完全无法与表格列头建立关系。从而导致大模型无法识别这些数据所代表的意义。
    除了PyPDFLoader之外,其它传统的PDF解析工具的处理结果也差不多。
    计算机科学与信息通信技术领域有一句习语:垃圾进,垃圾出 ( Garbage in, garbage out ,缩写GIGO )。我们可以看到,在这个示例中,因为传统PDF解析工具的局限性,生生地把精华处理成垃圾喂给了大模型,大模型自然而然地只能给出垃圾给用户了。那么,我们如何解决这些问题呢?

使用大模型时代的PDF解析工具

既然传统的PDF解析工具跟不上时代的发展,那么我们就使用大模型时代的PDF解析工具。
截至目前为止,大模型时代的PDF解析工具有两类:

  1. 原生支持英文,对中文支持尚待改进的:Marker、nougat(Facebook)、Layoutlmv3(Microsoft)、DocLayNet(IBM)、ByT5(Google)
  2. 原生支持中文,并以中文大模型为试验对象的:Vary、PDF4AI.cn
    这里以Marker(https://github.com/VikParuchuri/marker)为代表简单描述一下第一类工具。Marker的原理是将PDF解析成Markdown喂给大模型。因为Markdown可以保留表格的结构信息,所以能够解决前面示例中的问题。
    然而很遗憾的是,Marker目前尚未支持中文,所以无法用于本文中的示例。不过大模型时代技术发展迅速(LangChain几乎每天更新一个版本),Marker才诞生三个月就已经更新多个版本,相信很快就会支持中文了。
    至于nougat、Layoutlmv3、DocLayNet、ByT5都是类似于Marker的工具,因为篇幅原因,这里就不过多描述了。
    这些工具有些明确表示目前不支持中文,有些虽然支持中文,但是实际效果可能不能满足读者们的预期。
    既然以上工具对中文支持不友好,那么有没有支持中文的类似工具呢?旷视推出了Vary。
    Vary是以中文大模型(阿里巴巴的通义千问Qwen)为试验对象的,并且优先和原生支持中文,从Vary的官网可以看到,Vary的Demo都是先展示中文再展示英文的。
    Vary的官网是https://varybase.github.io/ , 比较奇怪的是,虽然各大自媒体号说这是旷视推出的模型,然而这个官网并没有表现出这一点。同时Vary推出没多久,目前改进空间还很大,笔者将持续关注。
    另一个工具是PDF4AI.cn(https://www.pdf4ai.cn)。PDF4AI.cn的原理与Marker、Vary是一样的,都是将PDF解析成Markdown喂给大模型。
    PDF4AI.cn分为免费版和专业版。截止目前为止,PDF4AI.cn的免费版未能解决以上示例中的问题。
    PDF4AI.cn专业版可以解决以上示例中的问题。以下是PDF4AI.cn专业版的处理结果(为节省篇幅,这里去除了所有空白换行符):
七、 近三年主要会计数据和财务指标
(一) 主要会计数据
单位:元 币种:人民币  
| 主要会计数据 | 2022年 | 2021年 | 本期比上年同期增减 (%) | 2020年 |
| ------ | ----- | ----- | -------------- | ----- |
| 营业收入 | 6,502,387,143.49 | 5,496,578,624.88 | 18.30 | 4,172,645,156.56 |
| 归属于上市公司股东的净利润 | 1,091,088,379.58 | 1,463,538,930.14 | -25.45 | 1,321,735,522.48 |
| 归属于上市公司股东的扣除非经常性损益的净利润 | 1,144,419,161.05 | 946,569,672.55 | 20.90 | 733,590,924.61 |
| 经营活动产生的现金流量净额 | 1,138,192,779.96 | 956,789,306.14 | 18.96 | 1,397,902,270.41 |
| 归属于上市公司股东的净资产 | 6,811,761,050.50 | 5,695,031,051.05  | 19.61 | 4,554,029,323.59 |
| 总资产 | 13,004,578,298.67 | 12,079,908,312.76  | 7.65  | 9,971,144,688.34 |

熟悉Markdown的朋友们可以看出,以上处理结果将PDF里面的表格转换为Markdown里面的表格。
为了让不熟悉Markdown的朋友们有一个直观的认识,笔者使用Markdown编辑工具将以上结果可视化一下:

现在我们可以清晰地看到,表格信息被完整保留,从而解决了以上示例中的问题。

总结

与传统的PDF解析工具相比,大模型时代的PDF解析工具将PDF解析成Markdown,从而保留一些结构化的信息(例如表格和图片),再喂给大模型,从而避免把精华处理成垃圾,避免垃圾进,垃圾出。
去年(2023年)大模型才爆发,因此这些大模型时代的PDF解析工具都是新生产物,有很多地方尚待改进,不过它们也更新迅速,感兴趣的读者可以持续关注。

标签:中文,模型,2022,PDF,工具,解析
From: https://www.cnblogs.com/adalovelacer/p/18092208/pdf-tools-for-large-language-model

相关文章

  • NVIDIA 2024 GTC大会提出的数字孪生技术 —— 工厂3D仿真与AI大模型结合
    地址:https://www.youtube.com/watch?v=JQdyzQdMRS0FusingReal-TimeAIWithDigitalTwins......
  • C语言UNIX域套接字CS模型
    实验目标:1实现基于流的unix域套接字通信cs模型2实现基于数据报的unix域套接字通信cs模型3可以观察到CS两端的完整启动退出流程,为了实现这一目标仅进行一次通信实验心得:1使用unlink避免地址冲突清理资源2 传统udp在首次sendto时系统临时分配端口,在套接字关闭|程......
  • 计算机组成原理 练习卷 第2章第1节数据与文字的表示方法(解析版)(正确答案版)
    一、(共18题,共90分)1.若一个数的编码是10000111,它的真值为+7,则该编码是       。(单选题本题5分)A原码B反码C补码D移码正确答案:D解:如果为原码,真值为-7,同理B的反码和C的补码都为负数,只有移码才为正数。2.计算机内常采用______作为字符编码。(单选题本题......
  • 《大模型面试宝典》(2024版) 正式发布!
    2022年11月底,OpenAI正式推出ChatGPT,不到两个月的时间,月活用户就突破1亿,成为史上增长最快的消费者应用。目前国内已发布的大模型超过200个,大模型的出现彻底改变了我们的生活和学习方式。现在只要你想从事AI相关的岗位,无论是计算机视觉(CV)、自然语言处理(NLP)、搜广推、......
  • 深入解析GPU:图形处理器的技术与应用
    在计算机科学领域中,GPU(GraphicsProcessingUnit,图形处理器)已经不再局限于仅仅处理图形相关的任务。从最初的专注于渲染图像和处理图形效果,到如今在人工智能、科学计算和加速深度学习等领域中扮演着关键角色,GPU已经成为现代计算的重要组成部分。本文将深入探讨GPU的技术原理、发展......
  • PointNet++论文复现(一)【PontNet网络模型代码详解 - 分类部分】
    PontNet网络模型代码详解-分类部分专栏持续更新中!关注博主查看后续部分!分类模型的训练:##e.g.,pointnet2_ssgwithoutnormalfeaturespythontrain_classification.py--modelpointnet2_cls_ssg--log_dirpointnet2_cls_ssgpythontest_classification.py--log_di......
  • pdf417lib库封装和使用
    pdf417lib库封装和使用pdf417lib下载链接https://master.dl.sourceforge.net/project/pdf417lib/pdf417lib/0.91/pdf417lib-c-0.91.zip?viasf=1CMake文件yh@ubuntu:/Test/pdf417lib$tree.├──build├──CMakeLists.txt├──include│├──pdf417.h│├......
  • AntSK 0.2.3 版本更新:轻松集成 AI 本地离线模型
        大家好,今天和大家分享 AntSK知识库/智能体项目的最新进展。       AntSK是一个基于 .Net8、Blazor 及 SemanticKernel 开发的AI项目,旨在为开发者提供一个强大的AI知识库与智能体平台。最新版本的项目可以在GitHub上找到:https://github.com/A......
  • foxy与galactic解析rosbag的不同之处
    前言foxy和galactic版本在rosbag2_storage这个包的调整有点大(头文件及接口的命名空间),下面的代码仅供参考使用foxy#include"db3_reader.h"#include<pcl/common/transforms.h>#include<pcl/point_types.h>#include<pcl_conversions/pcl_conversions.h>#include<rosba......
  • 【复现】【免费】基于多时间尺度滚动优化的多能源微网双层调度模型
    目录主要内容     部分代码     结果一览   1.原文结果2.程序运行结果下载链接主要内容   该模型参考《CollaborativeAutonomousOptimizationofInterconnectedMulti-EnergySystemswithTwo-StageTransactiveControlFramework》,主要解决的......