跳转到主要内容

LLM/RAG工具的PyMuPDF

项目描述

在LLM / RAG应用程序中将PyMuPDF用作数据提供者

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

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

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

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

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

安装

$ pip install -U pdf4llm

此命令将自动安装所需的PyMuPDF

然后在您的脚本中执行

import pdf4llm

md_text = pdf4llm.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开始页面数字列表。

自v0.0.8版本以来的新功能

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

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

    1. 指定pdf4llm.to_markdown("input.pdf", write_images=True)。默认为False
    2. 页面上的每个图像或矢量图形都将被提取并存储为名为"input.pdf-pno-index.png"的PNG图像,在"input.pdf"文件夹中。其中pno是0开始的页面号,index是某个序列号。
    3. 图像文件将具有与页面上的值相等的宽度和高度。
    4. 图像或图形中包含的任何文本将不会被提取,而是作为图像部分显示。
  • 支持 页面块:不是返回整个文档的一个大字符串,而是生成一个字典列表:每个页面一个。指定 data = pdf4llm.to_markdown("input.pdf", page_chunks=True)。然后,例如第一个元素,data[0] 将包含第一个页面的字典,其中包含文本和一些元数据。

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

    import pdf4llm
    
    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 相关导入。所需的关联包安装必须独立完成,在 pdf4llm 安装过程中不会进行检查。

项目详情


下载文件

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

源分布

pdf4llm-0.0.9.tar.gz (3.1 kB 查看哈希值)

上传时间

构建分布

pdf4llm-0.0.9-py3-none-any.whl (3.0 kB 查看哈希值)

上传时间 Python 3

由以下支持

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