Python Version 2.7
Je cherche de la documentation o exemples sur la façon d'extraire le texte d'un fichier PDF à l'aide de PDFMiner avec Python.
Il semble que PDFMiner ait mis à jour son API et que tous les exemples pertinents que j'ai trouvés contiennent du code obsolète (les classes et les méthodes ont été modifiées). Les bibliothèques que j'ai trouvées et qui facilitent l'extraction de texte à partir d'un fichier PDF utilisent l'ancienne syntaxe PDFMiner. Je ne sais donc pas comment procéder.
Dans l'état actuel des choses, j'examine le code source pour voir si je peux le comprendre.
Voici un exemple pratique d'extraction de texte d'un fichier PDF à l'aide de la version actuelle de PDFMiner (septembre 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 structure de PDFMiner a récemment changé. Cela devrait donc fonctionner pour extraire du texte à partir des fichiers PDF.
Edit: Fonctionne toujours au 7 juin 2018. Vérifié en Python Version 3.x
super réponse de DuckPuncher, pour Python3, assurez-vous d'installer pdfminer2 et faites:
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