Funziona a maggio 2020 utilizzando PDFminer six in Python3.
Installazione del pacchetto
$ pip install pdfminer.six
Importazione del pacchetto
from pdfminer.high_level import extract_text
Utilizzando un PDF salvato su disco
text = extract_text('report.pdf')
Oppure in alternativa:
with open('report.pdf','rb') as f:
text = extract_text(f)
Utilizzo di PDF già in memoria
Se il PDF è già in memoria, ad esempio se recuperato dal web con la libreria delle richieste, può essere convertito in flusso utilizzando la io
libreria:
import io
response = requests.get(url)
text = extract_text(io.BytesIO(response.content))
Prestazioni e affidabilità rispetto a PyPDF2
PDFminer.six funziona in modo più affidabile di PyPDF2 (che fallisce con alcuni tipi di PDF), in particolare PDF versione 1.7
Tuttavia, l'estrazione del testo con PDFminer.six è significativamente più lenta di PyPDF2 di un fattore 6.
Ho cronometrato l'estrazione del testo con timeit
un MBP da 15 "(2018), cronometrando solo la funzione di estrazione (nessuna apertura di file ecc.) Con un PDF di 10 pagine e ho ottenuto i seguenti risultati:
PDFminer.six: 2.88 sec
PyPDF2: 0.45 sec
pdfminer.six ha anche un ingombro enorme, che richiede pycryptodome che richiede GCC e altre cose installate spingendo un'immagine docker di installazione minima su Alpine Linux da 80 MB a 350 MB. PyPDF2 non ha alcun impatto notevole sullo storage.