返回顶部
分享到

python实现PDF文档提取,分割与合并操作

python 来源:互联网 作者:佚名 发布时间:2026-02-17 22:51:19 人浏览
摘要

一、PDF提取文字/转图片 提取文字和转图片使用的是fitz模块,模块安装: 1 pip install PyMuPDF 提取文字 1 2 3 4 5 6 7 8 9 10 11 12 13 import fitz pdf = fitz.open(xxxx.pdf) # xxxx.pdf是pdf文件名或路径 pages = pdf.pag

一、PDF提取文字/转图片

提取文字和转图片使用的是fitz模块,模块安装:

1

pip install PyMuPDF

提取文字

1

2

3

4

5

6

7

8

9

10

11

12

13

import fitz

  

 

pdf = fitz.open('xxxx.pdf')  # xxxx.pdf是pdf文件名或路径

pages = pdf.page_count  # 获取pdf页数

page = pdf[n]  # 获取pdf第n页,n为页码,从0开始

 

x = page.rect[2]  # 获取页宽

y = page.rect[3]  # 获取页高

 

content = page.get_text()  # 提取这一整页的文字

# 获取指定区域文字

content = page.get_text(clip=(x1, y1, x2, y2))  # x1为指定区域左上角x坐标,y1区域左上角y坐标,x2为区域右下角x坐标,y2区域右下角y坐标

转图片

1

2

3

4

5

6

7

8

9

10

11

import fitz

  

 

pdf = fitz.open('xxxx.pdf')  # xxxx.pdf是pdf文件名或路径

page = pdf[n]  # 获取pdf第n页,n为页码,从0开始

 

z_x = 3  # 宽度放大比例

z_y = 3  # 高度放大比例

mat = fitz.Matrix(z_x, z_y)

pix = page.get_pixmap(matrix=mat)

pix.save('xxxx.png')  # 保存图片为xxxx.png

二、分割、合并PDF文档

2.1 使用PyPDF2模块

模块安装:

1

pip install PyPDF2

分割、合并PDF

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import PyPDF2

 

 

pdf = PyPDF2.PdfReader('xxxx.pdf')  # 打开名为xxxx.pdf的PDF文档

pages = pdf.pages  # PDF总页数

 

writer = PyPDF2.PdfWriter()  # 创建新的PDF变量

 

writer.add_page(pdf.pages[0])  # 将第1页分割到新的PDF

writer.add_page(pdf.pages[1])  # 将第2页分割到新的PDF

with open('xxxx2.pdf', 'wb') as output_pdf:  # 将分割出来的页保存为新的PDF文件xxxx2.pdf

    writer.write(output_pdf)

 

writer2 = PyPDF2.PdfWriter()  # 创建新的PDF变量

writer2.add_page(pdf.pages[2])  # 将第3页分割到新的PDF

writer2.add_page(pdf.pages[99])  # 将第100页分割到新的PDF

with open('xxxx3.pdf', 'wb') as output_pdf:  # 将分割出来的页保存为新的PDF文件xxxx3.pdf

    writer2.write(output_pdf)

2.2 使用fitz模块

模块安装:

1

pip install PyMuPDF

示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import fitz

 

 

writer = fitz.open()  # 创建一个空白pdf

 

# 打开1.pdf,并写入新创建的pdf中

pdf = fitz.open('1.pdf')

writer.insert_pdf(pdf, start_at=writer.page_count)

pdf.close()

# 打开2.pdf,并将第1-3页写入新创建的pdf中(页码从0起算)

pdf = fitz.open('2.pdf')

writer.insert_pdf(pdf, start_at=writer.page_count, from_page=1, to_page=3)

pdf.close()

# 打开3.pdf,并写入新创建的pdf中

pdf = fitz.open('3.pdf')

writer.insert_pdf(pdf, start_at=writer.page_count)

pdf.close()

 

writer.save('xxxx.pdf')  # 保存为xxxx.pdf

writer.close()

分割跟合并PDF的原理是一样的,前者是打开一个PDF文档,创建并保存为多个PDF文档;后者是打开多个PDF文档,创建并保存为一个PDF文档。

使用PyPDF2模块合并pdf文件时常常遇到乱码问题,因此本人更推荐使用fitz模块。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • python实现PDF文档提取,分割与合并操作
    一、PDF提取文字/转图片 提取文字和转图片使用的是fitz模块,模块安装: 1 pip install PyMuPDF 提取文字 1 2 3 4 5 6 7 8 9 10 11 12 13 import fitz pdf = f
  • Python中enumerate函数的巧妙用法
    在算法题目中,处理数组(List)、字符串、矩阵等可迭代对象时,同时获取索引和元素值 是高频需求 比如找目标元素的位置、双指针遍历
  • Python中的断言机制的介绍
    想象你正在开发一个电商系统,有个计算商品折扣的函数。正常情况下,折扣率应该在0到1之间,但某天测试时发现某个商品折扣变成了1.
  • Python使用MySQL数据库进行事务处理示例
    一、事务核心概念(先理解再实操) 事务(Transaction)是数据库操作的最小逻辑单元,遵循ACID 原则: 原子性(Atomicity):要么全部执行成
  • Python多进程与多线程适用场景案例
    你想明确多进程和多线程各自的适用场景,核心是要结合任务类型、资源需求、数据共享等维度来判断简单来说,IO密集型任务优先用多线程
  • 使用Python实现一个自动整理音乐文件脚本
    一、音乐文件管理的痛点与解决方案 现代音乐收藏常面临杂乱无章的问题:同一艺术家的歌曲散落在不同文件夹,专辑被错误命名,甚至文
  • Python中as关键字的作用实例介绍
    在 Python 中,as是一个关键字,核心语义是将某个对象绑定到指定的变量(或给对象起别名),从而简化代码操作、访问对象属性。它主要应
  • Python使用urllib和requests发送HTTP请求的方法
    本文通过天气API示例演示了实际应用,并提供了超时设置、错误处理和JSON解析等实用技巧。推荐大多数场景使用requests库,同时强调了异常
  • 在Mac上安装最新版本Python的方法

    在Mac上安装最新版本Python的方法
    所有最新的 MacOS(从 macOS 12.3 开始)都预装了 Python 版本(通常是 Python 2.x),但它已经过时并且不再受支持。要充分利用 Python 的功能,您
  • python serial模块使用方法
    在Python中实现串口通信,最常用且功能强大的库是pySerial(通常通过import serial导入) 。它支持跨平台操作(Windows、Linux、macOS),提供了完
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计