- 图像处理
【免费下载链接】PyMuPDF
PyMuPDF is a high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents.
PyMuPDF 是一个以 MuPDF(轻量级 C 渲染引擎)为底层的高性能 Python 库,用于 PDF(及 XPS、EPUB、CBZ、MOBI、FB2、SVG、Markdown 等格式)的数据提取、分析、转换、渲染与操作。本文以本仓库 README.md 为核心骨架,结合 src/ 目录下的真实源码实现,系统讲解安装配置、文本/表格/图片提取、页面渲染、OCR、注释与编辑、表单处理、多进程并行以及 PyMuPDF Pro 的 Office 文档支持,帮助读者构建可直接上手的 PDF 处理流水线。
为什么选择 PyMuPDF
仓库根目录 README.md 给出的定位是:基于 MuPDF 的高性能 Python 库,提供精确的低层控制能力与便捷的高层 API,无强制外部依赖。其核心卖点可归纳为四点:
- 快(Fast)——底层由 MuPDF C 渲染引擎驱动,典型场景下相对纯 Python 实现有数量级的性能优势;
- 准(Accurate)——文本提取保留字体、颜色、位置等像素级精确的元数据;
- 全能(Versatile)——支持读取、写入、注释、密文删除(redact)、合并、拆分与格式转换;
- 面向 LLM(LLM-ready)——借助 PyMuPDF4LLM 输出原生 Markdown,直接服务 RAG 与 AI 流水线。
需要特别说明的是:文档中的性能对比、下载量等营销数据来自外部公开渠道,本文不做进一步引用;从仓库源码可以确证的事实是,PyMuPDF 在构建时会将 MuPDF 源码一同编译打包(详见下文“从源码构建”小节),因此pip install pymupdf之后即为完整自包含的运行环境。
安装与可选扩展包
基础安装
pip install pymupdf从 setup.py 的构建脚本可以看出,PyMuPDF 的安装流程并不简单:它会先下载与当前版本绑定的 MuPDF 源码包(默认从https://mupdf.com/downloads/archive/mupdf-<版本>-source.tar.gz拉取,见 setup.py),然后通过 MuPDF 自带的mupdfwrap.py脚本构建共享库,再基于 src/extra.i 用 SWIG 生成 Python 扩展模块。这就是为什么普通用户安装后无需任何额外配置即可使用——MuPDF 的libmupdf.so、libmupdfcpp.so以及_mupdf绑定都会被一并打包进 wheel。
预编译 wheel 覆盖Windows、macOS、Linux,支持 Python3.10–3.14;具体平台标签包括:
manylinux(x86_64 与 aarch64)musllinux(x86_64)- macOS(x86_64 与 arm64)
- Windows(x86 与 x86_64)
若目标平台没有预编译 wheel,pip 会尝试从源码编译,此时需要本机的 C/C++ 工具链。构建过程可被大量PYMUPDF_SETUP_*环境变量控制,例如:
| 环境变量 | 作用(依据 setup.py) |
|---|---|
PYMUPDF_SETUP_MUPDF_BUILD | 指定 MuPDF 来源:留空使用系统 MuPDF;git:--branch master表示从 git 克隆;缺省用内置固定版本 |
PYMUPDF_SETUP_MUPDF_BUILD_TYPE | Unix 下 MuPDF 构建类型:debug/memento/release(默认) |
PYMUPDF_SETUP_MUPDF_TESSERACT | 设为0时构建不带 Tesseract 的 MuPDF |
PYMUPDF_SETUP_MUPDF_CLEAN | 设为1时强制干净重建 MuPDF |
PYMUPDF_SETUP_PY_LIMITED_API | 非0时按当前 Python 的稳定 ABI 构建 |
PYMUPDF_SETUP_FAKE_NOGIL | 设为1时(不正确)地声明自身线程安全,仅用于内部测试 |
可选扩展包
| 包 | 用途 |
|---|---|
pymupdf-fonts | 为文本输出提供扩展字体集 |
pymupdf4llm | 面向 LLM/RAG 优化的 Markdown 与 JSON 提取 |
pymupdfpro | 增加 Office(Microsoft/Korean Office)文档支持 |
tesseract-ocr | 扫描件与图片 OCR(需单独安装) |
# 更多字体 pip install pymupdf-fonts # LLM-ready 提取 pip install pymupdf4llm # Office 支持 pip install pymupdfpro # OCR(Tesseract 需单独安装) # macOS brew install tesseract # Ubuntu / Debian sudo apt install tesseract-ocr支持的输入输出格式
输入
| 类别 | 格式 |
|---|---|
| PDF 及其衍生格式 | PDF、XPS、EPUB、CBZ、MOBI、FB2、SVG、TXT、MD |
| 图片 | PNG、JPEG、BMP、TIFF、GIF 等 |
| Microsoft Office(Pro) | DOC、DOCX、XLS、XLSX、PPT、PPTX |
| Korean Office(Pro) | HWP、HWPX |
输出
| 格式 | 说明 |
|---|---|
| 从 Office 格式全保真转换 | |
| SVG | 矢量页面渲染 |
| 图片(PNG、JPEG 等) | 任意 DPI 页面栅格化 |
| Markdown | 结构感知、面向 LLM |
| JSON | 边界框、版式数据、逐元素细节 |
| 纯文本 | 快速轻量的提取结果 |
快速开始:核心 API 一览
打开文档
Document类的构造器即“打开文档”入口,open是其同义词(src/init.py)。其签名如下:
Document(filename=None, stream=None, filetype=None, rect=None, width=0, height=0, fontsize=11, archive=None)几种典型用法:
import pymupdf doc = pymupdf.open("document.pdf") # 按文件名打开 doc = pymupdf.open() # 新建空白 PDF doc = pymupdf.open(stream=buf, filetype="pdf") # 从字节流打开 doc = pymupdf.open("book.epub", width=600, height=800) # 可重排文档指定版式提取纯文本
import pymupdf doc = pymupdf.open("document.pdf") for page in doc: print(page.get_text())page.get_text()支持"text"、"dict"、"words"、"html"、"xml"、"rawdict"等多种提取模式(在 src/init.py 中委托给 src/utils.py 的get_text实现)。
提取带版式元数据的文本
import pymupdf doc = pymupdf.open("document.pdf") page = doc[0] blocks = page.get_text("dict")["blocks"] for block in blocks: if block["type"] == 0: # text block for line in block["lines"]: for span in line["spans"]: print(f"{span['text']!r} font={span['font']} size={span['size']:.1f}")提取表格
import pymupdf doc = pymupdf.open("spreadsheet.pdf") page = doc[0] tables = page.find_tables() for table in tables: print(table.to_markdown()) # 或导出为 Pandas DataFrame df = table.to_pandas()表格检测在 src/table.py 中实现,page.find_tables()只是其薄封装(src/init.py)。该函数暴露了大量可调参数,用于应对复杂版式:
page.find_tables( clip=None, # 限定检测区域 vertical_strategy="lines", # "lines" / "text" / "explicit" horizontal_strategy="lines", snap_tolerance=3.0, # 线吸附容差 join_tolerance=3.0, # 线连接容差 edge_min_length=3, # 最小有效线长 min_words_vertical=3, # 构成单元格的最小词数 min_words_horizontal=1, text_tolerance=3, # 文本归类容差 add_lines=None, # 用户补充的线条 add_boxes=None, # 用户补充的矩形 use_layout=True, # 用版式分析结果门控/限制线检测 union=False, # 融合版式网格与线检测候选 refine=False, # 细化每个表格的单元格网格 )导出层面,Table.to_markdown(clean=False, fill_empty=True)输出 GitHub 兼容 Markdown,Table.to_pandas(**kwargs)输出 DataFrame(src/table.py)。refine=True时还会把单元格合并结构与表头语义附加到Table.placements、Table.header_rows等属性上,并影响Table.to_html()的输出。
将页面渲染为图片
import pymupdf doc = pymupdf.open("document.pdf") page = doc[0] pixmap = page.get_pixmap(dpi=150) pixmap.save("page_0.png")get_pixmap()支持matrix、dpi、colorspace、alpha、clip等参数(src/init.py),可指定任意 DPI 进行栅格化,得到Pixmap对象后再保存为 PNG/JPEG 或送入其他处理流程。
OCR 扫描文档
import pymupdf doc = pymupdf.open("scanned.pdf") page = doc[0] # 需要系统安装 Tesseract 并在 PATH 中 text = page.get_textpage_ocr(language="eng").extractText() print(text)将 Markdown 转换为 PDF
import pymupdf md_doc = pymupdf.open("example.md") md_doc.save("example.pdf")注意:这里的 Markdown 转换走的是pymupdf.open()直接打开 MD 文件的路径——MD 是输入格式表中列出的受支持输入格式之一。
为 LLM 转换为 Markdown
import pymupdf4llm md = pymupdf4llm.to_markdown("report.pdf") # 直接送入 LLM 或向量库 print(md)注释与密文删除
import pymupdf doc = pymupdf.open("contract.pdf") page = doc[0] # 添加高亮注释 rect = pymupdf.Rect(72, 100, 400, 120) page.add_highlight_annot(rect) # 添加密文注释并应用 page.add_redact_annot(rect) page.apply_redactions() doc.save("contract_redacted.pdf")合并 PDF
import pymupdf merger = pymupdf.open() for path in ["part1.pdf", "part2.pdf", "part3.pdf"]: merger.insert_pdf(pymupdf.open(path)) merger.save("merged.pdf")Document.insert_pdf()是功能完整的合并接口(src/init.py),支持from_page/to_page指定页范围,也支持rotate等选项——拆分 PDF 为单页时同样复用该接口。
Office 文档转 PDF(Pro)
import pymupdf.pro pymupdf.pro.unlock("YOUR-LICENSE-KEY") doc = pymupdf.open("presentation.pptx") pdf_bytes = doc.convert_to_pdf() with open("output.pdf", "wb") as f: f.write(pdf_bytes)从 Word 文档提取 LLM-ready Markdown
import pymupdf4llm import pymupdf.pro pymupdf.pro.unlock("YOUR-LICENSE-KEY") md = pymupdf4llm.to_markdown("document.docx") print(md)核心能力一览
基础能力
| 能力 | 说明 |
|---|---|
| 文本提取 | 纯文本、富 dict(字体、字号、颜色、bbox)、HTML、XML、原始 blocks |
| 表格检测 | find_tables()定位、提取并导出为 Markdown 或结构化数据 |
| 图片提取 | 提取内嵌图片,或将任意页面渲染为高分辨率Pixmap |
| 渲染 | 将 PDF 页面渲染为图片或Pixmap数据,供 UI 或其他流程使用 |
| OCR | 集成 Tesseract——整页或局部 OCR,可配置语言 |
| 注释 | 读写高亮、下划线、波浪线、便签、自由文本、墨迹、图章 |
| 密文删除 | 添加并永久应用密文注释 |
| 表单 | 读取与填写 PDF AcroForm 字段 |
| PDF 创建 | 直接用 API 创建,或从 Markdown 文件快速转换 |
| PDF 编辑 | 插入、删除、重排页面;设置元数据;合并与拆分文档 |
| 绘图 | 绘制直线、曲线、矩形、圆形;插入 HTML 框 |
| 加密 | 打开密码保护的 PDF;以 RC4 或 AES 加密保存 |
| 链接 | 提取超链接、内部交叉引用与 URI 目标 |
| 书签 | 读写大纲/目录树 |
| 元数据 | 标题、作者、创建日期、生产者、主题及自定义条目 |
| 颜色空间 | RGB、CMYK、灰度;颜色空间转换 |
LLM 与 AI 输出(经由 PyMuPDF4LLM)
| 输出 | API |
|---|---|
| Markdown | pymupdf4llm.to_markdown(path) |
| JSON | pymupdf4llm.to_json(path) |
| 纯文本 | pymupdf4llm.to_text(path) |
PyMuPDF4LLM 支持多栏版式、自然阅读顺序与按页分块,表格会被检测并转为 GitHub 兼容 Markdown,与正文按正确阅读顺序交错输出——这正是 RAG 流水线最需要的输入形态。
实用 Recipes:开箱即用的完整脚本
提取 PDF 中全部图片
import pymupdf from pathlib import Path doc = pymupdf.open("document.pdf") out = Path("images") out.mkdir(exist_ok=True) for page_index, page in enumerate(doc): for img_index, img in enumerate(page.get_images()): xref = img[0] pix = pymupdf.Pixmap(doc, xref) if pix.n > 4: # 转换 CMYK pix = pymupdf.Pixmap(pymupdf.csRGB, pix) pix.save(out / f"page{page_index}_img{img_index}.png")这里有两个值得注意的细节(与 FAQ 呼应):page.get_images()(src/init.py)只列出内嵌位图对象;若页面中的图表是用绘图指令绘制的矢量图形,它不会出现在列表中,此时应改用page.get_pixmap()整页栅格化。另外pix.n > 4表示含 Alpha 之外的额外通道(如 CMYK),需要先转换到 RGB 才能正确保存。
跨文档搜索文本并高亮
import pymupdf doc = pymupdf.open("document.pdf") needle = "confidential" for page in doc: hits = page.search_for(needle) if hits: print(f"Page {page.number}: {len(hits)} occurrence(s)") for rect in hits: page.add_highlight_annot(rect) doc.save("highlighted.pdf")search_for()返回匹配位置的Rect列表(src/init.py),可直接用于注释定位;对非水平排列的文本可传quads=True获得更精确的四边形区域。
将 PDF 拆分为单页文件
import pymupdf doc = pymupdf.open("document.pdf") for i, page in enumerate(doc): out = pymupdf.open() out.insert_pdf(doc, from_page=i, to_page=i) out.save(f"page_{i + 1}.pdf")每页插入水印
import pymupdf doc = pymupdf.open("document.pdf") for page in doc: page.insert_text( point=pymupdf.Point(72, page.rect.height / 2), text="DRAFT", fontsize=72, color=(0.8, 0.8, 0.8), rotate=45, ) doc.save("watermarked.pdf")page.insert_text()(src/init.py)支持指定插入点、字号、颜色与旋转角度,是构建水印、页眉页脚、批注文本的基础 API。
Office 文档处理与 PyMuPDF Pro
PyMuPDF Pro 是一个扩展层,原生处理 Microsoft 与 Korean Office 格式——无需安装 Office、无需 COM 互操作、无需调用 LibreOffice 子进程。解锁后,pymupdf.open()可以像打开 PDF 一样接受 Office 文件:
import pymupdf.pro pymupdf.pro.unlock("YOUR-LICENSE-KEY") # 各种格式用法完全一致 for fmt in ["contract.docx", "data.xlsx", "deck.pptx", "report.hwpx"]: doc = pymupdf.open(fmt) for page in doc: print(page.get_text())Office 文档支持的操作包括:
- 逐页提取文本与图片
- 通过
doc.convert_to_pdf()转为 PDF(src/init.py) - 将页面栅格化为 PNG/JPEG 供可视化检查
- 直接送入 PyMuPDF4LLM 获得 AI-ready 输出
无许可证时的限制
当调用pymupdf.pro.unlock()而未提供有效密钥时,将受到以下限制:
| 限制 | 详情 |
|---|---|
| 页数限制 | 只能访问任何文档的前 3 页 |
| 时限 | 评估期——功能在设定时长后过期 |
在此约束内,其余 Pro 功能均可正常使用,便于在购买许可前完成原型验证。
常见问题深度解析
数据会发送到云端吗?
不会。PyMuPDF 完全本地运行:它是基于 MuPDF C 引擎的原生 Python 库,pymupdf.open()、page.get_text()、page.find_tables()等全部调用都在本机进程内执行,不传输任何数据。开源 AGPL 版本与商业版本都没有遥测调用、许可证校验回调或任何云依赖;安装完成后可完全在离线(air-gapped)环境运行。唯一需要联网的是最初的pip install。
因此 PyMuPDF 适合:医疗(HIPAA)、金融、法律、政府等受监管行业;无出站网络的内网部署;涉密环境;自托管 RAG 流水线(本地处理机密文档后再送入本地 LLM);以及在数据送入 LLM 前进行预处理以节省 Token 成本。
应该import pymupdf还是import fitz?
推荐import pymupdf。fitz是历史遗留别名,v1.24.0+ 仍然可用(仓库中 src/fitz___init__.py 与 src/pymupdf.py 即为此兼容层),但新代码应统一使用pymupdf:
import pymupdf # 推荐 # import fitz # 旧别名——仍可用,但新代码不建议支持韩文、日文、中文文档吗?
支持。PyMuPDF 具备可靠的 CJK 支持。从构建层面看,setup.py 在编译 MuPDF 时会通过预定义宏TOFU_CJK_EXT强制启用 CJK 扩展字体(Unix 下通过XCFLAGS/XCXXFLAGS注入,Windows 下写入 MuPDF 的config.h),确保中文、日文、韩文内容的正确渲染与提取。
如何为 LLM 从 PDF 提取 Markdown?
交给 PyMuPDF4LLM(RAG 推荐方案)。它是高层封装:跨页输出统一 Markdown 字符串,表格被检测后转为 GitHub 兼容 Markdown 并与正文按正确阅读顺序交错:
import pymupdf4llm md = pymupdf4llm.to_markdown("report.pdf") print(md) # 表格以 | col1 | col2 | ... 形式内联在文本中文本提取出现乱码或空输出?
通常是 PDF 使用了没有字符映射表(CMAP)的自定义字体编码——字形存在,但无法映射回 Unicode。此时:
- 用 OCR 兜底(
page.get_textpage_ocr()); - 注意:扫描版 PDF 本身没有文本层,提取必然为空,需要 OCR。
如何只提取页面某一区域的内容?
给get_text()传clip矩形:
import pymupdf doc = pymupdf.open("input.pdf") page = doc[0] # 指定区域(x0, y0, x1, y1),单位为点 clip = pymupdf.Rect(50, 100, 400, 300) text = page.get_text("text", clip=clip)如何搜索文本并获取其位置?
import pymupdf doc = pymupdf.open("input.pdf") page = doc[0] # 返回每个匹配周围的 Rect 对象列表 locations = page.search_for("invoice number") for rect in locations: print(rect) # 例如 Rect(72.0, 120.5, 210.0, 134.0)get_images明明能看到图表却不返回图片?
matplotlib、Excel、R 等工具生成的图表通常是矢量图形(PDF 绘图指令),而非位图。get_images只列出内嵌位图对象,不会检测矢量图形。如需捕获这类内容,用page.get_pixmap()整页栅格化。
OCR 如何工作?需要单独安装 Tesseract 吗?
PyMuPDF 使用 MuPDF 内置的 Tesseract 集成,因此 Python 层没有pytesseract依赖;但仍需要Tesseract 语言数据文件(tessdata)。若未显式提供 tessdata 路径,自动发现机制可能调用tesseract可执行文件(例如枚举可用语言)。推荐做法:安装 Tesseract 以便自动发现,或通过tessdata参数 /TESSDATA_PREFIX环境变量显式配置 tessdata 位置。支持超过 100 种语言。
import pymupdf doc = pymupdf.open("scanned.pdf") page = doc[0] # 用 OCR 获得文本页 tp = page.get_textpage_ocr(language="eng") text = page.get_text(textpage=tp) print(text)如何 OCR 一个独立图片文件(非 PDF)?
import pymupdf pix = pymupdf.Pixmap("image.png") if pix.alpha: pix = pymupdf.Pixmap(pix, 0) # 移除 alpha 通道——OCR 必需 # 包成单页 PDF 再 OCR doc = pymupdf.open() page = doc.new_page(width=pix.width, height=pix.height) page.insert_image(page.rect, pixmap=pix) tp = page.get_textpage_ocr() text = page.get_text(textpage=tp)如何高亮文本?
import pymupdf doc = pymupdf.open("input.pdf") page = doc[0] # 非水平文本用 quads=True 获得精确高亮 quads = page.search_for("important term", quads=True) page.add_highlight_annot(quads) doc.save("highlighted.pdf")PyMuPDF 支持全部标准 PDF 文本标记:高亮、下划线、删除线、波浪线。
如何永久删除(密文化)PDF 内容?
密文删除是刻意设计的两步流程,便于提交前复查:
import pymupdf doc = pymupdf.open("input.pdf") page = doc[0] # 第 1 步:标记待密文化的区域 rect = page.search_for("confidential")[0] page.add_redact_annot(rect, fill=(1, 1, 1)) # 白色填充 # 第 2 步:应用——永久移除底层内容 page.apply_redactions() doc.save("redacted.pdf")apply_redactions()之后,原始内容已被移除,无法从保存的文件中恢复。相关实现见 src/init.py(add_redact_annot)与 src/init.py(apply_redactions)。
如何读取 PDF 表单字段值?
import pymupdf doc = pymupdf.open("form.pdf") page = doc[0] for field in page.widgets(): print(f"{field.field_name}: {field.field_value}")page.widgets()(src/init.py)遍历页面上的 AcroForm 控件。
如何程序化填写 PDF 表单?
import pymupdf doc = pymupdf.open("form.pdf") page = doc[0] for field in page.widgets(): if field.field_name == "First Name": field.field_value = "Ada" field.update() doc.save("filled_form.pdf")可以使用多线程吗?
不可以。PyMuPDF 不支持多线程使用,即使在 Python 较新的自由线程(free-threading)模式下亦然。底层 MuPDF 只提供部分线程安全,而一个完全线程安全的 PyMuPDF 实现仍会引入单线程开销,得不偿失。事实上,src/init.py 在导入时即调用mupdf.reinit_singlethreaded()明确进入单线程模式。
请改用多进程:每个进程独立打开文件,各自处理自己的页面区间:
from multiprocessing import Pool import pymupdf def process_pages(args): path, start, end = args doc = pymupdf.open(path) # 每个进程持有自己的句柄 results = [] for i in range(start, end): results.append(doc[i].get_text()) return results with Pool(4) as pool: chunks = [("input.pdf", 0, 25), ("input.pdf", 25, 50), ...] all_results = pool.map(process_pages, chunks)仓库 tests/test_threads.py 也印证了线程相关的约束边界。
如何加速同一页面的重复文本提取?
复用TextPage对象。创建TextPage是开销最大的环节,一旦创建,在不同提取格式间切换的成本很低:
import pymupdf page = doc[0] tp = page.get_textpage() # 只创建一次 text = page.get_text("text", textpage=tp) words = page.get_text("words", textpage=tp) data = page.get_text("dict", textpage=tp)对于同一页面的重复提取,这可将执行时间降低约 50–95%。
如何读写 PDF 元数据?
import pymupdf doc = pymupdf.open("input.pdf") # 读取 print(doc.metadata) # {'title': '...', 'author': '...', 'subject': '...', 'keywords': '...', ...} # 写入 doc.set_metadata({ "title": "Annual Report 2025", "author": "Finance Team", "keywords": "annual, finance, 2025" }) doc.save("output.pdf")如何读写目录/书签?
import pymupdf doc = pymupdf.open("input.pdf") # 读取——返回 [级别, 标题, 页码] 列表 toc = doc.get_toc() for level, title, page in toc: print(" " * level, title, "→ page", page) # 写入 new_toc = [ [1, "Introduction", 1], [1, "Methods", 5], [2, "Data sources", 6], ] doc.set_toc(new_toc) doc.save("output.pdf")性能特征与适用场景
PyMuPDF 构建于 MuPDF 之上——业界最快的 PDF 渲染引擎之一。README 中引用的典型基准显示,与纯 Python PDF 库相比,文本提取有10–50 倍的速度提升,页面渲染可达100 倍以上,且内存占用极小(此类对比数据来自外部基准,具体数值依文档类型与硬件而异,建议自行以代表性样本验证)。对于 AI 负载,PyMuPDF4LLM无需 GPU即可完成文档预处理,相对基于视觉模型的 LLM 方案可显著降低基础设施成本。
结合前述“完全本地运行”“无强制依赖”“CJK 支持完善”“单线程/多进程模型”等特性,PyMuPDF 特别适合:大规模批量文本/表格抽取、文档归档与格式转换、扫描件 OCR 流水线、PDF 表单自动化、以及 RAG 前的文档清洗与结构化。
深入学习资源
本仓库包含完整的配套资料,可按需深入:
- API 参考与教程:docs/ 目录下有完整的 reStructuredText 文档集,包括 classes.rst(类总览)、page.rst(页面 API)、document.rst(文档 API)、table 相关(表格)、annot.rst(注释)、pixmap.rst(像素图)等;
- 安装指南:docs/installation.rst;
- Cookbook / 主题配方:docs/recipes-text.rst、docs/recipes-annotations.rst、docs/recipes-ocr.rst、docs/recipes-images.rst 等;
- 变更日志:changes.txt;
- 完整示例脚本:docs/samples/ 下的可运行 Python 文件,例如 quickfox.py(基础渲染)、text-lister.py(文本提取)、table01.py(表格)、annotations-ink.py(注释);
- 测试用例:tests/ 目录包含覆盖文本提取、表格、注释、表单、加密、几何、OCR 等的回归测试,是理解 API 边界的最佳教材,如 test_textextract.py、test_tables.py、test_annots.py;
- 从源码构建:setup.py 的头部注释完整记载了构建流程与全部
PYMUPDF_SETUP_*环境变量。
许可说明
PyMuPDF 与 MuPDF 由 Artifex Software 维护。本仓库开源版本采用GNU AGPL v3许可(见 COPYING),对开源项目免费;专有应用可向 Artifex 申请独立商业许可。选择许可前请结合自身分发模式评估 AGPL 的传染性条款。
- 图像处理
【免费下载链接】PyMuPDF
PyMuPDF is a high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents.
相关推荐
BentoPDF EPUB 转 PDF 浏览器端转换指南:PyMuPDF 引擎、批量处理与隐私保障
BentoPDF EPUB 转 PDF 浏览器端转换指南:PyMuPDF 引擎、批量处理与隐私保障 EPUB 是数字图书的开放标准格式,但当需要打印、批注或与没
前端Skill_Seekers PDF 提取器详解:基于 PyMuPDF 的文档转技能 POC 架构与实现
Skill_Seekers PDF 提取器详解:基于 PyMuPDF 的文档转技能 POC 架构与实现 本文以 Skill_Seekers 仓库中 PDF_EX
人工智能AI 应用AI 技能RAGMCP 服务网页爬虫BentoPDF PDF 转 Excel 指南:基于 PyMuPDF 与 SheetJS 的纯浏览器表格提取方案
BentoPDF PDF 转 Excel 指南:基于 PyMuPDF 与 SheetJS 的纯浏览器表格提取方案 本文围绕 BentoPDF(The Priva
前端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考