如何使用 pdfminer3k 读取 pdf 文件?
Posted
技术标签:
【中文标题】如何使用 pdfminer3k 读取 pdf 文件?【英文标题】:How to read pdf file using pdfminer3k? 【发布时间】:2017-10-16 21:46:03 【问题描述】:我正在使用 python 3.5,我想从 pdf 文件中逐行读取文本。试图使用pdfminer3k
,但在任何地方都没有得到正确的语法。
如何正确使用?
【问题讨论】:
【参考方案1】:我已经更正了 Lisa 的代码。现在可以了!
fp = open(path, 'rb')
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBox, LTTextLine
parser = PDFParser(fp)
doc = PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
doc.initialize('')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
laparams.char_margin = 1.0
laparams.word_margin = 1.0
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
extracted_text = ''
for page in doc.get_pages():
interpreter.process_page(page)
layout = device.get_result()
for lt_obj in layout:
if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine):
extracted_text += lt_obj.get_text()
【讨论】:
你能补充一些关于你的代码和 Lise 的区别的描述吗?extracted_text += string
改为extracted_text += lt_obj.get_text()
。
This answer 对上面的代码进行了一些更正。我还删除了 doc.set_parser
和 doc.initialize
行以使其正常工作。【参考方案2】:
我使用的是 python 3.4,但我猜它与 python 3.5 的工作方式相同。 这是我使用的:
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBox, LTTextLine
parser = PDFParser(file_content)
doc = PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
doc.initialize('')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
#I changed the following 2 parameters to get rid of white spaces inside words:
laparams.char_margin = 1.0
laparams.word_margin = 1.0
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
extracted_text = ''
# Process each page contained in the document.
for page in doc.get_pages():
interpreter.process_page(page)
layout = device.get_result()
for lt_obj in layout:
if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine):
extracted_text += string
with open('convertedFile.txt',"wb") as txt_file:
txt_file.write(extracted_text.encode("utf-8"))
【讨论】:
将“字符串”替换为“lt_obj.get_text()”以上是关于如何使用 pdfminer3k 读取 pdf 文件?的主要内容,如果未能解决你的问题,请参考以下文章