zoukankan      html  css  js  c++  java
  • python识别pdf:非OCR

    # pip3 install pdfminer3k
    
    
    from pdfminer.pdfparser import PDFParser,PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LTTextBoxHorizontal,LAParams
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    
    '''
     解析pdf 文本
    '''
    
    # path = r'D:/JBK/2c.pdf'  # 这是多列的论文格式
    # path = r'D:/JBK/55.pdf'  # 这是有页眉和表格和可见超链接的
    path = r'D:/Users/FengZH2/Desktop/ATL 5A定义及案例分析.pdf'  # 这是有不可见超链接的
    # path = r'D:/JBK/120.pdf'  # 这是有
    
    
    
    
    
    def parse():
        fp = open(path, 'rb') # 以二进制读模式打开
        #用文件对象来创建一个pdf文档分析器
        praser = PDFParser(fp)
        # 创建一个PDF文档
        doc = PDFDocument()
        # 连接分析器 与文档对象
        praser.set_document(doc)
        doc.set_parser(praser)
    
        # 提供初始化密码
        # 如果没有密码 就创建一个空的字符串
        doc.initialize()
    
        # 检测文档是否提供txt转换,不提供就忽略
        if not doc.is_extractable:
            raise PDFTextExtractionNotAllowed
        else:
            # 创建PDf 资源管理器 来管理共享资源
            rsrcmgr = PDFResourceManager()
            # 创建一个PDF设备对象
            laparams = LAParams()
            device = PDFPageAggregator(rsrcmgr, laparams=laparams)
            # 创建一个PDF解释器对象
            interpreter = PDFPageInterpreter(rsrcmgr, device)
    
    
            # 循环遍历列表,每次处理一个page的内容
            for page in doc.get_pages(): # doc.get_pages() 获取page列表
                interpreter.process_page(page)
                # 接受该页面的LTPage对象
                layout = device.get_result()
                # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性,
    
    
                for x in layout:
                    # if (isinstance(x, LTTextBoxHorizontal)):
                    # print(x)
                    if (isinstance(x, LTTextBoxHorizontal )):
                        results = x.get_text()
                        print(results)
    
    
    
    if __name__ == '__main__':
        parse()

    读取pdf指定内容参考

  • 相关阅读:
    边长为n的正六边形
    simsimi无限次数api微信公众平台
    仿QQ空间送礼物功能
    asp.net动态输出404
    瀑布流布局并实现自动加载
    微信浏览器的HTTP_USER_AGENT
    AutoIt学习系列:目录
    PDA开发系列:Google地图接口
    WinCE、Windows Mobile GPRS连接类
    PDA开发系列:数据库的选择
  • 原文地址:https://www.cnblogs.com/yukit/p/13683908.html
Copyright © 2011-2022 走看看