python 提取pdf文件中的信息

python 读取pdf文件有3个扩展包   pdfminer3k(python2中为pdfminer)、fitz和pymupdf

1.pdfminer3k

读取并获得pdf文档中的信息:

from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter,PDFTextExtractionNotAllowed
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal,LAParams,LTTextLineHorizontal,LTFigure,LTRect,LTLine,LTCurve

#  文件对象
pd_file = open("d.pdf", "rb")

#  pdf文件解析对象
parser = PDFParser(pd_file)

# print(parser)
#  pdf文档对象
document = PDFDocument()
parser.set_document(document)
document.set_parser(parser)


#  初始化文档密码
document.initialize()
if document.is_extractable:
    print(True)
else:
    raise PDFTextExtractionNotAllowed
#  存储文档资源
src = PDFResourceManager()

#  设备对象
device = PDFPageAggregator(src,laparams=LAParams())

#  解释器对象

inter = PDFPageInterpreter(src,device)

pages = document.get_pages()

for page in pages:
    #print(page.contents)
    inter.process_page(page)
    layout = device.get_result()
    for x in layout:
        if isinstance(x, LTTextBoxHorizontal):
            print(str(x.get_text()))
        #t = dir(x)
        #print(t)
        #print(type(x))

以上代码属于搬运工 (~自带笑哭表情~~~)

上述代码中各个对象的作用:

文件解析对象(PDFParser):从文件中提取数据                                                 

文档对象(PDFDocument): 保存提取到的数据

资源对象(PDFResourceManager):保存共享内容

设备对象(PDFDevice):处理资源对象为我们所需要的格式

解释器对象(PDFPageInterpreter): 处理页面内容

python 提取pdf文件中的信息_第1张图片

layout : 包含文档的全部内容对象主要包含:

    LTPage:页面对象

    LTTextBox:代表一个区域内的文字信息,包含多个LTTextLine,get_text()方法可以获得文本内容。

    LTTextLine:代表一行文字信息,包含多个LTChar,get_text()方法可以获得文本内容。

    LTChar:代表一个字符信息,get_text()方法可以获得文本内容。

    LTAnno:代表文本中的字符的Unicode字符串。

    LTFigure:代表PDF的表单对象,可以包含图形或图片。

    LTImage:代表一个图片对象。

    LTLine : 代表一条直线。

    LTRect:代表一个矩形区域。

    LTCurve:代表一条曲线。

tip:LTTextBox、LTTextLine可以分别和Horizontal、Vertical 组合表示水平方向和垂直方向

python 提取pdf文件中的信息_第2张图片

文档对象(Document)常用属性和方法:

    doc.get_outlines(): 获取文档的目录数据

    doc.is_extractable(): 判断文档是否支持转文字

    doc.get_pages(): 获取所有页面对象

    doc.initialize():初始化文档密码

    doc.set_parser():绑定文档解析对像

内容对象(LTTextBox、LTTextLine、LTImage...等等)常用属性和方法:

    LTImage:

        LTImage.get_rawdata(): 获取图片数据

2. fitz 包:

   参考:https://blog.csdn.net/qq_15969343/article/details/81673302

3.pymupdf包:

   操作pdf文件,可以实现创建pdf文件、修改pdf文件等等。。功能强大。(以后补充...)

 

 

你可能感兴趣的:(python)