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