PDFMiner条件提取文本

时间:2016-08-07 17:10:01

标签: python python-2.7 python-3.x

所以我刚刚玩过PDFMiner,现在可以从PDF中提取文本并将其放入html或文本文件中。

pdf2txt.py -o outputfile.txt -t txt inputfile.pdf

然后我编写了一个简单的脚本来提取所有特定的字符串:

with open('output.txt', 'r') as searchfile:
for line in searchfile:
    if 'HELLO' in line:
        print(line)

现在我可以使用包含单词HELLO的所有字符串添加到我的数据库中,如果这是我想要的。

我的问题是:

这是唯一的方法还是PDFinder可以在将其吐出到txt,html甚至是直接进入数据库之前抓取有条件的东西?

1 个答案:

答案 0 :(得分:1)

嗯,是的,你可以:PDFMiner有API

基本示例sais

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice

# Open a PDF file.
fp = open('mypdf.pdf', 'rb')
# Create a PDF parser object associated with the file object.
parser = PDFParser(fp)
# Create a PDF document object that stores the document structure.
# Supply the password for initialization.
document = PDFDocument(parser, password)
# Check if the document allows text extraction. If not, abort.
if not document.is_extractable:
    raise PDFTextExtractionNotAllowed
# Create a PDF resource manager object that stores shared resources.
rsrcmgr = PDFResourceManager()
# Create a PDF device object.
device = PDFDevice(rsrcmgr)
# Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
# Process each page contained in the document.
for page in PDFPage.create_pages(document):
    interpreter.process_page(page)
    # do stuff with the page here

并且在循环中你应该使用

    # receive the LTPage object for the page.
    layout = device.get_result()

然后使用LTTextBox对象。你必须分析一下。文档中没有完整的示例,但您可以查看the pdf2txt.py source,它可以帮助您找到缺失的部分(尽管它会解析选项并应用它们,但它会做得更多)。

一旦你有了提取文本的代码,你就可以在保存文件之前做你想做的事。包括搜索文本的某些部分。

在某种程度上,PS看起来像以前一样被问到:How do I use pdfminer as a library这也应该有所帮助。