Python PyPDF2-PdfileReader-无法提取文本

Python PyPDF2-PdfileReader-无法提取文本,python,text-extraction,pypdf2,Python,Text Extraction,Pypdf2,我在一个目录中循环,阅读了大量的PDF文件。我使用循环从每个页面提取所有文本信息 5/13 PDF在尝试使用.getNumPages()时引发错误:发生异常:ValueError基为10:b“”的int()无效文本。我认为发生此错误是因为对象(PyPDF2)显示numPages:0 现行代码 我不明白为什么只有某些PDF会出现这个问题。任何帮助都将不胜感激 我在使用PyPDF2时也遇到了同样的问题,所以我使用了另一个名为slatepython库 安装库 pip install slate3k

我在一个目录中循环,阅读了大量的PDF文件。我使用循环从每个页面提取所有文本信息

5/13 PDF在尝试使用.getNumPages()时引发错误:发生异常:ValueError基为10:b“”的int()无效文本。我认为发生此错误是因为对象(PyPDF2)显示numPages:0

现行代码


我不明白为什么只有某些PDF会出现这个问题。任何帮助都将不胜感激

我在使用
PyPDF2
时也遇到了同样的问题,所以我使用了另一个名为
slate
python库

  • 安装库

    pip install slate3k
    
  • 然后使用下面的代码

    import slate3k as slate
    
    with open(file.pdf, 'rb') as f:
      extracted_text = slate.PDF(f)
      print(extracted_text)
    

我使用pdfminer提取pdf

您可以参考示例代码

#pip install pdfminer.six
import io

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage


def convert_pdf_to_txt(path):
    '''Convert pdf content from a file path to text

    :path the file path
    '''
    rsrcmgr = PDFResourceManager()
    codec = 'utf-8'
    laparams = LAParams()

    with io.StringIO() as retstr:
        with TextConverter(rsrcmgr, retstr, codec=codec,
                           laparams=laparams) as device:
            with open(path, 'rb') as fp:
                interpreter = PDFPageInterpreter(rsrcmgr, device)
                password = ""
                maxpages = 0
                caching = True
                pagenos = set()

                for page in PDFPage.get_pages(fp,
                                              pagenos,
                                              maxpages=maxpages,
                                              password=password,
                                              caching=caching,
                                              check_extractable=True):
                    interpreter.process_page(page)

                return retstr.getvalue()


if __name__ == "__main__":
    print(convert_pdf_to_txt('test.pdf'))
有关此盖子的详细信息。你可以参考下面的链接


如果出现任何问题,请检查并回复我。

我已经测试了一些pdf库,我注意到阅读pdf文件最好

下面是代码示例:

import fitz

doc = fitz.open("file.pdf")

for page in doc:
    text = page.getText()
    print(text)

pdf文件可能在某种程度上与普通pdf不同。您可以尝试在查看器中打开它们,然后再次将它们另存为pdf,以尝试修复这些偏差。我尝试了此操作,但没有成功。@alexlong,您可以共享您的pdf吗?这是处理pdf的最佳库。此操作更有效!非常感谢。
import fitz

doc = fitz.open("file.pdf")

for page in doc:
    text = page.getText()
    print(text)