news 2026/9/23 17:22:25

PyMuPDF 开发实战指南:基于 MuPDF C 引擎的高性能 PDF 数据提取、转换与处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PyMuPDF 开发实战指南:基于 MuPDF C 引擎的高性能 PDF 数据提取、转换与处理
  • 图像处理

【免费下载链接】PyMuPDF

PyMuPDF is a high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents.

项目地址:https://gitcode.com/gh_mirrors/py/PyMuPDF
点击查看免费下载

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.solibmupdfcpp.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_TYPEUnix 下 MuPDF 构建类型:debug/memento/release(默认)
PYMUPDF_SETUP_MUPDF_TESSERACT设为0时构建不带 Tesseract 的 MuPDF
PYMUPDF_SETUP_MUPDF_CLEAN设为1时强制干净重建 MuPDF
PYMUPDF_SETUP_PY_LIMITED_API0时按当前 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

输出

格式说明
PDF从 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.placementsTable.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()支持matrixdpicolorspacealphaclip等参数(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
Markdownpymupdf4llm.to_markdown(path)
JSONpymupdf4llm.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 pymupdffitz是历史遗留别名,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.

项目地址:https://gitcode.com/gh_mirrors/py/PyMuPDF
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 17:20:00

ID3DXSprite实战:Visual C++打造实时DSP数据可视化显示

简介&#xff1a;针对Direct3D中ID3DXSprite接口的2D图形渲染与DirectSound编程实践&#xff0c;这份Visual C示例工程适用于游戏开发和实时界面设计场景&#xff0c;帮助开发者解决精灵批量绘制效率与音频处理问题。包内共43个文件&#xff0c;以bmp位图资源、cpp源文件、h头文…

作者头像 李华
网站建设 2026/9/23 17:17:28

DeepSeek本地部署与API调用实战:从模型选型到避坑指南

简介&#xff1a;这份PDF由清华大学新闻与传播学院新媒体研究中心整理&#xff0c;以DeepSeek-R1开源推理模型为主线&#xff0c;系统展示智能对话、文本生成、代码补全、知识推理、联网搜索与文件读取等能力&#xff0c;并专门对比了推理模型与非推理模型在快慢思考、创造力、…

作者头像 李华
网站建设 2026/9/23 17:13:31

DeepSeek-V3财务票据语义理解与风险预警微调实战

简介&#xff1a;本资源是一份面向财务数字化从业者、AI工程技术人员及高校财经/计算机交叉领域学习者的深度技术文档&#xff0c;聚焦DeepSeek-V3大模型在财务会计自动化场景中的落地实践&#xff0c;重点解决票据智能识别与财务风险实时预警两大核心痛点。文档共23页PDF&…

作者头像 李华
网站建设 2026/9/23 17:12:28

应用心理毕设避雷[特殊字符]经典量表、实验范式模板重复率爆高

用心理学、发展与教育心理、临床心理方向的毕业生深有感触&#xff01; 应用心理文献综述&#xff0c;是社科里理论套用泛滥、量表描述高度同质化的重灾区&#xff01; 思梦航 AI&#xff08;官网&#xff1a;www.smhxueshu.com&#xff09;微信公众号 搜一搜&#xff1a;思梦…

作者头像 李华
网站建设 2026/9/23 17:10:39

本科生应对AIGC检测的8款实用工具与技巧

1. 项目概述&#xff1a;本科生如何科学应对AIGC检测挑战最近在高校学术圈里&#xff0c;AIGC检测工具的使用已经成为师生们热议的话题。作为一名经历过论文写作全过程的过来人&#xff0c;我深刻理解本科生在面对学术写作时既要保证原创性&#xff0c;又要应对AIGC检测的双重压…

作者头像 李华