使用 Python 从 PDF 文件中提取、转换图像

ops/2024/10/20 6:24:21/

目录:

    • 从 PDF 中提取图像
    • 将 PDF 页面转换为图像

本文的任务是从 PDF 文件中提取图像,并使用 Python 中将 PDF 页面转换为图像。为了实现使用 Python 从 PDF 文件中提取图像,需要安装使用 Fitz、PyMuPDF 库。

Fitz 库是一个图像处理库,主要用于打开 PDF、TIFF 和 JPEG 格式的图像,读取和写入 PDF 文件,提取 PDF 页面以及在页面上进行标记和注释。

PyMuPDF 是一个基于 Python 的开源 PDF 处理库,提供了一系列的 PDF 文档处理功能。

从 PDF 中提取图像

python">import fitz 
# 设置 PDF 文件路径
file = "6.pdf"
# 打开 PDF 文件 
pdf_file = fitz.open(file) 
# 遍历 PDF 页面 
for page_index in range(len(pdf_file)): # 获取 PDF 页面 page = pdf_file[page_index]# 获取页面上所有图像image_list = page.get_images() # 输出此页面中找到的图像数量if image_list: print( f"[+] 在页面:{page_index},总共发现 {len(image_list)} 张图片。") else: print(f"[+] 在页面:{page_index},没有发现图片。") for image_index, img in enumerate(page.get_images(), start=1): # 获取图像的XREF编号和图像数据xref = img[0] pix = fitz.Pixmap(pdf_file, xref)# 保存图像if str(fitz.csRGB) == str(pix.colorspace):img_path = f'image{page_index+1}_{xref}.png'pix.save(img_path)
print(f"[+] 已保存所有图片。") 

以上代码运行后会保存 PDF 文件中的所有图像并有以下输出:

python">[+] 在页面:0,总共发现 1 张图片。
[+] 在页面:1,没有发现图片。
[+] 已保存所有图片。

将 PDF 页面转换为图像

如果将 PDF 页面转换为图像,只需要遍历所有 PDF 页面,使用 get_pixmap() 方法将 PDF 转换为图像,然后保存图像。

python">import fitz 
doc = fitz.open('1.pdf') 
for page in doc: pix = page.get_pixmap(matrix=fitz.Identity, dpi=None, colorspace=fitz.csRGB, clip=None, alpha=True, annots=True) pix.save(f"pdfimage-{page.number}.png") 

以上代码将 PDF 页面转换为 PNG 图像,PNG 图像可以实现背景透明。如果需要保存 JPG 图像,需要去掉 get_pixmap() 中的参数 alpha=True。


http://www.ppmy.cn/ops/5665.html

相关文章

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

本题为洛谷&#xff1a; 本题非常简单&#xff0c;只需从小到大排序&#xff0c;再取前两项加到sum里&#xff0c;再次排序就好了&#xff1a; #include<iostream> #include<algorithm> using namespace std; int n,a[10001],sum; int main(){cin>>n;for(in…

vue3使用阿里oss上传资源(上传图片、视频、文件、pdf等等),删除oss资源。获取STS token的接口

vue3使用阿里oss上传资源 全部oss.ts代码如下&#xff1a; import OSS from "ali-oss";// 获取STS token export const getSTSToken async () > {const STS_TOKEN_URL "....."; // 获取STS token的接口&#xff0c;后端提供// fetch方式可按需更换成…

java+idea+mysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码

javaideamysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码 随着人工智能技术的快速发展&#xff0c;语音识别与自然语言理解技术的成熟应用&#xff0c;基于人工智能的智能导诊导医逐渐出现在患者的生活视角中&#xff0c;智能导诊系统应用到医院就医场景中&#xff0c…

蓝桥杯第十五界软件测试线下省赛题目分析及解决

PS 需要第十五界蓝桥杯被测系统或者功能测试模板、单元测试被测代码、自动化测试被测代码请加&#x1f427;:1940787338 备注&#xff1a;15界蓝桥杯省赛软件测试 题目1&#xff1a;功能测试 题目描述 ​ 某物流公司的货运收费标准根据重量、距离和节假日三个因素来确定。如…

【c++】vector的使用

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;我们本篇来到一个新的容器&#xff0c;vector的讲解和使用 目录 1.vector简单介绍2.vector的使用2.1构造函数2.2遍历vector2.3对容量操作2.4vector的增删查改 1.v…

3DGS渐进式渲染 - 离线生成渲染视频

总览 输入&#xff1a;环绕Object拍摄的RGB视频 输出&#xff1a;自定义相机路径的渲染视频&#xff08;包含渐变效果&#xff09; 实现过程 首先&#xff0c;编译3DGS的C代码&#xff0c;并跑通convert.py、train.py和render.py。教程如下&#xff1a; github网址&#xf…

Rokid AR Lite空间计算套装发布,软硬件全面升级推动居家、出行、户外场景大规模应用

4月20日&#xff0c;以“好玩、好看、好上头”为主题的Rokid Open Day 2024发布会在杭州举行&#xff0c;Rokid对外正式发布新一代AR Lite空间计算套装&#xff0c;分享了近期Rokid在AR开发者生态和数字文化领域的进展和成果&#xff0c;并宣布了多项跨行业重磅合作。作为中国代…

【架构】Elasticsearch+Logstash+Kibana架构

目录 什么是ELK ELK架构的应用场景 什么是ELK ELK是由Elasticsearch、Logstash和Kibana三个开源项目组成的技术栈&#xff0c;广泛用于搜索、日志管理和日志分析。这三个组件协同工作&#xff0c;提供了一个强大的方法来收集、存储、搜索和可视化日志数据和其他时间序列数据…