从加密的PDF中提取Python数据
我是纯数学的最新毕业生,只修过很少的基础编程课程。我正在实习,并且有一个内部数据分析项目。我必须分析最近几年的内部PDF。PDF是“安全的”。换句话说,它们是加密的。我们没有PDF密码,甚至更多,我们不确定密码是否存在。但是,我们拥有所有这些文档,我们可以手动阅读它们。我们也可以打印它们。我们的目标是使用Python读取它们,因为这是我们有某种想法的语言。 首先,我尝试使用一些Python库来阅读PDF。但是,我发现的Python库无法读取加密的PDF。当时,我也无法使用Adobe Reader导出信息。 其次,我决定解密PDF。我成功使用了Python库pykepdf。Pykepdf效果很好!但是,解密的PDF不能与上一点的Python库(PyPDF2和Tabula)一起读取。目前,我们已经进行了一些改进,因为使用Adobe Reader可以从解密的PDF中导出信息,但是目标是使用Python进行所有操作。 我要显示的代码可以与未加密的PDF完美配合,但不能与加密的PDF完美配合。它也不适用于通过pykepdf获取的解密PDF。 我没有写代码。我在Python库Pykepdf和Tabula的文档中找到了它。PyPDF2解决方案是由Al Sweigart在他强烈推荐的书“ 用Python自动化无聊的东西 ”中写的。我还检查了代码是否工作正常,并具有我之前解释的限制。 第一个问题,如果程序使用从未加密过的文件,为什么我不能读取解密的文件? 第二个问题,我们可以用Python读取解密后的文件吗?哪个图书馆可以做到或不可能?是否可以提取所有解密的PDF? 谢谢您的时间和帮助!!! 我使用Python 3.7,Windows 10,Jupiter Notebook和Anaconda 2019.07找到了这些结果。 Python import pikepdf with pikepdf.open("encrypted.pdf") as pdf: num_pages = len(pdf.pages) del pdf.pages[-1] pdf.save("decrypted.pdf") import tabula tabula.read_pdf("decrypted.pdf", stream=True) import PyPDF2 pdfFileObj=open("decrypted.pdf", "rb") pdfReader=PyPDF2.PdfFileReader(pdfFileObj) pdfReader.numPages pageObj=pdfReader.getPage(0) pageObj.extractText() 使用Tabula,我收到消息“输出文件为空”。 使用PyPDF2,我只会得到'/ n' 更新10/3/2019 Pdfminer.six(2018年11月版) 使用DuckPuncher发布的解决方案,我得到了更好的结果。对于解密的文件,我得到了标签,但没有数据。加密文件也是如此。对于从未加密的文件,它非常完美。由于我需要加密或解密文件的数据和标签,因此此代码对我不起作用。对于该分析,我使用了pdfminer.six,它是2018年11月发布的Python库.Pdfminer.six包括一个库pycryptodome。根据他们的文档“ PyCryptodome是一个包含低级密码基元的自包含Python软件包。” …