接口#
PyMuPDF4LLM API#
- property version#
打印库的版本。
- to_markdown(doc: pymupdf.Document | str, *, pages: list | range | None = None, hdr_info: Any = None, write_images: bool = False, embed_images: bool = False, dpi: int = 150, image_path='', image_format='png', image_size_limit=0.05, force_text=True, margins=(0, 50, 0, 50), page_chunks: bool = False, page_width: float = 612, page_height: float = None, table_strategy='lines_strict', graphics_limit: int = None, ignore_code: bool = False, extract_words: bool = False, show_progress: bool = True) str | list[dict]#
读取文件的页面并以Markdown格式输出其页面的文本。具体如何实现可以通过多个参数进行影响。请注意,支持从Markdown文本构建页面块。
- Parameters:
doc (文档,字符串) – 文件,可以指定为文件路径字符串,或作为一个 PyMuPDF 文档(通过
pymupdf.open创建)。为了使用pathlib.Path规范、Python 文件类似对象、内存中的文档等,你 必须 使用一个 PyMuPDF 文档。页面 (列表) – 可选,考虑用于输出的页面(注意:指定基于0的页面编号)。如果省略,则处理所有页面。
hdr_info – 可选。如果您想提供自己的标题检测逻辑,请使用此选项。这可以是一个可调用对象或一个具有名为
get_header_id方法的对象。它必须接受一个文本片段(作为extractDICT()中包含的片段字典)和一个关键字参数“page”(这是拥有的 Page 对象)。它必须返回一个字符串“”或最多 6 个“#”字符,后跟 1 个空格。如果省略,将执行完整文档扫描,以查找最常用的字体大小并基于它们推导标题级别。要完全避免这种行为,请指定hdr_info=lambda s, page=None: ""或hdr_info=False。write_images (bool) – 当遇到图像或矢量图形时,将从相应的页面区域创建图像并存储在指定的文件夹中。将生成指向这些图像的Markdown引用。这些区域中包含的任何文本将不包含在文本输出中(但作为图像的一部分出现)。因此,如果例如您的文档在整个页面的图像上有文本,请确保将此参数设置为
False。embed_images (bool) – 类似于
write_images,但图像将作为 base64 编码的字符串包含在 markdown 文本中。如果使用,将忽略write_images和image_path。这可能会显著增加您的 markdown 文本的大小。image_size_limit (float) – 这必须是一个小于1的正值。如果
width / page.rect.width <= image_size_limit或height / page.rect.height <= image_size_limit,图像将被忽略。例如,默认值0.05意味着要被考虑在内,图像的宽度和高度必须大于页面宽度和高度的5%。dpi (int) – 指定所需的图像分辨率,单位为每英寸点数。仅在
write_images=True时相关。默认值为 150。image_path (str) – 将图像存储在该文件夹中。相关的如果
write_images=True。默认是脚本目录的路径。image_format (str) – 通过其扩展名指定所需的图像格式。默认值为“png”(可移植网络图形)。另一个流行的格式可能是“jpg”。可能的值是所有支持的输出格式。
force_text (bool) – 即使在重叠的图像/图形时也生成文本输出。然后,这段文本将显示在相应的图像之后。如果
write_images=True,此参数可以是False以抑制在图像上重复文本。边距 (浮点数,列表) –
一个浮点数或一个包含 2 个或 4 个浮点数的序列,指定页面边框。只有在边距内的对象将被考虑作为输出。
margin=f产生(f, f, f, f)对应于(左, 上, 右, 下)。(top, bottom)产生(0, top, 0, bottom)。要始终读取完整页面,请使用
margins=0。
page_chunks (bool) –
如果
True输出将会是一个Document.page_count字典的列表(每一页一个)。每个字典具有以下结构:”metadata” - 由文档的元数据
Document.metadata组成的字典,增加了额外的键 “file_path”(文件名), “page_count”(文档中的页面数),以及 “page_number”(基于1的页码)。”toc_items” - 指向此页面的目录项的列表。该列表中的每一项格式为
[lvl, title, pagenumber],其中lvl是层级,title是字符串,pagenumber是基于1的页码。”tables” - 此页面上的表格列表。每个项是一个字典,包含键 “bbox”、“row_count” 和 “col_count”。键 “bbox” 是表格在页面上位置的
pymupdf.Rect,以元组格式表示。”images” - 页面上的图像列表。这是页面方法
Page.get_image_info()的副本。”graphics” - 页面上的矢量图形矩形列表。这是由方法
Page.cluster_drawings()传递的聚类矢量图形的边界框列表。”text” - 页面内容作为 Markdown 文本。
”words” - 如果使用了
extract_words=True。这是一个元组列表(x0, y0, x1, y1, "wordstring", bno, lno, wno),由page.get_text("words")提供。这些元组的 顺序 与在 markdown 文本字符串中生成的顺序相同,因此尊重多列文本。这对于表中的文本也适用:单词按表行单元格的顺序提取。
page_width (float) – 指定所需的页面宽度。这对于具有固定页面宽度的文档(如 PDF、XPS 等)是无效的。然而,可重排 文档,如电子书、办公文件或文本文件没有固定的页面尺寸,默认假设其宽度为信件格式(612)和一个“无限的” 页面高度。这意味着整个文档被视为一整页。
page_height (float) – 指定所需的页面高度。有关相关性,请参见
page_width参数。如果使用默认的None,文档将呈现为一个宽度为page_width的大页面。因此,在这种情况下,将不会发生 markdown 页面分隔符(除了最后一个),只会返回一个页面块。table_strategy (str) – 表格检测策略。默认是
"lines_strict",它忽略背景颜色。在某些情况下,其他策略可能会更成功,例如"lines",它使用所有矢量图形对象进行检测。graphics_limit (int) – 使用此参数来限制处理过量的矢量图形元素。通常,科学文档或使用图形命令模拟文本的页面可能包含数万个这些对象。由于矢量图形主要用于表格检测,分析这类页面可能会导致过长的运行时间。您可以通过例如
graphics_limit=5000或者更小的值来排除问题页面。相应的页面将被忽略,并在输出文本中以一条消息行表示。ignore_code (bool) – 如果
True,则单间距文本不会受到特殊格式处理。代码块将不再生成。如果使用了extract_words=True,则此值设置为True。extract_words (bool) – 一个值为
True会强制page_chunks=True并为每个页面字典添加键“words”。它的值是由 PyMuPDF 的 Page 方法get_text("words")提供的单词列表。这个列表中单词的顺序与提取的文本相同。show_progress (bool) –
一个值为
True(默认)时,在将页面转换为Markdown时会显示基于文本的进度条。它看起来类似于以下内容:处理中 input.pdf… [==================== ] (148/291)
- Returns:
选定的所有文档页面的组合文本字符串,或一个字典列表。
- LlamaMarkdownReader(*args, **kwargs)#
使用
pdf_markdown_reader.PDFMarkdownReader创建一个 LlamaIndex 包。请注意,当安装 pymupdf4llm 时,此包不会自动安装。有关可能参数的详细信息,请查阅LlamaIndex文档 [1]。
- Raises:
NotImplementedError: 请安装所需的 LlamaIndex 包。- Returns:
a
pdf_markdown_reader.PDFMarkdownReader并发出消息“成功导入 LlamaIndex”。请注意,此方法需要几秒钟才能执行。有关使用 markdown 阅读器的详细信息,请参见下文。
- class pdf_markdown_reader.PDFMarkdownReader#
- load_data(file_path: Union[Path, str], extra_info: Optional[Dict] = None, **load_kwargs: Any) List[LlamaIndexDocument]#
这是您当前应该使用的唯一方法来提取markdown数据。在任何情况下,请忽略方法
aload_data()和lazy_load_data()。其他方法如use_doc_meta()可能有意义,也可能没有。有关更多信息,请查阅LlamaIndex文档 [1]。在后台,该方法将执行
to_markdown()。- Returns:
每个页面的
LlamaIndexDocument文档列表。
脚注