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

Written by

in

文章目录
  • 提取文字和转图片使用的是fitz模块,模块安装: pip install PyMuPDF 提取文字 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坐标 转图片 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提取文字/转图片
    • 二、分割、合并PDF文档
      • 2.1 使用PyPDF2模块
      • 2.2 使用fitz模块

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

    pip install PyMuPDF

    提取文字

    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坐标

    转图片

    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

    模块安装:

    pip install PyPDF2

    分割、合并PDF

    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)

    模块安装:

    pip install PyMuPDF

    示例:

    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模块。

    到此这篇关于python实现PDF文档提取,分割与合并操作的文章就介绍到这了,更多相关python PDF文档操作内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python合并多个PDF文件的完整指南与实践
    • 使用Python对PDF进行拆分与合并的操作方法
    • Python合并两个PDF文件的两种实现方案
    • 基于Python实现进阶版PDF合并/拆分工具
    • Python实现PDF信息的精准提取与结构化输出
    • python实现简单提取PDF文档内文字
    • Python实现快速从指定页面PDF中提取文本
    • 通过Python提取PDF表格数据的流程步骤

    站内搜索