Python PDFminer:PDFTextractionNotAllowed错误

Python PDFminer:PDFTextractionNotAllowed错误,python,pdf,text,nlp,pdfminer,Python,Pdf,Text,Nlp,Pdfminer,我试图从互联网上刮下来的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 extra

我试图从互联网上刮下来的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>
我还尝试将文件重写为新的文件路径,但仍然导致相同的错误

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

是否有任何方法可以通过编程解决此问题,而不是在预览中手动重新导出文件?

我也遇到了此错误,因此我将tika合并到本地运行,如果pdfminer无法提取任何数据,我将其传递给tika。工作正常。

我也有同样的错误。我使用了
PyMuPDF
软件包,它工作正常。

较新版本的PDFMiner具有check\u extractable参数。您可以在get_pages方法上使用它:

fp = open(filename, 'rb')
PDFPage.get_pages(fp,check_extractable=False)

我也有这个错误。解决方法如下

之前

PDFPage.get_页面中的页面的
(fp,caching=caching,check_extractable=True):
解释器。处理页面(第页)

之后

PDFPage.get_页面中的页面的
(fp,caching=caching,check_extractable=False):
解释器。处理页面(第页)

这很可能是与上一个问题相同的问题。根据惯例,大多数预览者将使用空白用户密码打开加密/受保护的PDF。感谢添加示例PDF。这是加密的,并对其进行复制保护,防止打印
pdfinfo.exe aristole_firstprinciples.pdf | grep Encr
<代码>加密:是(打印:是复制:无更改:无添加注释:无算法:RC4)@非常感谢您的回复!有没有办法通过编程或使用命令行来改变这一点?。建议
qpdf
。在这种情况下,密码为空:
qpdf--decrypt--Password=''encrypted.pdf decrypted.pdf
非常感谢!!!!!!!成功了!
fp = open(filename, 'rb')
PDFPage.get_pages(fp,check_extractable=False)