PDFminer: PDFTextExtractionNotAllowed Error

Estoy intentando extraer texto de archivos PDF que he eliminado de Internet, pero cuando bash descargarlos, aparece el error:

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  

He comprobado que stackoverflow y otra persona que tuvo este error encontraron que sus archivos PDF están protegidos con una contraseña. Sin embargo, puedo acceder a los PDF a través de la vista previa en mi mac.

Alguien mencionó que la vista previa puede ver los archivos PDF protegidos de todos modos, así que también abrí los archivos en Adobe Acrobat Reader y todavía pude acceder al pdf.

Aquí hay un ejemplo del sitio en el que estoy descargando archivos PDF de: http://www.sophia-project.org/uploads/1/3/9/5/13955288/aristotle_firstprinciples.pdf

Descubrí que si abro el pdf manualmente y lo vuelvo a exportar como un pdf a la misma vía de acceso (básicamente reemplazando el original por un archivo ‘nuevo’), entonces puedo extraer el texto. Supongo que tiene algo que ver con descargarlos del sitio. Simplemente estoy usando urllib para descargar los pdf de la siguiente manera:

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

También intenté volver a escribir el archivo en una nueva ruta de archivo, pero aún así resultó en el mismo error.

 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) 

Por último, aquí está la función que estoy usando para extraer el texto.

 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 

¿Hay alguna forma en que pueda resolver esto mediante progtwigción en lugar de volver a exportar manualmente los archivos en vista previa?

(pdfminer3k) comenta estas dos líneas de código en

Archivo “… \ Python36 \ lib \ site-packages \ pdfminer \ pdfinterp.py”, línea 701, en process_pdf raise PDFTextExtractionNotAllowed (‘La extracción de texto no está permitida:% r’% fp)

 # if check_extractable and not doc.is_extractable: # raise PDFTextExtractionNotAllowed('Text extraction is not allowed: %r' % fp) 

Para (pdfminer) comente estas dos líneas en este archivo:

Archivo “… / python2.7 / dist-packages / pdfminer / pdfpage.py”, línea 124, en get_pages raise PDFTextExtractionNotAllowed (‘La extracción de texto no está permitida:% r’% fp)

También he encontrado este error, así que he incorporado tika para ejecutarse localmente, lo que si pdfminer no puede extraer ningún dato, se lo paso a tika. Funciona bien.

También he tenido el mismo error. He utilizado el paquete PyMuPDF y funcionó.