当前位置: 首页 > news >正文

通过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:保存裁剪后的图像。

代码示例:

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)

运行后,会提示:

pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?

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

brew install poppler

http://www.lryc.cn/news/437135.html

相关文章:

  • Leetcode Hot 100刷题记录 -Day12(轮转数组)
  • GitHub每日最火火火项目(9.13)
  • 力扣--649.Dota2参议院
  • vim 安装与配置教程(详细教程)
  • 【WPF】Popup的使用
  • 力扣刷题之2576.求出最多标记下标
  • 黑马JavaWeb开发笔记16——请求(postman、简单参数、实体参数、@RequestParam映射)
  • Corrupt block relative dba: 0x02c0b382 (file 11, block 45954)
  • 二叉排序树在实际生活应用中作用
  • 单例模式的学习
  • 54 mysql 中各种 timeout - connect/wait/interactive/read/write_timeout
  • 实战案例(5)防火墙通过跨三层MAC识别功能控制三层核心下面的终端
  • 【智能流体力学】数值模拟中的稳态和瞬态
  • Vue-Route4 ts
  • sizeof和strlen的小知识
  • Java项目: 基于SpringBoot+mybatis+maven宠物咖啡馆平台(含源码+数据库+毕业论文)
  • 戴尔14代服务器配置IDRAC9远程配置说明
  • 如何让你家里的电脑连接公司的远程桌面
  • 软件:分享8个常用视频剪辑免费软件,你都用过吗?
  • TS 常用类型
  • 半导体芯闻--20240913
  • C盘空间不足如何解决?解决C盘空间不足的7个方法
  • 比 GPT-4 便宜 187 倍的Mistral 7B (非广告)
  • FFmpeg与OpenCV联合开发
  • Docker 部署 Redis (图文并茂超详细)
  • Docker基础-Docker Compose使用
  • GPT撰写开题报告教程——课题确定及文献调研
  • SprinBoot+Vue高校就业管理系统的设计与实现
  • 【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)
  • 判断当前用户登录时常是否超过两个小时