• python使用第三方库PyPDF2、PDFMiner或pdfplumber来解析PDF文件


    使用第三方库PyPDF2、PDFMiner或pdfplumber来解析PDF文件可以实现PDF文件的内容提取、搜索和修改等功能。下面是使用PDFMiner来解析PDF文件的安装说明和代码示例:

    PDFMiner

    下面是一些PDFMiner的常见操作:

    1.安装PDFMiner库:在Python环境中,可以使用pip命令安装PDFMiner库。

    2.导入PDFMiner库:在Python程序中,首先需要导入PDFMiner库,以便在程序中使用PDFMiner相关的函数和类。

    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.converter import TextConverter, PDFPageAggregator
    from pdfminer.layout import LAParams, LTTextBox, LTTextLine
    from pdfminer.pdfpage import PDFPage
    from pdfminer.pdfparser import PDFParser
    from pdfminer.pdfdocument import PDFDocument
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.打开PDF文件:使用PDFParser库中的PDFParser()函数打开PDF文档,并使用PDFDocument()函数解析PDF文档。

    with open('example.pdf', 'rb') as file:
        parser = PDFParser(file)
        document = PDFDocument(parser)
    
    • 1
    • 2
    • 3

    4.获取PDF文件元素:使用PDFResourceManager()函数和PDFPageInterpreter()函数实例化资源管理器和页面解释器对象。使用PDFPage.get_pages()函数获取PDF页面,并使用PDFPageAggregator()类获取页面元素。

    resource_manager = PDFResourceManager()
    device = PDFPageAggregator(resource_manager, laparams=LAParams())
    interpreter = PDFPageInterpreter(resource_manager, device)
    
    for page in PDFPage.get_pages(document):
        interpreter.process_page(page)
        layout = device.get_result()
    
        for element in layout:
            if isinstance(element, (LTTextBox, LTTextLine)):
                print(element.get_text().strip())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5.将PDF文件转换为文本:使用TextConverter()函数将PDF文件转换为纯文本。

    from io import StringIO
    
    output_string = StringIO()
    with open('example.pdf', 'rb') as file:
        parser = PDFParser(file)
        document = PDFDocument(parser)
    
        device = TextConverter(resource_manager, output_string, laparams=LAParams())
        interpreter = PDFPageInterpreter(resource_manager, device)
    
        for page in PDFPage.get_pages(document):
            interpreter.process_page(page)
        
        text = output_string.getvalue()
        print(text.strip())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    PDFMiner是一个强大的工具,可以处理PDF文档中的各种元素,例如文本、图像和形状。可以使用上述操作来提取PDF文件中的文本和数据。

    PyPDF2

    以下是使用PyPDF2进行一系列操作的详细要求:

    1. 安装PyPDF2

    使用pip安装PyPDF2:

    pip install PyPDF2
    
    • 1
    1. 打开PDF文件

    使用open方法打开PDF文件:

    import PyPDF2
    
    pdf_file = open('example.pdf', 'rb') # 'rb'表示以二进制打开文件
    
    • 1
    • 2
    • 3
    1. 读取PDF文件内容

    使用PdfFileReader()方法读取PDF文件内容:

    pdf_reader = PyPDF2.PdfFileReader(pdf_file)
    
    • 1
    1. 获取PDF文件信息

    可以使用PdfFileReader()方法获取PDF文件的信息:

    pdf_info = pdf_reader.getDocumentInfo()
    
    print(pdf_info)
    
    • 1
    • 2
    • 3
    1. 获取PDF页数

    可以使用getNumPages()方法获取PDF文件的页数:

    page_count = pdf_reader.getNumPages()
    
    print(page_count)
    
    • 1
    • 2
    • 3
    1. 获取PDF特定页面内容

    可以使用getPage()方法获取PDF文件的特定页面:

    page = pdf_reader.getPage(0)
    
    print(page.extractText())
    
    • 1
    • 2
    • 3
    1. 合并PDF文件

    可以使用PdfFileMerger()方法来合并多个PDF文件:

    pdf_merger = PyPDF2.PdfFileMerger()
    
    pdf_merger.append('file1.pdf')
    pdf_merger.append('file2.pdf')
    
    pdf_merger.write('merged_file.pdf')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 拆分PDF文件

    可以使用PdfFileWriter()方法来拆分PDF文件:

    pdf_writer = PyPDF2.PdfFileWriter()
    
    for page_num in range(page_count):
        page = pdf_reader.getPage(page_num)
        pdf_writer.addPage(page)
    
        output_file_name = f'output_{page_num}.pdf'
        with open(output_file_name, 'wb') as output_file:
            pdf_writer.write(output_file)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 加密PDF文件

    可以使用encrypt()方法加密PDF文件:

    pdf_writer = PyPDF2.PdfFileWriter()
    
    for page_num in range(page_count):
        page = pdf_reader.getPage(page_num)
        pdf_writer.addPage(page)
    
    pdf_writer.encrypt('password')
    
    with open('encrypted_file.pdf', 'wb') as output_file:
        pdf_writer.write(output_file)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 解密PDF文件

    可以使用PdfFileReader()方法来解密PDF文件:

    pdf_reader = PyPDF2.PdfFileReader(open('encrypted_file.pdf', 'rb'))
    
    if pdf_reader.isEncrypted:
        pdf_reader.decrypt('password')
    
    print(pdf_reader.getPage(0).extractText())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上述便是使用PyPDF2进行一系列操作的详细要求。

    pdfplumber

    下面是PDFPlumber的一些操作:

    1. 安装PDFPlumber

    要使用PDFPlumber,需要先安装它。可以使用Python的包管理工具pip来安装PDFPlumber。

    pip install pdfplumber
    
    • 1
    1. 打开PDF文件

    使用PDFPlumber打开一个PDF文件很简单。只需要传入文件路径即可。

    import pdfplumber
    
    # 打开PDF文件
    with pdfplumber.open("my_file.pdf") as pdf:
        # some code here
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 获取页面数量

    可以使用PDF对象的pages属性获取PDF文件的页面数量。

    import pdfplumber
    
    with pdfplumber.open("my_file.pdf") as pdf:
        # 获取PDF文件的页面数量
        num_pages = len(pdf.pages)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 提取页面文本

    可以使用extract_text()方法提取PDF页面的文本内容。

    import pdfplumber
    
    with pdfplumber.open("my_file.pdf") as pdf:
        # 获取页面对象
        page = pdf.pages[0]
        # 提取页面的文本内容
        text = page.extract_text()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 提取表格数据

    可以使用extract_table()方法提取PDF页面中的表格数据。

    import pdfplumber
    
    with pdfplumber.open("my_file.pdf") as pdf:
        # 获取页面对象
        page = pdf.pages[0]
        # 提取页面中的表格数据
        table = page.extract_table()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 提取页面图片

    可以使用images属性提取PDF页面中的图片。

    import pdfplumber
    
    with pdfplumber.open("my_file.pdf") as pdf:
        # 获取页面对象
        page = pdf.pages[0]
        # 提取页面中的图片
        images = page.images
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 搜索文本

    可以使用search()方法在PDF页面中搜索关键字并返回出现的所有位置。

    import pdfplumber
    
    with pdfplumber.open("my_file.pdf") as pdf:
        # 获取页面对象
        page = pdf.pages[0]
        # 在页面中搜索关键字
        matches = page.search("关
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    大数据-Big Data(二):核心技术详解
    react 或者 vue,如何做 SEO 优化?
    外贸全流程30个邮件模板分享
    高通camera之对camx架构的浅析
    递归为什么这么难?一篇文章带你了解递归
    docker安装开发常用软件MySQL,Redis,rabbitMQ
    Vue3.0种中新增的teleport和suspence标签
    第三方API接口的好处以及免费API接口推荐
    【鸿蒙 HarmonyOS 4.0】常用组件:List/Grid/Tabs
    [Docker] Docker常用命令
  • 原文地址:https://blog.csdn.net/weixin_45171937/article/details/132743613