,,python使用pdfminer解析pdf文件的方法示例

,,python使用pdfminer解析pdf文件的方法示例

本文主要介绍python使用pdfminer解析pdf文件的方法的一个例子。边肖觉得挺好的,现在分享给你,给你参考。来和边肖一起看看吧。

最近要做一个从pdf文件中提取文本内容的工具,我大概查了一下,可以用python中的pdfminer实现。让我们来看看如何使用它。

PDFMiner是一个可以从PDF文档中提取信息的工具。与其他PDF相关工具不同,它完全专注于获取和分析文本数据。PDFMiner允许您获取文本在特定页面中的确切位置以及一些信息,如字体和行号。它包括一个PDF转换器,可以将PDF文件转换成HTML和其他格式。它还有一个扩展的PDF解析器,除了文本分析之外,还可以用于其他目的。

PDFMiner内置了两个有用的工具:pdf2txt.py和dumppdf.py

pdf2txt.py从PDF文件中提取所有文本内容。但是它不能识别画成图片的文字,这就需要特征识别。对于加密的PDF,您需要提供密码来解析它。对于没有提取权限的PDF文档,无法获取任何文本。

dumppdf.py将PDF文件内容更改为伪XML格式。这个程序主要用于调试,但也可能用于提取一些有意义的内容(比如图片)。

官方主页:https://euske.github.io/pdfminer/

其特点如下:1 .它是用python写的。(适用于2.4或更高版本)2 .解析、分析并转换为PDF文档。3.支持PDF-1.7规范。(差不多)4。支持中文、日文和韩文以及竖排书写脚本。5.支持各种字体类型(Type1、TrueType、Type3和CID)。6.支持基本加密(RC4)。7.PDF和HTML之间的转换。8.轮廓提取。9.标签内容提取。10.通过组合文本块来重建原始布局。

如果在Python中安装了pip模块,可以通过命令“python pip install pdfminer”自动安装pdfminer。

解析pdf文件用到的类:

从文件中获取数据

PDFDocument:保存采集的数据,该数据与PDFParser相关。

PDFPageInterpreter处理页面内容。

PDFDevice将其翻译成您需要的格式。

PDFResourceManager用于存储共享资源,如字体或图像。

当然,Python工具是使用pip安装的。

pip安装pdfminer

命令行方式

为了便于使用,pdfminer提供了一个命令行工具来直接转换pdf文件。使用方法如下:

pdf2txt.py path_to_pdf_file

编程方式

除了命令行模式,对于复杂的应用场景,pdfminer还提供了转换pdf文件的编程,主要通过以下类实现:

PDFParser:用于解析pdf文件。

PDFDocument:用于保存PDFParser解析的对象。

PDFPageInterpreter:用于处理解析后的文档页面内容。

PDFResourceManager:pdf共享资源管理器,用于存储共享资源,如字体或图像。

这里有一个例子:

#!/usr/bin/env python

# -*-编码:utf-8 -*-

从pdfminer.pdfparser导入pdfparser

从pdf miner . pdf文档导入pdf文档

从pdfminer.pdfpage导入pdfpage,PDFTextExtractionNotAllowed

从pdfminer.pdfinterp导入PDFResourceManager、PDFPageInterpreter

从pdfminer.converter导入PDFPageAggregator

从pdfminer.layout导入LAParams

进口StringIO

类PDFUtils():

def __init__(self):

及格

def pdf2txt(self,path):

输出=StringIO。斯特林乔

用open(路径,' rb ')作为f:

praser=PDFParser(f)

doc=PDFDocument(praser)

如果不是可提取文件:

引发PDFTextExtractionNotAllowed

pdfrm=PDFResourceManager()

laparams=LAParams()

device=PDFPageAggregator(pdfrm,laparams=laparams)

解释器=PDFPageInterpreter(pdfrm,设备)

对于PDFPage.create_pages(doc)中的页面:

interpreter.process_page(第页)

layout=device.get_result()

对于布局中的x:

if hasattr(x,' get_text '):

content=x.get_text()

输出.写入(内容)

content=output.getvalue()

output.close()

返回内容

if __name__=='__main__ ':

path=u'/tmp/abc.pdf '

pdf_utils=PDFUtils()

打印pdf_utils.pdf2txt(路径)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: