【发布时间】:2016-12-15 23:55:29
【问题描述】:
我正在尝试使用pdfminer 提取pdf 表单中填写的内容。访问pdf的说明是:
- 转到https://www.ffiec.gov/nicpubweb/nicweb/InstitutionProfile.aspx?parID_Rssd=1073757&parDT_END=99991231
- 点击倒数第四个报告旁边的“创建报告”(即银行组织系统性风险报告 (FR Y-15))
- 点击“您的财务报告请求已准备就绪”
为了提取蓝色的内容,我从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 的安全设置有关,如下所示
对于代码工作的第二个 pdf,安全设置对所有操作显示“允许”。我还尝试使用 pdfminer 的 pdf2txt.py 功能(请参阅here),但原始 pdf 表单(这是我想要的)字段中填写的数据不在转换后的文本文件中;仅转换了 pdf 的“平面”不可填充部分。有趣的是,如果我使用 Adobe Reader 的 Save As Text 将 pdf 转换为文本文件,则可填充部分 在转换后的文本文件中。这就是我为绕过失败的代码而一直在做的事情。
知道如何直接从 pdf 表单中提取数据吗?谢谢。
【问题讨论】:
-
关于ffiec.gov/nicpubweb/NICDataCache/FRY15/… 的 PDF:您要查找的资源已被删除、更改名称或暂时不可用。 考虑到 URL 显示“.. .DataCache..." 这并不奇怪...
-
@mkl 感谢您的提醒。链接已修改。
标签: python python-2.7 pdf web-scraping pdfminer