A extrair texto de um ficheiro PDF usando o PDFMiner em python?
Python Versão 2.7
Estou à procura de documentação ou exemplos de como extrair texto de um ficheiro PDF usando PDFMiner com Python.
parece que o PDFMiner actualizou a sua API e todos os exemplos relevantes que encontrei contêm código desactualizado(as classes e os métodos mudaram). As bibliotecas que eu encontrei que tornam a tarefa de extrair texto de um arquivo PDF mais fácil estão usando a sintaxe PDFMiner antigo, então eu não tenho certeza de como fazer isso.
Como está, eu ... estou a ver o código-fonte para ver se consigo descobrir.2 answers
Aqui está um exemplo de trabalho de extracção de texto de um ficheiro PDF usando a versão actual do PDFMiner (setembro 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
A estrutura do PDFMiner mudou recentemente, por isso isto deve funcionar para extrair texto dos ficheiros PDF.
Edit : continua a funcionar a partir do dia 7 de junho de 2018. Verificado na versão 3 do Python.x
Resposta fantástica do DuckPuncher, para Python3 certifique-se de instalar o pdfminer2 e fazer:
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