简介
对pdf文件的常见操作需求包括读取pdf中的文字图表,新建或截取pdf,pdf与其他格式的转换等。通过代码可更灵活的实现各种功能需求。在众多可处理pdf的包中选择PyMuPDF进行介绍。PyMuPDF是MuPDF的python接口,可处理 的文件格式后缀包括 pdf,xps,oxps,cbz,fb2, epub。另外也可处理10余种常见图片格式,包括:png,jpg,bmp,tiff等。
具体功能
- 搜索文本
- 提取文本和图片
- 转换格式为 html,xml,json,txt
- 结合Tesseract使用,可对图片进行OCR 文本提取
- 可作为图片转换器,将读入的文件转换为PNG,PNM,PAM或 Photoshop文件,同时也可以与PIL/Pillow结合使用进行图片操作
- 对于pdf文件,可进行文件和页面的创建,合并和拆分。同时页面可进行插入,删除,替换或重新排列等操作
- 可将pdf重新格式化,以使其能够双面打印,色调分离,添加logo或水印等
- 支持加密,解密,权限设置等密码保护措施
安装
pip install pymupdf 或 PyMuPDF
由于历史原因,导入PyMuPDF 包的语句为:
import fitz
常用操作
以下以 1.18.17 版本为例介绍。
-
读取pdf文件
可直接打开支持的文件类型,输入文件名即可。也可以打开已经由其他工具读取的文件流。打开后,可对其中的页面进行操作。
doc = fitz.open(filename)
# 先从zip压缩文件读取,再使用fitz打开
doc = fitz.open(stream=zfile.read(pdf), filetype="pdf")
# 获取pdf中页面
first_page = doc.load_page(0)
# 或直接遍历
for page in doc:
# do something
-
提取pdf中全部文本或搜索文本
遍历所有页面,获取文本。搜索文本只能在单个页面上进行,可通过遍历获取全部结果。
texts = ""
with fitz.open