¿Extrae texto de un archivo PDF usando PDFMiner en python?

Python Versión 2.7

Estoy buscando documentación o ejemplos sobre cómo extraer texto de un archivo PDF utilizando PDFMiner con Python.

Parece que PDFMiner ha actualizado su API y todos los ejemplos relevantes que he encontrado contienen código obsoleto (las clases y los métodos han cambiado). Las bibliotecas que encontré que facilitan la tarea de extraer texto de un archivo PDF utilizan la syntax de PDFMiner anterior, por lo que no estoy seguro de cómo hacerlo.

Tal como está, solo estoy mirando el código fuente para ver si puedo resolverlo.

Este es un ejemplo práctico de cómo extraer texto de un archivo PDF utilizando la versión actual de PDFMiner (septiembre de 2016)

 from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfpage import PDFPage from io import StringIO def convert_pdf_to_txt(path): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = open(path, 'rb') 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) text = retstr.getvalue() fp.close() device.close() retstr.close() return text 

La estructura de PDFMiner ha cambiado recientemente, por lo que debería funcionar para extraer texto de los archivos PDF.

Edición : Sigo trabajando a partir del 7 de junio de 2018. Verificado en Python Versión 3.x

excelente respuesta de DuckPuncher, para Python3, asegúrese de instalar pdfminer2 y haga:

 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): rsrcmgr = PDFResourceManager() retstr = io.StringIO() codec = 'utf-8' laparams = LAParams() device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = open(path, 'rb') 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) text = retstr.getvalue() fp.close() device.close() retstr.close() return text