跳转到主要内容

PyMuPDF LLM/RAG 工具

项目描述

在LLM / RAG应用中使用PyMuPDF作为数据源

此软件包使用PyMuPDF将PDF页面转换为Markdown格式的文本。

检测标准文本和表格,按照正确的阅读顺序引入,然后一起转换为GitHub兼容的Markdown文本。

通过字体大小识别标题行,并相应地使用一个或多个'#'标签进行前缀。

检测并格式化粗体、斜体、等宽文本和代码块。类似的规则适用于有序和无序列表。

默认情况下,处理所有文档页面。如果需要,可以通过提供基于0的页面数字列表来指定页面子集。

安装

$ pip install -U pymupdf4llm

此命令将在需要时自动安装PyMuPDF

然后在您的脚本中执行

import pymupdf4llm

md_text = pymupdf4llm.to_markdown("input.pdf")

# now work with the markdown text, e.g. store as a UTF8-encoded file
import pathlib
pathlib.Path("output.md").write_bytes(md_text.encode())

如上所示的文件名字符串,也可以提供一个PyMuPDF Document。默认情况下,将处理PDF中的所有页面。如果需要,可以使用参数pages=[...]提供要考虑的基于0的页面数字列表。

功能概述

  • 支持具有多个文本列的页面。

  • 支持图像和矢量图形提取。

    1. 指定pymupdf4llm.to_markdown("input.pdf", write_images=True)。默认为False
    2. 页面上的每个图像或矢量图形都将被提取并存储在您选择的文件夹中,命名为"input.pdf-pno-index.extension"。图像extension可以选为表示PyMuPDF支持的图像格式(例如 "png" 或 "jpg"),pno是基于0的页面编号,index是某个序列号。
    3. 图像文件的宽度和高度将与页面上的值相等。可以通过参数 dpi(默认:dpi=150)选择所需的分辨率。
    4. 图像或图形中包含的任何文本将被提取,并且也将作为生成图像的一部分可见。此行为可以通过 force_text=False(文本仅作为图像的一部分出现)来更改。
  • 支持页面块:而不是为整个文档返回一个长字符串,可以生成一个字典列表:一个用于每一页。指定 data = pymupdf4llm.to_markdown("input.pdf", page_chunks=True)。然后,例如第一个项目,data[0] 将包含第一页的文本和一些元数据。

  • 作为直接支持 LLM / RAG 消费者的第一个示例,此版本可以输出 LlamaIndex 文档

    import pymupdf4llm
    
    md_read = LlamaMarkdownReader()
    data = md_read.load_data("input.pdf")
    
    # The result 'data' is of type List[LlamaIndexDocument]
    # Every list item contains metadata and the markdown text of 1 page.
    
    • LlamaIndex 文档基本上对应于 Python 字典,其中页面的 markdown 文本是字典值之一。例如,第一页的文本是 data[0].to_dict().["text"] 的值。
    • 有关详细信息,请参阅 LlamaIndex 文档。
    • 在创建 LlamaMarkdownReader 时,将执行所有必要的 LlamaIndex 相关导入。必须独立安装所需的关联包,并在安装 pymupdf4llm 时不会进行检查。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分布

pymupdf4llm-0.0.17.tar.gz (25.2 kB 查看哈希)

上传时间

构建分布

pymupdf4llm-0.0.17-py3-none-any.whl (26.2 kB 查看哈希)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面