2016-08-07 22 views
0

PDFMinerを使って遊んだだけで、PDFからテキストを抽出し、HTMLまたはテキストファイルにスローすることができます。それは私が望んでいる場合PDFMiner条件付きテキストの抽出

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

そして今、私は私のdatabseに追加する単語のHELLOを含むすべてのこれらの文字列を使用することができます。

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

私は、すべての特定の文字列を抽出するために、簡単なスクリプトを書かれています。

私の質問は以下のとおりです。

が唯一の方法であるかPDFinderもTXT、HTML、あるいはストレートデータベースにそれを吐き出し前に条件付きのものをつかむことができますか?

+0

投稿にテキストを抽出するために使用したコードを追加することをおすすめします。コードはテキストよりもはるかに目を引く、特にそれに慣れている場合 – YakovL

+0

ありがとう@YakovL!完了しました。 –

答えて

0

さて、はい、できます:PDFMinerはAPIです。

基本的な例サイス

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これも役に立つはずです。

+0

これは上記の鉱山より優れた解決策だと思いますか?私は、これと同じくらい多くのサーバー電源を扱うことができると思います。 –

+0

@JamesKolberまあ、それはあなたがあなたのサーバーを少なくすることができます(データが処理されるまでディスク/ DBに書き込まないことを含む)ことができる "厳密に良い"という意味ですが、 "これはどれくらい良い"文脈によっては、これに時間を費やすことができないか、あるいは大きな問題になることはないかもしれません。これは、予想される "圧縮率"と情報の量とハードウェアなどによって異なります。ところで、これがあなたの質問に答えるならば、それを "受け入れる"ことを忘れないでください(upvote/downvoteボタンの下の目盛り) – YakovL

+0

@JamesKolber私はあなたの質問に答えましたか?もしそうなら、答えを受け入れて、そうでなければ欠けているものを指摘してください。 – YakovL