继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

使用PyMuPDF4LLM进行PDF提取:在大语言模型和RAG环境中的实用指南

阿波罗的战车
关注TA
已关注
手记 268
粉丝 19
获赞 87

从PDF中提取和处理文本用于机器学习、LLM或RAG设置可能相当有挑战性。PyMuPDF4LLM 提供了一种将PDF内容转换为Markdown等可用格式的有效途径,支持与如LlamaIndex等库兼容的工作流程。本指南将指导您如何使用PyMuPDF4LLM,从基础的Markdown转换到高级操作,如分段、图像提取和元数据处理。

前提条件

要开始,请确保安装了 PyMuPDF4LLM 和其他必要的库如 llama_index,以便与 LLM 工作流程兼容。

    !pip install pymupdf4llm

主要特点

所有的超参数可以在API文档中找到。虽然我们将详细介绍其中的几个参数,,PyMuPDF4LLM的主要特点可以概括为:

  • 文本提取:提取Markdown格式的内容。
  • 分块处理:支持在提取的内容中添加元数据、表格和图片链接。
  • 图片提取:提供定义图片大小、分辨率和格式的选项。
  • 图片嵌入:图片直接嵌入Markdown输出中,无需额外处理。
  • 单词提取:允许从PDF中精确提取单词并保留其格式。
基本的 Markdown 基础

首先,将PDF文件转换为Markdown格式。这种方法使文本处理更加简单,特别是在LLM和RAG系统中,使得文本的格式化和预处理更加容易。

    import pymupdf4llm  

    # 这里我们导入一个名为pymupdf4llm的库  
    md_text = pymupdf4llm.to_markdown("/content/Dhanush_kumar_Resume.pdf")  
    # 接下来,我们将PDF文件转换为Markdown格式的文本  
    md_text

解释:这里,我们导入了 pymupdf4llm 库,并对样本 PDF(Dhanush_kumar_Resume.pdf)调用了 to_markdown 方法。变量 md_text 存储了提取的 Markdown 文本,以便展示或进一步使用。

查看可用的方法

在加载库之后,查看 pymupdf4llm 中所有可用的方法有助于了解其功能特性。

    dir(pymupdf4llm) # 查看pymupdf4llm模块中的内容

将Markdown保存为文件

将提取的 Markdown 保存到文件中,可能用于后续分析或集成到其他工作流程中。

    import pathlib  

    # 将md_text写入名为'resume.md'的文件中
    pathlib.Path("resume.md").write_text(md_text)
  • 解释:这里我们使用 pathlibmd_text 保存为一个名为 resume.md 的文件。这个 Markdown 文件可以进一步处理或分享。
抽取特定的页面

如果你只需要特定页面的内容,可以使用 PyMuPDF4LLM 通过指定页码选择性地提取内容。

    md_text_pages = pymupdf4llm.to_markdown("/content/Dhanush_kumar_Resume.pdf", pages=[0])  # 将PDF文件转换为Markdown格式
    打印md_text_pages的内容
  • 解释:这一句只提取了PDF的第一页。通过修改pages参数,可以从文档中的任何一页或多页中提取,这样更加灵活。
集成LlamaIndex注:LlamaIndex是一个特定名词,可能在中文语境中不广为人知,请参考文末注释获取更多信息。

与LlamaIndex集成

PyMuPDF4LLM 也支持 LlamaIndex 兼容的数据提取功能,使其成为需要文档索引以进行基于 LLM 处理项目的理想选择。

    !pip install llama_index  

    llama_reader = pymupdf4llm.LlamaMarkdownReader()  
    # 查看llama_reader对象的方法和属性
    dir(llama_reader)  

    llama_docs = llama_reader.load_data("/content/Dhanush_kumar_Resume.pdf")  
    print(f"LlamaIndex 兼容的数据长度:{len(llama_docs)}")  
    # 输出llama_docs中第一个文档的前100个字符
    {llama_docs[0].text[:100]}

解释:

  • 安装了llama_index之后,我们使用来自PyMuPDF4LLM的LlamaMarkdownReader
  • load_data方法将PDF转换为可以直接与LlamaIndex工具兼容的格式,该工具常用于构建LLM数据流。
  • llama_docs保存了处理过的数据,每份文档都可以检查其质量和兼容性。
取图

PDF文档中常常包含图像和文字。通过使用PyMuPDF4LLM,我们可以把这些图像提取出来,并保存到指定位置,格式也是指定好的。

    md_text_images = pymupdf4llm.to_markdown(  
        "/content/Dhanush_kumar_Resume.pdf",   
        page_chunks=True,   
        write_images=True,  
        image_path="/content/images",  
        image_format="png"  
    )

解释

  • write_images=True:启用从PDF中提取图片。
  • image_pathimage_format 指定图像将保存的位置以及格式(本例中为 png)。
  • 此代码会同时捕获图像,尤其对于包含多媒体的内容非常有用。
使用元数据来分块数据

对于较大的PDF或复杂的文档,将内容分成小块处理可以使处理更高效。此外,PyMuPDF4LLM还允许处理每个分段的元数据。

以下代码将 PDF 文件转换为 Markdown 格式并输出第一个片段的内容:

    md_text_chunks = pymupdf4llm.to_markdown(  
        "/content/Dhanush_kumar_Resume.pdf",   # 将 PDF 转换为 Markdown 格式
        page_chunks=True  # 将每页视为一个片段
    )  
    md_text_chunks[0]

解释:通过将 page_chunks=True 设置,文档会被拆分成多个部分,每个部分会单独处理。这在RAG场景下特别有用,因为分段处理能提升检索效果。

带有元数据的词级提取

在某些情况下,逐词提取文本是必不可少的,尤其是在需要进行详细分析时,例如情感分析或实体识别任务。

    # 将PDF文件转换为Markdown格式并提取前100个单词
    md_text_words = pymupdf4llm.to_markdown(  
        "/content/Dhanush_kumar_Resume.pdf",   
        page_chunks=True,  # 将页面分割成块
        write_images=True,  # 写入图片
        image_path="images",  
        image_format="png",  
        extract_words=True  # 提取文档中的单词
    )  
    md_text_words[0]["words"][:100]

解释

  • extract_words=True 指定以词为单位提取文本,添加诸如单词位置和页码等元数据。
  • 这使得对内容的控制更精细,并支持高级文本分析流程。
提取表格内容

如果你的 PDF 里有表格,也可以把这些表格提取出来,这可以简化在报告、研究论文等含有大量表格的文档中查找数据的过程。

md_text_tables = pymupdf4llm.to_markdown(  
    "/content/Dhanush_kumar_Resume.pdf",   
    page_chunks=True,  
    write_images=True,  
    image_path="images",  
    image_format="png", dpi=200  
)
  • 解释:PyMuPDF4LLM 通过转换为 Markdown 兼容格式来提取表格。这在需要结构化数据的场景中很有价值,例如数据科学或报告生成。

PyMuPDF4LLM 是一个强大的工具,可以从各种格式的 PDF 文件中提取内容信息,使 LLM 和 RAG 环境中的文档处理快速高效。从文本和图像的提取到词汇分析和表格转换,PyMuPDF4LLM 提供了一套灵活的工具,适用于多种 AI 和数据科学应用场景。本指南全面介绍了 PyMuPDF4LLM 的各项功能,为创建结构良好、可以直接使用的数据管道奠定了基础。

无论你是否在使用LlamaIndex或其他RAG系统,PyMuPDF4LLM都是你工具箱中不可或缺的工具,用来进行高质量的数据提取和准备。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP