PyPDF2 仅返回某些文件的空行

Posted

技术标签:

【中文标题】PyPDF2 仅返回某些文件的空行【英文标题】:PyPDF2 returns only empty lines for some files 【发布时间】:2018-01-04 03:12:27 【问题描述】:

我正在编写一个脚本来“读取”PDF 文件,然后自动重命名它从字典中识别的文件。然而,PyPDF2 只为某些 PDF 返回空行,而对其他 PDF 工作正常。文件读取代码:

import PyPDF2

# File name
file = 'sample.pdf'

# Open File
with open(file, "rb") as f:
    # Read in file
    pdfReader = PyPDF2.PdfFileReader(f)

    # Check number of pages
    number_of_pages = pdfReader.numPages
    print(number_of_pages)

    # Get first page
    pageObj = pdfReader.getPage(0)

    # Extract text from page 1
    text = pageObj.extractText()        

print(text)

它确实获得了正确的页数,因此它能够打开 PDF。

如果我将 print(text) 替换为 repr(text) 以获取它不读取的文件,我会得到类似:

"'\\n\\n\\n\\n\\n\\n\\n\\nn\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n'"

奇怪的是,当我使用 Adob​​e 增强 (OCR) 文件时,脚本的性能稍差。它识别了 800 个文件中的 140 个,仅增强了 110 个。

PDF 是机器可读/可搜索的,因为我可以将文本复制/粘贴到记事本。我用“pdfminer”测试了一些文件,它确实显示了一些文本,但也引发了很多错误。如果可能的话,我想继续使用 PyPDF2。

我使用的软件规格: 窗口:10.0.15063 Python:3.6.1 PyPDF:1.26.0 Adobe 版本:17.009.20058

有人有什么建议吗?非常感谢您的帮助!

【问题讨论】:

你的问题解决了吗? 不。这个问题只发生在我的文件的几个百分比上。从那以后我没有重新测试...... @Hoenie 你是如何解决你的问题的?我的意思是你用哪个库代替 pyPdf2 pdfminer,但是那个也没有正确阅读一些 PDF。两者结合让我走得很远...... 【参考方案1】:

我遇到了同样的问题,我使用另一个名为 slate 的 python 库修复了它 幸运的是,我找到了一个在 Python 3.6.5 中工作的fork

import slate3k as slate

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

【讨论】:

以上是关于PyPDF2 仅返回某些文件的空行的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 查询返回的记录不足,但仅限于某些约束

$_POST 变量仅返回某些字段的值,但不是全部

Facebook 图形 API 仅返回某些网站的名称和 ID

如何返回仅包含某些数量的原始列表的列表的子列表[重复]

此等式仅在传递某些值时返回 NaN

PhpSpreadsheet 块过滤器读取返回空行