¿Extraer texto de un archivo PDF usando PDFMiner en python?
text-extraction (2)
Este es un ejemplo práctico de extracción de texto de un archivo PDF con 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.
Editar : sigue funcionando desde el 7 de junio de 2018. Verificado en Python versión 3.x
Versión de Python 2.7
Estoy buscando documentación o ejemplos sobre cómo extraer texto de un archivo PDF usando PDFMiner con Python.
Parece que PDFMiner actualizó 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 he encontrado que facilitan la tarea de extraer texto de un archivo PDF están usando la vieja sintaxis de PDFMiner, así que no estoy seguro de cómo hacerlo.
Tal como están las cosas, solo estoy mirando el código fuente para ver si puedo resolverlo.
excelente respuesta de DuckPuncher, para Python3 asegúrese de instalar pdfminer2 y hacer:
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