本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。