当前位置: 首页 > news >正文

PDF 中图表的解析探究

PDF 中图表的解析探究

  • 0. 引言
  • 1. 开源方案探究

0. 引言

一直以来,对文档中的图片和表格处理都非常有挑战性。这篇文章记录一下最近工作上在这块的探究。图表分为图片和表格,这篇文章主要记录了对表格的探究。还有,我个人主要做日本项目,探究时主要是以日语为主。

1. 开源方案探究

RAGFlow出品的Deepdoc

面向中文,有一个开源方案非常不错,RAGFlow出品的Deepdoc,它的项目中有多个对不同文档的多个文档解析器,其中就有面向pdf的pdf_parser。

测试了一下日文的识别能力,结果并不理想,也解析了一部分代码,代码中有很多处理都是面向中文的。

所以,RAGFlow出品的Deepdoc并不适合日文的处理。

在这里插入图片描述
LangChain出品的PyMuPDFLoader

简单来说,就是读取文档中文字,无法保留文章中表格的信息。

NVIDIA出品的multimodal

没有key,测试不了。简单解析了下架构和代码,还是有很多参考性的。

在这里插入图片描述

unstructured项目

这个项目很有意思,使用partition函数,可以自动解释很多格式的文档,也包括pdf。

解析了部分代码后,发现这个项目有对pdf文章中表格的处理,也可以把pdf中表格数据转换成markdown和html,效果上也达到60-70分左右。

gptpdf项目

这个项目是将pdf文档的每一页都存成一张图片,并且通过画红框,将不同的区域区分出来,然后让多模态模型进行解析,表格时,返回markdown格式。

如果使用gpt-4o或者claude的话,效果很不错,即使token消耗比较大。

继续

使用多模态模型处理这种表格数据,对token的消耗非常大。

在这里插入图片描述

综上所述,现在还没有完美方案,接下来,就尝试自己做一套吧。
自己做时,发现有很多细节需要考虑,

  • 如果表格跨页了怎么处理
  • 跨页后的表格是否有表头
  • 跨页后的表格是否和上一页是同一行
  • 等等

把基础的功能实现后,先试着突破了一下跨页问题,大部分问题已经基本解决。截图如下,


先写到这吧,后续继续探索。

Reference & Thanks:

  • https://python.langchain.com/v0.2/docs/how_to/document_loader_pdf/
  • https://github.com/infiniflow/ragflow/blob/main/deepdoc/README.md
  • https://github.com/Unstructured-IO/unstructured
  • https://github.com/CosmosShadow/gptpdf
  • https://github.com/NVIDIA/GenerativeAIExamples/tree/main/experimental/multimodal_assistant

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数电票真伪查验接口、发票查验接口
  • C语言方法学习 std::vector<double> 转化double[]或double *
  • tkinter的iconbitmap默认图标
  • 彻底开源,免费商用,上海AI实验室把大模型门槛打下来
  • 实现线程同步
  • SpringMVC的架构有什么优势?——表单和数据校验(四)
  • [Vue3 + TS + Vite] 获取网页选中内容的字符串格式或HTML格式
  • android 添加一个水平线
  • 【ceph】ceph-mon重新选举的情况
  • 开发不认可bug策略
  • 在 Linux 上设置 RAID 阵列的全面指南
  • bash: redi-cli: 未找到命令...
  • Centos系统内磁盘分区
  • Mojo有哪些优势和劣势
  • 亚马逊云科技 Amazon Bedrock 构建 AI 应用体验
  • “大数据应用场景”之隔壁老王(连载四)
  • Android组件 - 收藏集 - 掘金
  • CAP理论的例子讲解
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • October CMS - 快速入门 9 Images And Galleries
  • TypeScript迭代器
  • Vue.js 移动端适配之 vw 解决方案
  • yii2中session跨域名的问题
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 诡异!React stopPropagation失灵
  • 聊聊flink的BlobWriter
  • 前端_面试
  • 前端工程化(Gulp、Webpack)-webpack
  • 区块链共识机制优缺点对比都是什么
  • 怎么把视频里的音乐提取出来
  • 自制字幕遮挡器
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 数据可视化之下发图实践
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #图像处理
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (八十八)VFL语言初步 - 实现布局
  • (多级缓存)缓存同步
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (每日一问)基础知识:堆与栈的区别
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)人的集合论——移山之道
  • (转载)深入super,看Python如何解决钻石继承难题
  • .net mvc部分视图
  • .NET 中让 Task 支持带超时的异步等待