将pdf文件转换为新目录中的原始文本

时间:2019-07-23 16:08:59

标签: python python-3.x python-3.7 pypdf2 pdftotext

这是我要尝试的:

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,而无需导入/安装更多模块/。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您还没有描述最后两行是如何失败的,但是在某些PDF上提取文本效果不佳:

def extractText(self):

“”“         找到所有文本绘图命令,顺序为它们在         内容流,然后提取文本。这对于某些PDF来说效果很好         文件,但对其他人来说效果不佳,具体取决于使用的生成器。这将         将来要完善。不要依赖于文本的顺序         此功能,因为如果增加此功能,它将改变         复杂。         :return:一个Unicode字符串对象。         “”“

要做的一件事是查看pdf中是否有文本。仅仅因为您可以看到单词并不意味着它们已经被OCR编码或以其他方式在文件中被编码为文本。尝试突出显示pdf中的文本并将其复制/粘贴到文本文件中,以查看什至可以提取出哪种文本。

如果您的解决方案无法正常工作,则需要使用其他软件包,例如Tika