超强大的PDF数据提取库PyMuPDF4LLM

PyMuPDF4LLM,顾名思义,它是一个为pymupdf添加了LLM的输出功能的库。

PyMuPDF4LLM的特点:

多功能 Markdown 提取

PyMuPDF4LLM支持广泛的任务,从基本的文本提取到适合微调LLM的 Markdown格式的数据采集。

灵活运用

除了文本提取之外,该工具还可以逐页检索数据,将其保存为RAG任务所需的格式,甚至将数据直接传递给 LlamaIndex 等框架。

丰富的提取功能

除了文本之外,还可以满足图像提取、分词、表格提取等细节需求。这些功能在多种情况下都很有用,包括知识库创建和情感分析。

安装方法

首先,让我们安装 PyMuPDF4LLM。

pip install pymupdf4llm

用例 1:基本 Markdown 提取

让我们获取 Markdown 格式的 PDF 内容。

import pymupdf4llm
md_text = pymupdf4llm.to_markdown("document.pdf")

以 Markdown 格式获取可以保留标题和列表等结构,使其成为 LLM 训练数据的理想选择。

用例 2:仅提取特定页面

仅提取您需要的页面也很容易。

import pymupdf4llm
# 只抽取指定的第8页,第9页
md_text = pymupdf4llm.to_markdown("document.pdf", pages=[8, 9])

它非常高效,因为您可以从大型PDF中仅提取所需的部分。

用例 3:将 Markdown 保存到文件

让我们将提取的 Markdown 保存到文件中。

import pymupdf4llm
import pathlib
md_text = pymupdf4llm.to_markdown("document.pdf")
pathlib.Path("output.md").write_bytes(md_text.encode())

用例 4:提取为 LlamaIndex 的文档

您还可以以与 LlamaIndex兼容的格式检索数据。

import pymupdf4llm
llama_reader = pymupdf4llm.LlamaMarkdownReader()
llama_docs = llama_reader.load_data("document.pdf")

用例 5:提取图像

提取图像也很容易。

md_text_images = pymupdf4llm.to_markdown(
    doc="document.pdf",
    pages=[1, 11],
    page_chunks=True,
    write_images=True,
    image_path="images",
    image_format="png",
    dpi=300
)

用例 6:对数据进行分块并使用元数据进行提取

还可以对数据进行分块并使用元数据检索它。

md_text_chunks = pymupdf4llm.to_markdown(
    doc="document.pdf",
    pages=[0, 1, 2],
    page_chunks=True
)

用例 7:详细的逐字提取

它还支持您想要以字为单位获取数据的情况。

md_text_words = pymupdf4llm.to_markdown(
    doc="document.pdf",
    pages=[1, 2],
    page_chunks=True,
    write_images=True,
    image_path="images",
    image_format="png",
    dpi=300,
    extract_words=True
)
print(md_text_words[0]['words'][:5]) 

用法示例8:整齐地提取表格

import pymupdf4llm
md_text_tables = pymupdf4llm.to_markdown(
    doc="document.pdf",
    pages=[12]  # 存在表格的页面
)
print(md_text_tables)

如果您正在构建RAG系统、微调您的LLM,或者只是在寻找出色的 PDF提取工具,可以尝试一下PyMuPDF4LLM。


最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方优快云官方认证二维码,免费领取【保证100%免费

