从PDF提取文本时如何添加字幕?

时间:2019-11-27 02:40:43

标签: python pdf text-extraction

我正在尝试对一组pdf文件运行LDA,以访问这些文件中的主要主题。我可以使用pdfminer从pdf提取数据。

问题1:但是问题是pdf中的图表和图像所使用的标题和说明对我没有用。如何从pdf中删除不需要的部分。

问题2:在放置运行LDA模型之前,我想从文本中删除所有换行符和标点符号。

我用来提取数据的代码如下:

from pdfminer import .layout import LAParams
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.converter import PDFPageAggregator
from pdfminer.pdfpage import PDFPage
from pdfminer.layout import LTTextBoxHorizontal
from pdfminer.layout import LTFigure
from pdfminer.pdfinterp import PDFPageInterpreter
import gensim
from gensim import corpora
from pprint import pprint
document = open('C:/Users/kaurj/Desktop/File1.pdf', 'rb')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.get_pages(document):
interpreter.process_page(page)    
layout = device.get_result() 

for element in layout:
    if isinstance(element, LTTextBoxHorizontal):
        values = element.get_text()
        print (values)

代码中使用的File1嵌入在这里:-

[https://onedrive.live.com/embed?cid=DA6170EA591F0D07&resid=DA6170EA591F0D07%21106&authkey=ALua6WdCD7Ct6zo&em=2“]

1 个答案:

答案 0 :(得分:0)

如果字幕本身遵循某种模式(就像在科学文本中那样),则可以使用正则表达式将其删除-请参阅link以获取快速概述,并this one进行尝试符合此模式的正则表达式(我假设它们以“ Figure”开头,后跟数字和一串不确定的长度-这使它有点棘手-很有可能是换行符或其他指示符,具体取决于解析器和您使用的文档。)

要清除文本,您有几种选择。 Gensim和NLTK都有一些工具。最简单的版本是使用内置的python函数# Query the database to find out if we have a company named 'bla' company = Company.query.filter_by(company_name="bla").first() # Did we fail to get a company by the name 'bla'? # If so-- lets create one. if not company: company = Company(company_name="bla") # Now we're sure to have a company, but not to have a duplicate, # Let's create a new contact, and add the company. contact = Contact( last_name="Blabla", first_name="Jeff", job_position="Resp Marketing", contact_status="Client", ) # Finally lets commit the contact and associated company to the # database. contact.companies.append(company) db.session.add(contact) db.session.commit() replace并针对每个您想换成另一个的字符(或在这种情况下,加上“”,即什么都没有)重复。我个人将推荐clean-text软件包,该软件包非常灵活,可以为您完成大部分工作。

一个例子:

textdocument.replace(""\n", "")