gpt4 book ai didi

python - PDFminer:PDFTextExtractionNotAllowed 错误

转载 作者:太空狗 更新时间:2023-10-30 01:37:12 26 4
gpt4 key购买 nike

<分区>

我正在尝试从互联网上抓取的 pdf 中提取文本,但是当我尝试下载它们时出现错误:

File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfpage.py", line 124, in get_pages
raise PDFTextExtractionNotAllowed('Text extraction is not allowed: %r' % fp)
PDFTextExtractionNotAllowed: Text extraction is not allowed <cStringIO.StringO object at 0x7f79137a1ab0>

我检查了 stackoverflow 和 someone else who had this error发现他们的 pdf 使用密码进行保护。但是,我可以在我的 Mac 上通过预览访问 pdf。

有人提到预览可能会查看 protected pdf,所以我也在 Adob​​e Acrobat Reader 中打开了这些文件,但仍然能够访问 pdf。

这是我从以下站点下载 pdf 的示例: http://www.sophia-project.org/uploads/1/3/9/5/13955288/aristotle_firstprinciples.pdf

我发现如果我手动打开 pdf 并将其作为 pdf 重新导出到相同的文件路径(基本上用"new"文件替换原始文件),那么我可以从中提取文本。我猜这与从站点下载它们有关。我只是使用 urllib 来下载 pdf,如下所示:

if not os.path.isfile(filepath):
print '\nDownloading pdf'
urllib.urlretrieve(link, filepath)
else:
print '\nFile {} already exists!'.format(title)

我也尝试过将文件重写到一个新的文件路径,但它仍然导致同样的错误。

if not os.path.isfile(filepath):
print '\nDownloading pdf'
urllib.urlretrieve(link, filepath)

with open(filepath) as f:
new_filepath = re.split(r'\.', filepath)[0] + '_.pdf'
new_f = file(new_filepath, 'w')
new_f.write(f.read())
new_f.close()

os.remove(filepath)
filepath = new_filepath
else:
print '\nFile {} already exists!'.format(title)

最后,这是我用来提取文本的函数。

def convert(fname, pages=None):
'''
Get text from pdf
'''
if not pages:
pagenums = set()
else:
pagenums = set(pages)

output = StringIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)

infile = file(fname, 'rb')
try:
for page in PDFPage.get_pages(infile, pagenums):
interpreter.process_page(page)
except PDFTextExtractionNotAllowed:
print 'This pdf won\'t allow text extraction!'

infile.close()
converter.close()
text = output.getvalue()
output.close

return text

有什么方法可以通过编程方式解决这个问题,而不是手动重新导出预览中的文件?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com