这是我要尝试的:
import PyPDF2
from PyPDF2 import PdfFileWriter, PdfFileReader
import re
import config
import sys
import os
with open(config.ENCRYPTED_FILE_PATH, mode='rb') as f:
reader = PyPDF2.PdfFileReader(f)
if reader.isEncrypted:
reader.decrypt('Password123')
print(f"Number of page: {reader.getNumPages()}")
for i in range(reader.numPages):
output = PdfFileWriter()
output.addPage(reader.getPage(i))
with open("./pdfs/document-page%s.pdf" % i, "wb") as outputStream:
output.write(outputStream)
print(outputStream)
for page in output.pages: # failing here
print page.extractText() # failing here
整个程序正在从一个位置解密一个较大的pdf文件,并在新目录的每页上将其拆分为一个单独的pdf文件-正常工作。 但是,此后,我想将每个页面转换为新目录中的原始.txt
文件。 即 /txt_versions/
(我将在以后使用)
理想情况下,我可以使用当前的导入文件,即PyPDF2,而无需导入/安装更多模块/。有什么想法吗?
答案 0 :(得分:0)
您还没有描述最后两行是如何失败的,但是在某些PDF上提取文本效果不佳:
“”“ 找到所有文本绘图命令,顺序为它们在 内容流,然后提取文本。这对于某些PDF来说效果很好 文件,但对其他人来说效果不佳,具体取决于使用的生成器。这将 将来要完善。不要依赖于文本的顺序 此功能,因为如果增加此功能,它将改变 复杂。 :return:一个Unicode字符串对象。 “”“
要做的一件事是查看pdf中是否有文本。仅仅因为您可以看到单词并不意味着它们已经被OCR编码或以其他方式在文件中被编码为文本。尝试突出显示pdf中的文本并将其复制/粘贴到文本文件中,以查看什至可以提取出哪种文本。
如果您的解决方案无法正常工作,则需要使用其他软件包,例如Tika。