通过python提取PDF文件指定页的图片

整体思路

要从 PDF 文件中提取指定页和指定位置的图片,可以分几个步骤来实现:

1.1 准备所需工具与库

在 Python 中处理 PDF 和图像时,需要使用几个库:

  • PyMuPDF (fitz):用于读取和处理 PDF 文件,可以精确获取指定页面内容。
  • Pillow:处理图像,用于裁剪和保存图片。
  • pdf2image:将 PDF 页面转换为图像格式,方便进一步处理。
1.2 基本流程
  1. 读取 PDF 文件 :使用 PyMuPDF 读取 PDF 文件,找到指定页。
  2. 获取页面图像 :使用 pdf2image 将目标页转换为图像。
  3. 确定图片区域:使用坐标来指定图像中的区域。该区域可以通过手动确定,或者通过图像识别技术(如 OCR)来定位。
  4. 提取并保存图片 :使用 Pillow 裁剪出指定区域,并保存图像。
1.3 处理步骤
  • Step 1 :使用 PyMuPDF 打开 PDF,找到目标页。
  • Step 2:将该页转换为图像。
  • Step 3:根据坐标裁剪指定位置的图像。
  • Step 4:保存裁剪后的图像。

代码示例:

python 复制代码
import fitz  # PyMuPDF
from pdf2image import convert_from_path
from PIL import Image

# Step 1: 打开 PDF 文件并定位指定页面
def extract_image_from_pdf(pdf_path, page_number, crop_box, output_image_path):
    # Step 2: 将目标页转换为图像
    pages = convert_from_path(pdf_path, dpi=300)
    target_page = pages[page_number - 1]  # Python的索引从0开始

    # Step 3: 使用 Pillow 裁剪图像
    left, top, right, bottom = crop_box  # 指定区域的坐标
    cropped_image = target_page.crop((left, top, right, bottom))

    # Step 4: 保存裁剪后的图像
    cropped_image.save(output_image_path)
    print(f"图像已保存到: {output_image_path}")

# 示例使用
pdf_path = "/Users/linql/Desktop/3.5_python/0001_26110523.pdf"  # PDF 文件路径
page_number = 4  # 要提取的页码
crop_box = (10, 700,2800, 3100)  # 图像的裁剪区域 (left, top, right, bottom)
output_image_path = "output_image.png"  # 输出图像的路径

extract_image_from_pdf(pdf_path, page_number, crop_box, output_image_path)

运行后,会提示:

bash 复制代码
pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?

是因为:# macOS 需要安装 poppler 用于 pdf2image

bash 复制代码
brew install poppler
相关推荐
github.com/starRTC1 小时前
Claude Code中英文系列教程35:通过API使用Skills创建ppt,word文档和pdf
pdf·word·powerpoint·ai编程
小草cys1 小时前
opencode/claude code自动写书啦
人工智能·自动化·大模型
feasibility.3 小时前
AI自动化的陷阱:2026年开年ai爆发潮下的冷思考
人工智能·经验分享·自动化·程序员创富·vibe coding·opencode·openclaw
工业HMI实战笔记3 小时前
图标标准化:一套可复用的工业图标库设计指南
前端·ui·性能优化·自动化·汽车·交互
乾元3 小时前
数据投毒:如何通过训练数据污染埋下“后门”
运维·人工智能·网络协议·安全·网络安全·系统架构·自动化
rpa研究爱好者4 小时前
利用灵梭rPA进行手机群控自动化采集竞品价格与营销活动数据
智能手机·自动化·rpa
工业HMI实战笔记4 小时前
新能源行业HMI:光伏电站与储能系统监控界面
ui·性能优化·自动化·汽车·交互
键盘鼓手苏苏5 小时前
Flutter for OpenHarmony:cider 自动化版本管理与变更日志生成器(发布流程标准化的瑞士军刀) 深度解析与鸿蒙适配指南
运维·开发语言·flutter·华为·rust·自动化·harmonyos
初恋叫萱萱21 小时前
破局海量日志噪音:基于 Rust + DeepSeek 实现微服务级联故障的精准定位与自动化修复
微服务·rust·自动化
钛态1 天前
Flutter for OpenHarmony:mason_cli 拒绝重复劳动,用砖块构建你的代码模板(强大的脚手架生成器) 深度解析与鸿蒙适配指南
flutter·ui·华为·自动化·harmonyos