• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python解析PDF程序代码

    说在前面

    和word的文本相比PDF更类似于一张张图片,图上放着一个个文字。对其的解析是将图片上的文字提取到text文件中,方便之后的分析。

    添加依赖

    在python的环境中安装PDFminer3k,不要装错了,一开始我装的是PDFminer,结果有几个包不能用
    pip install pdfminer3k

    源程序代码

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    # pip3 install pdfminer3k
    
    import os
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LAParams, LTTextBoxHorizontal
    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter, PDFTextExtractionNotAllowed
    from pdfminer.pdfdevice import PDFDevice
    
    
    def read_pdf(pdf_name, result_name):
        # 以二进制读模式打开
        fp = open(pdf_name, 'rb')
        # 用文件对象来创建一个pdf文档分析器
        parser = PDFParser(fp)
        # 创建一个pdf文档
        doc = PDFDocument()
        # 连接分析器 与文档对象
        parser.set_document(doc)
        doc.set_parser(parser)
        # 提供初始密码,如果没有密码 就创建一个空的字符串
        doc.initialize('')
        # 检测文档是否提供txt转换,不提供就抛出异常
        if not doc.is_extractable:
            raise PDFTextExtractionNotAllowed
        # 创建PDf 资源管理器 来管理共享资源
        rsrcmgr = PDFResourceManager()
        # 创建一个PDF设备对象
        laparams = LAParams()
        device = PDFPageAggregator(rsrcmgr, laparams=laparams)
        # 创建一个PDF解释器对象
        interpreter = PDFPageInterpreter(rsrcmgr, device)
    
        with open(result_name, "w", encoding="u8") as fd_out:
            # 循环遍历列表,每次处理一个page的内容
            for i, page in enumerate(doc.get_pages(), 1):
                index = "===========《第{}页》===========".format(i)
                print(index)
                fd_out.write(index + "\n")
                interpreter.process_page(page)
                # 接受该页面的LTPage对象
                layout = device.get_result()
                for x in layout:
                    # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox,
                    # LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性
                    if not isinstance(x, LTTextBoxHorizontal):
                        continue
                    results = x.get_text()
                    print(results)
                    fd_out.write(results)
    
    if __name__ == '__main__':
    
        # 获取读取文件夹
        filePath = '../PDFfile'
        #遍历文件夹
        for i,j,k in os.walk(filePath):
            for m in k:
                # 格式化输出的名称和地址
                result = '../TextFile/' + m[:-4] + '.txt'
                # 格式化源文件路径
                fileName = i + '/' + m
                # 调用函数解析
                read_pdf(fileName, result)

    参考以下代码内容:python 读取pdf文本内容

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    # pip3 install pdfminer3k
      
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LAParams, LTTextBoxHorizontal
    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter, PDFTextExtractionNotAllowed
    from pdfminer.pdfdevice import PDFDevice
     
    def read_pdf(pdf_name, result_name):
        # 以二进制读模式打开
        fp = open(pdf_name, 'rb')
        # 用文件对象来创建一个pdf文档分析器
        parser = PDFParser(fp)
        # 创建一个pdf文档
        doc = PDFDocument()
        # 连接分析器 与文档对象
        parser.set_document(doc)
        doc.set_parser(parser)
        # 提供初始密码,如果没有密码 就创建一个空的字符串
        doc.initialize('')
        # 检测文档是否提供txt转换,不提供就抛出异常
        if not doc.is_extractable:
            raise PDFTextExtractionNotAllowed
        # 创建PDf 资源管理器 来管理共享资源
        rsrcmgr = PDFResourceManager()
        # 创建一个PDF设备对象
        laparams = LAParams()
        device = PDFPageAggregator(rsrcmgr, laparams=laparams)
        # 创建一个PDF解释器对象
        interpreter = PDFPageInterpreter(rsrcmgr, device)
         
        with open(result_name,"w",encoding="u8") as fd_out:
            # 循环遍历列表,每次处理一个page的内容
            for i,page in enumerate(doc.get_pages(),1):
                index = "===========《第{}页》===========".format(i)
                print(index)
                fd_out.write(index + "\n")
                interpreter.process_page(page)
                # 接受该页面的LTPage对象
                layout = device.get_result()
                for x in layout:
                    # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox,
                    # LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性
                    if not isinstance(x, LTTextBoxHorizontal):
                        continue
                    results = x.get_text()
                    print(results)
                    fd_out.write(results)   
                           
    if __name__ == '__main__':
        pdf_name = 'test.pdf'
        result = 'test.txt'
        read_pdf(pdf_name, result)

    以上就是python解析PDF的详细内容,更多关于python解析PDF的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • python实现csdn全部博文下载并转PDF
    • Python合并多张图片成PDF
    • Python提取PDF指定内容并生成新文件
    • 详解用Python把PDF转为Word方法总结
    • python操作mysql、excel、pdf的示例
    • python pdfkit 中文乱码问题的解决方案
    • python 三种方法提取pdf中的图片
    • Python实现给PDF添加水印的方法
    • Python读取pdf表格写入excel的方法
    • Python 多张图片合并成一个pdf的参考示例
    上一篇:Python快速将ppt制作成配音视频课件的操作方法
    下一篇:用python搭建一个花卉识别系统
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python解析PDF程序代码 python,解析,PDF,程序,代码,