ai
  • index
  • cursor
  • vector
  • crawl
  • crawl-front
  • DrissionPage
  • logging
  • mysql
  • pprint
  • sqlalchemy
  • contextmanager
  • dotenv
  • Flask
  • python
  • job
  • pdfplumber
  • python-docx
  • redbook
  • douyin
  • ffmpeg
  • json
  • numpy
  • opencv-python
  • pypinyin
  • re
  • requests
  • subprocess
  • time
  • uuid
  • watermark
  • milvus
  • pymilvus
  • search
  • Blueprint
  • flash
  • Jinja2
  • secure_filename
  • url_for
  • Werkzeug
  • chroma
  • HNSW
  • pillow
  • pandas
  • beautifulsoup4
  • langchain-community
  • langchain-core
  • langchain
  • langchain_unstructured
  • libreoffice
  • lxml
  • openpyxl
  • pymupdf
  • python-pptx
  • RAGFlow
  • tabulate
  • sentence_transformers
  • jsonl
  • collections
  • jieba
  • rag_optimize
  • rag
  • rank_bm25
  • Hugging_Face
  • modelscope
  • all-MiniLM-L6-v2
  • ollama
  • rag_measure
  • ragas
  • ASGI
  • FastAPI
  • FastChat
  • Jupyter
  • PyTorch
  • serper
  • uvicorn
  • markdownify
  • NormalizedLevenshtein
  • raq-action
  • CrossEncoder
  • Bi-Encoder
  • neo4j
  • neo4j4python
  • matplotlib
  • Plotly
  • Streamlit
  • py2neo
  • abc
  • read_csv
  • neo4jinstall
  • APOC
  • neo4jproject
  • uv
  • GDS
  • heapq
  • 1. PyMuPDF简介
  • 2. 安装方法
  • 3. 基本用法
    • 3.1 打开PDF文件
    • 3.2 读取页面文本
    • 3.3 提取页面图片
  • 4. 进阶用法
    • 4.1 页面操作(插入、删除、复制)
    • 4.2 文本搜索与高亮
    • 4.3 添加文本注释
  • 5. 常见应用场景

1. PyMuPDF简介 #

PyMuPDF(fitz)是一个功能强大的PDF和电子书(XPS、EPUB等)处理库,支持文本、图片、页面等多种操作。

2. 安装方法 #

介绍如何安装PyMuPDF及其依赖。

# 安装PyMuPDF主库
pip install pymupdf

3. 基本用法 #

本节介绍如何用PyMuPDF打开PDF、读取文本和提取图片。

3.1 打开PDF文件 #

展示如何加载和打开PDF文档。

# 导入fitz模块
import fitz  # PyMuPDF的主模块

# 打开PDF文件(假设当前目录有example.pdf)
doc = fitz.open('example.pdf')

# 打印PDF总页数
print(doc.page_count)

# 关闭文档
doc.close()

3.2 读取页面文本 #

展示如何读取PDF某一页的文本内容。

# 导入fitz模块
import fitz

# 打开PDF文件
doc = fitz.open('example.pdf')

# 获取第1页(页码从0开始)
page = doc.load_page(0)

# 提取页面文本
text = page.get_text()

# 打印文本内容
print(text)

# 关闭文档
doc.close()

3.3 提取页面图片 #

展示如何提取PDF页面中的图片。

# 导入fitz模块
import fitz

# 打开PDF文件
doc = fitz.open('example.pdf')

# 获取第1页
page = doc.load_page(0)

# 遍历页面中的所有图片
for img in page.get_images():
    # 获取图片的xref编号
    xref = img[0]
    # 提取图片为字节流
    pix = fitz.Pixmap(doc, xref)
    # 保存为PNG文件
    if pix.n < 5:  # 彩色或灰度图像
        pix.save(f'image_{xref}.png')
    else:  # CMYK等特殊格式需转为RGB
        pix = fitz.Pixmap(fitz.csRGB, pix)
        pix.save(f'image_{xref}.png')
    # 释放资源
    pix = None

# 关闭文档
doc.close()

4. 进阶用法 #

本节介绍页面操作、文本搜索、添加注释和保存等高级用法。

4.1 页面操作(插入、删除、复制) #

展示如何对PDF页面进行插入、删除和复制。

# 导入fitz模块
import fitz

# 打开PDF文件
doc = fitz.open('example.pdf')

# 插入空白页到第2页前
page = doc.new_page(pno=1)

# 删除第1页
doc.delete_page(0)

# 复制第1页到末尾
doc.insert_pdf(doc, from_page=0, to_page=0, start_at=doc.page_count)

# 保存修改后的PDF
doc.save('modified.pdf')

# 关闭文档
doc.close()

4.2 文本搜索与高亮 #

展示如何搜索文本并添加高亮注释。

# 导入fitz模块
import fitz

# 打开PDF文件
doc = fitz.open('example.pdf')

# 获取第1页
page = doc.load_page(0)

# 搜索关键字"Python"
for inst in page.search_for('Python'):
    # 添加高亮注释
    highlight = page.add_highlight_annot(inst)

# 保存带高亮的PDF
doc.save('highlighted.pdf')

# 关闭文档
doc.close()

4.3 添加文本注释 #

展示如何在PDF页面添加文本注释。

# 导入fitz模块
import fitz

# 打开PDF文件
doc = fitz.open('example.pdf')

# 获取第1页
page = doc.load_page(0)

# 在指定位置添加文本注释
annot = page.add_text_annot((100, 100), '这是一个注释')
不行
# 保存带注释的PDF
doc.save('annotated.pdf')

# 关闭文档
doc.close()

5. 常见应用场景 #

PyMuPDF 常用于以下场景:

  • PDF文本和图片批量提取
  • PDF内容搜索与高亮
  • 自动化PDF批量处理与转换
  • 电子书内容分析与注释

访问验证

请输入访问令牌

Token不正确,请重新输入