PyMuPDF:这个 Python 库,把 PDF 所有操作都覆盖了
文章目录PyMuPDF这个 Python 库把 PDF 所有操作都覆盖了1、它到底能做什么2、PDF 场景下能做的不止阅读3、安装不折腾4、适合什么场景5、许可和注意事项PyMuPDF这个 Python 库把 PDF 所有操作都覆盖了PyMuPDF 在 GitHub 上已经拿到 9,757 Star 了。Artifex 公司维护的 Python 绑定库底层跑的是 MuPDF 引擎。PDF、XPS、EPUB、CBZ 这些文档格式加上 PNG、JPG 等 10 种图片格式全部能当文档来操作。1、它到底能做什么先搞清楚它的位置PyMuPDF 不是从头写的 Python PDF 库而是给 MuPDF 这个 C 渲染引擎加了一层 Python 绑定。MuPDF 由 Artifex 开发出名的是渲染质量和速度2022 年 8 月发了 1.21.0 版本。对所有文档类型均可执行的操作解密文档读取元信息、链接和书签页面渲染为 PNG 或 SVG文本搜索提取文本和图片格式转换PDF、HTML、XML、JSON、纯文本配合 Tesseract 实现 OCR列表不长但已覆盖了文档处理的大部分环节。渲染和提取这两个能力放在一个库里意味着你不用再分别装 PDF 查看器和文本提取工具。2、PDF 场景下能做的不止阅读如果处理对象是 PDF能力还会扩大一圈创建、合并、拆分 PDF插入、删除、重排页面修改页面内容含注释和表单字段提取或插入图片、字体字体子集化缩小新建 PDF 的文件体积需装 fontTools对嵌入式文件的完全支持双面打印排版、海报化、添加水印密码保护解密、加密、权限设置、用户/所有者密码访问和修改底层 PDF 结构跟纯读写的 PDF 库不同PyMuPDF 在修改和创建这两条线上都给到了接口。你可以在一个库里完成从读、改、写到输出的闭环。仓库还内置了命令行入口python -m fitz能在终端完成加密解密、合并文档、提取图片字体、保留版式的文本提取。不需要每次写脚本才能用。另外值得提的是它和 PIL/Pillow 的对接很顺畅。在文档流水线里PyMuPDF 可以当中间层处理图片格式转换读入多种格式输出 PNG、PNM、PAM、PostScript 或 Photoshop 格式。这意味着你不用为图片中间处理再引入额外的图形库。官方仓库提供了 demo 脚本、完整示例程序和 Jupyter notebook。其中有一个 GUI 脚本能让你以可视化的方式对 PDF 中的图片进行插入、删除、替换和重定位。3、安装不折腾没有强制性外部依赖。Python 3.7 及以上即可。pipinstall--upgradepip pipinstall--upgradepymupdf预编译 wheel 覆盖 Windows32/64 位、Linux64 位 Intel 和 ARM、macOS64 位 Intel。如果 pip 在本平台找不到匹配的 wheel会从源码编译只要求系统装了 SWIG。几个可选增强Pillow直接用 pillow 做图片输出fontTools字体子集化新建 PDF 时显著缩小体积pymupdf-fonts提供字体用于文本输出Tesseract-OCROCR 能力需单独安装 Tesseract 并设TESSDATA_PREFIX环境变量4、适合什么场景自动化文档处理流程用 PyMuPDF 替代多个工具的串联。比如批量提取 PDF 中的图片和文字一个库打通从 PDF 中提取结构化数据它的文本提取默认保留版式不像某些方案输出结果是打乱的做文档转换管线支持的输入输出格式够广PDF 生成、合并、拆分、加水印这类运维脚本需要 OCR 的文档数字化项目对图片做格式转换不想引入额外图形库的场景5、许可和注意事项PyMuPDF 使用 AGPL 开源协议。用于商业项目时要评估 AGPL 对衍生代码的要求。AGPL 的 copyleft 范围比 MIT 或 Apache 更大如果你的产品是闭源的需要确认合规。如果 AGPL 与你的使用场景有冲突Artifex 提供商业许可。这个库从 2016 年起就在 PyPI 上持续维护文档用 Sphinx 生成托管在 Read the Docs含教程和 FAQ 章节。遇到问题可以通过 Discussions 和 Issues 找维护者。文档用 Sphinx 生成托管在 Read the Docs含教程和 FAQ 章节。遇到问题可以通过 Discussions 和 Issues 找维护者。