python PFD-表格处理

https://pythondict.com/ai/camelot/

pdf表格处理模块:import camelot

---------------------------------------------------------------------------------

pdf第三方库比较:

https://dothinking.github.io/2021-01-02-Python%E5%A4%84%E7%90%86PDF%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93%E5%AF%B9%E6%AF%94/

 

----------------------------

https://blog.csdn.net/fenglepeng/article/details/109002534

 

# encoding: utf-8
import sys
import importlib
importlib.reload(sys)
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
 
path ="C:\\Users\\admin\\Desktop\\t.pdf"
def parse():
    fp = open(path, 'rb') 
    #用文件对象来创建一个pdf文档分析器PDFParser
    praser = PDFParser(fp)
    # 创建一个PDF文档PDFDocument
    doc = PDFDocument()
    # 连接分析器 与文档对象
    praser.set_document(doc)
    doc.set_parser(praser)
 
    # 提供初始化密码,如果没有密码 就创建一个空的字符串
    doc.initialize()
 
    # 检测文档是否提供txt转换,不提供就忽略
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    else:
        # 创建PDf 资源管理器 来管理共享资源PDFResourceManager
        rsrcmgr = PDFResourceManager()
        # 创建一个PDF设备对象LAParams
        laparams = LAParams()
        # 创建聚合器,用于读取文档的对象PDFPageAggregator
        device = PDFPageAggregator(rsrcmgr, laparams=laparams)
        # 创建一个PDF解释器对象,对文档编码,解释成Python能够识别的格式:PDFPageInterpreter
        interpreter = PDFPageInterpreter(rsrcmgr, device)
 
        # 循环遍历列表,每次处理一个page的内容
        for page in doc.get_pages(): # doc.get_pages() 获取page列表
            # 利用解释器的process_page()方法解析读取单独页数
            interpreter.process_page(page)
            # 这里layout是一个LTPage对象,里面存放着这个page解析出的各种对象,一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal等等,想要获取文本就获得对象的text属性,
            # 使用聚合器get_result()方法获取页面内容
            layout = device.get_result()
            for x in layout:
                if (isinstance(x, LTTextBoxHorizontal)):
                    #需要写出编码格式
                    with open(r'C:\Users\admin\Desktop\1.txt', 'a',encoding='utf-8') as f:
                        results = x.get_text()
                        f.write(results + '\n')
 
if __name__ == '__main__':
    parse()

 

posted @ 2022-04-21 18:00  小毛编  阅读(54)  评论(0编辑  收藏  举报