<think>嗯,用户在使用pymupdf4llm提取PDF时遇到了表格被解析成文字,然后在页面末尾重复生成表格的问题。我需要帮他解决这个重复输出的情况。首先,我应该回忆一下pymupdf本身的功能,因为pymupdf4llm可能是基于它开发的。用户提到表格被先解析成文字,再在页末生成表格,导致重复,这可能是因为在处理表格时同时提取了文本和表格内容。 首先,我应该检查pymupdf4llm的文档,看看是否有参数可以控制是否提取表格或者文本。可能有一个选项来关闭表格的单独提取,或者调整处理方式。如果文档里没有提到,可能需要直接使用PyMuPDF(即fitz)来处理,这样更灵活。 用户可能没有直接使用PyMuPDF,而是用了封装过的pymupdf4llm,但也许后者没有提供足够的配置选项。这时候,可能需要直接使用PyMuPDF的表格提取功能,比如用page.get_tables()来获取表格数据,然后排除文本中的表格部分,或者在提取文本时忽略表格区域。 另外,用户的问题可能涉及到如何区分文本中的表格和单独提取的表格。可能需要分析页面结构,检测表格的位置,然后从文本中删除对应的部分。或者,在提取文本时设置标志,当遇到表格时跳过文本提取,只保留表格数据。 另一个思路是,使用PyMuPDF的文本块提取功能,识别哪些文本块属于表格,然后过滤掉这些块,只保留单独提取的表格。这样可能需要遍历每个文本块,检查其位置是否在表格的边界内。 如果用户希望保留表格的结构化数据,而不要文本中的表格内容,可能需要结合两种提取方式:先提取所有文本,再提取表格,然后通过位置信息或内容匹配来去重。例如,比较文本中的内容是否包含表格中的某些行,如果存在重复,则删除文本中的对应部分。 此外,可能需要考虑PDF本身的构造问题。有些PDF中的表格可能实际上是用文本和线条绘制的,而不是真正的表格结构,导致提取工具无法正确识别,从而重复提取。这种情况下,可能需要更复杂的处理,比如使用OCR或图像识别,但用户的问题可能更倾向于程序化处理。 总结可能的解决方案:1. 检查pymupdf4llm是否有参数控制表格提取;2. 直接使用PyMuPDF的API分别处理文本和表格;3. 提取后通过内容或位置去重;4. 处理文本时排除表格区域。 需要进一步询问用户是否愿意直接使用PyMuPDF,或者更倾向于在现有工具基础上调整。但根据问题描述,用户可能需要具体的步骤,比如代码示例,来分别处理文本和表格,并合并结果,避免重复。因此,提供使用PyMuPDF提取文本和表格,然后进行去重的代码示例可能有效。同时,提醒用户检查PDF结构,可能需要调整参数或使用其他方法处理复杂表格。</think>你在使用 `pymupdf4llm` 提取 PDF 时遇到的表格重复问题,本质上是由于该默认同时提取了页面中的纯文本和结构化表格(两者内容重叠)。以下是解决方案的思路和具体步骤: --- ### **问题原因** - PDF 中的表格在页面中既以纯文本形式存在,又以结构化表格形式存储。 - `pymupdf4llm` 默认提取两者的内容,导致重复。 --- ### **解决方案** #### 方法一:**禁用表格提取(仅保留纯文本)** 如果不需要结构化表格数据,直接关闭表格提取功能: ```python from pymupdf4llm import get_pymupdf_text text = get_pymupdf_text("your.pdf", extract_tables=False) # 关闭表格提取 print(text) ``` #### 方法二:**分别提取文本和表格(避免重复)** 若需要同时获取文本和表格但避免重复,需手动分离处理: ```python import fitz # PyMuPDF doc = fitz.open("your.pdf") for page in doc: # 提取纯文本(排除表格区域) text = page.get_text() # 提取结构化表格 tables = page.find_tables() if tables: for table in tables: print("表格内容:", table.extract()) print("页面文本:", text) ``` #### 方法三:**后处理去重** 如果已提取到重复内容,可通过字符串匹配去重: ```python import re def remove_table_duplicates(text): # 匹配表格分隔符(根据实际输出调整正则表达式) table_pattern = re.compile(r'\n表格开始.*?表格结束\n', re.DOTALL) cleaned_text = re.sub(table_pattern, '', text) return cleaned_text # 示例 original_text = "页面文本...\n表格开始\n表格内容\n表格结束\n..." clean_text = remove_table_duplicates(original_text) print(clean_text) ``` --- ### **进阶建议** 1. **检查表格识别精度** 使用 `fitz`(PyMuPDF)的 `page.find_tables()` 或 `page.get_text("blocks")` 分析表格位置,确保提取范围准确。 2. **结合其他增强处理** 对复杂表格,可结合 `camelot` 或 `tabula` 专门提取表格,再与纯文本合并。 3. **PDF 结构检查** 用 PDF 阅读器(如 Adobe Acrobat)检查表格是否为“真实表格”还是绘图元素,这对提取方式的选择至关重要。 --- 通过上述方法,你可以灵活控制文本和表格的提取逻辑,避免重复输出。若需更具体的代码调试,可以提供 PDF 样本片段进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值