2016-12-15 90 views
0

我試圖使用pdfminer來提取pdf表格中的填寫內容。訪問PDF中的指令是:pdfminer不會從填寫的pdf表格提取數據

  1. 轉到https://www.ffiec.gov/nicpubweb/nicweb/InstitutionProfile.aspx?parID_Rssd=1073757&parDT_END=99991231
  2. 單擊「創建報告」從旁邊第四次報告頂部(即銀行機構系統性風險報告(FR Y型15))

  3. 點擊「您的財務報告的要求準備好」

要提取藍色的內容,我從this post複製的代碼

from pdfminer.pdfparser import PDFParser 
from pdfminer.pdfdocument import PDFDocument 
from pdfminer.pdftypes import resolve1 

filename = 'FRY15_1073757_20160630.PDF' 
fp = open(filename, 'rb') 
parser = PDFParser(fp) 
doc = PDFDocument(parser) 
fields = resolve1(doc.catalog['AcroForm'])['Fields'] 

for i in fields: 
    field = resolve1(i) 
    name, value = field.get('T'), field.get('V') 
    print '{0}: {1}'.format(name, value) 

這沒有按預期提取數據字段 - 沒有打印任何內容。我試過其他PDF相同的代碼和它的工作,所以我懷疑故障可能與第一PDF的安全設置,如下所示 enter image description here

有關該代碼工作的第二PDF做的安全設置爲所有操作顯示「允許」。我也嘗試使用pdfminer的pdf2txt.py功能(請參閱here),但原始pdf表單(這是我想要的)字段中填寫的數據不在轉換的文本文件中;只有pdf的「單位」不可填寫部分被轉換。有趣的是,如果我使用Adobe Reader的另存爲文本將pdf轉換爲文本文件,則可轉換文本文件中的可填充部分。這是我一直在解決失敗的代碼。

任何想法如何我可以直接從PDF格式提取數據?謝謝。

+0

關於PDF,請訪問https://www.ffiec.gov/nicpubweb/NICDataCache/FRY15/FRY15_1073757_20160630.PDF:*您正在查找的資源已被刪除,名稱已更改或暫時不可用。該網址說「... DataCache ...」,這並不令人驚訝...... – mkl

+0

@mkl感謝您的單挑。鏈接已被修改。 – Nero

回答

0

我只能解釋問題是什麼,但不能提供解決方案,因爲我沒有Python的知識。在AcroForm陣列的直接子

你的代碼循環,並期望他們表示表單字段。

雖然這種期望經常被滿足,它實際上只表示一種特殊情況:表單字段被佈置爲結構與字段數組作爲根元素,例如在您的樣本文件的情況下,有大的樹:

Fields tree

因此,你必須下降到結構,不僅迭代的領域眼前的孩子,找到所有表單域。

+0

您使用過哪些軟件來解析pdf,如上所示?謝謝。 – Nero

+0

@Nero我使用[iText RUPS](http://itextpdf.com/de/node/7),但任何其他pdf檢測軟件也應該顯示類似的內容。 – mkl

+0

我設法通過在文本編輯器中打開PDF來提取所需的信息,但遇到了另一個我認爲也與內部工作pdf相關的問題。你可以看看這個帖子http://stackoverflow.com/questions/41232492/pdf-contents-dont-show-up-in-text-editor?謝謝。 – Nero