`PyMuPDF4LLM`:提取PDF数据的神器

2024/11/16 3:03:45

本文主要是介绍`PyMuPDF4LLM`:提取PDF数据的神器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

这个工具包使用PyMuPDF,将PDF页面转换成Markdown格式的文本。它会检测标准文本和表格,并按正确的阅读顺序整理,最后一起转换成与GitHub兼容的Markdown格式文本。

  • 标题行通过字体大小来标识,并适当使用一个或多个‘#’标签进行前缀。
  • 加粗、斜体、等宽字体的文本和代码块会被自动检测并进行相应的格式化。有序和无序列表也会遵循类似的规则。

默认情况下,所有文档页面都会被处理。如果需要的话,可以通过指定一组从0开始的页面编号来指定特定的页面。

功能简介:
  • 支持页面上的多个文本列
  • 支持从页面中提取图像和矢量图形的内容:
  1. 指定 pymupdf4llm.to_markdown("input.pdf", write_images=True)。默认情况下,write_imagesFalse
  2. 每张图片或矢量图形将被提取并存储为名为 "input.pdf-pno-index.扩展名" 的图片文件,存储在您选择的文件夹中。扩展名 可以是 PyMuPDF 支持的图片格式(例如 "png""jpg"),其中 pno 是 0 基的页码编号,index 是序列号。
  3. 图片文件的宽度和高度将与页面上的值相等。您可以通过参数 dpi 来选择所需的分辨率,默认为 150
  4. 图片或图形中的任何文本将被提取,并作为生成图片的一部分可见。您可以通过 force_text=False 更改此行为,使文本仅作为图片的一部分出现。

支持分页处理:不再返回整个文档的大字符串,而是生成一个字典列表,每个字典对应一个页面。指定 data = pymupdf4llm.to_markdown("input.pdf", page_chunks=True)。例如,data[0] 将包含第一个页面的字典,其中包含该页面的文本内容和部分元数据。

安装 PyMuPDF4LLM 库
!pip install pymupdf4llm  # 安装这个用于机器学习的PyMuPDF库

如果需要,此命令会自动安装PyMuPDF。

基础 Markdown (标记语言) 提取
# 导入 pymupdf4llm 模块,用于将 PDF 转换为 Markdown
import pymupdf4llm  

# 把 "foo.pdf" 转换成 Markdown 格式,并保存在 md_text 变量里
md_text = pymupdf4llm.to_markdown("foo.pdf")

保存 Markdown 内容
    # 现在操作 Markdown 文本,比如保存为 UTF8 编码的文件  
    import pathlib  
    pathlib.Path("output.md").write_bytes(md_text.encode())  
    print("Markdown 已保存到 output.md")

只提取特定的页面
md_text_pages = pymupdf4llm.to_markdown("patient_data_analysis.pdf", pages=[0])  
print(md_text_pages)

图片提取
    md_text_images = pymupdf4llm.to_markdown(  
        doc="patient_data_analysis.pdf",  
        page_chunks=True,  
        write_images=True,  
        image_path="图片路径",  
        image_format="图片格式",  
        dpi="DPI"  
    )

数据分块与元数据提取
md_text_chunks = pymupdf4llm.to_markdown(  
    doc="patient_data_analysis.pdf",  
    pages=[0,1],  
    page_chunks=True  
)  
打印md_text_chunks的第二个元素。  
print(md_text_chunks[1])

表格抽取
    md_text_tables = pymupdf4llm.to_markdown(  
        doc="foo.pdf"  # 含有表格的 PDF 文件  
    )  
    print(md_text_tables)

逐字提取
    md_text_words = pymupdf4llm.to_markdown(  
        doc="patient_data_analysis.pdf",  
        pages=[0, 1],  
        page_chunks=True,  # 分页块
        write_images=True,  
        image_path="images",  
        image_format="png",  
        dpi=300,  # 设置图片的分辨率
        extract_words=True  # 将文档转换为Markdown格式,同时提取图片和单词
    )  
    # 打印第一个页面的前20个单词:
    print(md_text_words[0]['words'][:20])

将数据提取为LlamaIndex文档

在LLM工作中,将PDF转换为兼容LlamaIndex的文档格式是一项重要任务。PyMuPDF4LLM简化了这一转换过程。

    import pymupdf4llm  

    llama_reader = pymupdf4llm.LlamaMarkdownReader()  
    llama_docs = llama_reader.load_data("foo.pdf")  
    print(f"LlamaIndex 文档数: {len(llama_docs)}")  
    print(f"第一个文档的内容如下: {llama_docs[0].text[:500]}")

对于需要快速提取Markdown文本并且希望格式良好的情况,pymupdf4llm似乎是一个非常好的选择。

解析 PDF 的其他选项可以使用 marker-pdf、PyPDF2、PyMuPDF、pdfminer.six、Camelot、Tabula、Unstructured 和 Llama Parse 检查,这些工具可用于增强检索生成 (RAG) 系统。我将对上述所有工具的输出进行比较分析。

如果觉得有帮助,可以留言或鼓掌哦👏❤️🙏

参考资料:
参考资料:
  1. https://pypi.org/project/pymupdf4llm/ (点击这里)
  2. 访问这篇文章,了解有关pymupdf4llm的介绍


这篇关于`PyMuPDF4LLM`:提取PDF数据的神器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程