MuPDF 是一个 C/C++ 编写的跨平台 PDF 库,它提供强大的功能来处理 PDF 文件,包括提取文本、图像和元数据,以及支持PDF页面的添加、删除和旋转。PyMuPDF 是 MuPDF 的 Python 版本,允许 Python 程序使用 MuPDF 的强大功能。
首先,确保已经安装了PyMuPDF库。可以使用pip来安装:
pip install pymupdf
以下是使用 PyMuPDF 的简单示例:
打开和读取 PDF 文件
import fitz # 引入 PyMuPDF 库
# 打开 PDF 文件
doc = fitz.open("test.pdf")
# 输出文件信息
print(f"文件名称: {doc.name}")
print(f"页面数: {len(doc)}")
# 读取第一页
page = doc[0] # 获取第一页
text = page.get_text()
print(f"第一页文本:\n{text}")
提取PDF文本和图像
import fitz
doc = fitz.open("test.pdf")
page = doc[0]
# 提取文本
text = page.get_text()
print(text)
# 提取图片
for img in page.get_images():
imgf= img[0]
pix = fitz.Pixmap(doc, imgf)
pix.save(f"image_{imgf}.png")
给文档添加注释
import fitz
doc = fitz.open("test.pdf")
page = doc[0]
# 添加注释
annot = page.add_rect_annot(fitz.Rect(100, 100, 200, 200))
annot.set_text("这是一个注释")
# 保存修改后的 PDF 文件
doc.save("out.pdf")
转换 PDF 为图像
import fitz
doc = fitz.open("test.pdf")
page = doc[0]
# 将页面转换为 PNG 图像
pix = page.get_pixmap()
pix.save("image.png")
进行 OCR识别
import fitz # PyMuPDF 库
import pytesseract # 这里需要安装Tesseract OCR 库
# 确保已安装 Tesseract OCR 引擎并设置好环境变量
# 打开 PDF 文件
doc = fitz.open("my.pdf")
# 处理每一页
for page_num in range(len(doc)):
page = doc[page_num]
# 获取图像
pix = page.get_pixmap()
# 保存图像
image_path = f"page_{page_num + 1}.png"
pix.save(image_path)
# 使用 Tesseract 进行 OCR
text = pytesseract.image_to_string(image_path, lang='eng') # 设置语言
# 打印 OCR 结果
print(f"页面 {page_num + 1} 的文本:\n{text}")
# 可选:保存 OCR 结果到文本文件
with open(f"output_{page_num + 1}.txt", "w", encoding="utf-8") as f:
f.write(text)
关于更多使用PyMuPDF方法可以参考官方手册 https://pymupdf.readthedocs.io/en/latest
或者mupdf的官方文档 https://mupdf.com/docs/