Ciao @marioma86
Cosa intendi con "upload dei file"?
Poi, leggo che stai agendo su processi lavorativi ... attento agli errori di codifica

I files pdf sono oggetti tutt'altro che semplici da trattare, python ha diverse librerie tanto per crearli (tipo
reportlab, fornita nella libreria base, almeno nei sistemi linux che utilizzo) quanto per manipolarli, ed esempio
pypdf2 ma, come dicevo, non sono semplici da trattare, Ti faccio un esempio di cosa si va incontro estraendo indiscriminatamente del testo, utilizzando il pdf del
tutorial di python tradotto da @RicPol :
>>> import PyPDF2
>>> f_name = 'pytutorial-it-readthedocs-io-it-python3.9.pdf'
>>> f = open(f_name, 'rb')
>>> r_pdf = PyPDF2.PdfFileReader(f)
>>> page = r_pdf.getPage(18)
>>> print(page.extractText())
CAPITOLO
4
Altristrumentiperilcontrollodi
Oltrea
while
dicuiabbiamogiàparlato,Pythonutilizzaleconsueteistruzioniperilcontrollodelcomuni
amoltilinguggi,conqualchepeculiarità.
4.1
...
... come puoi arguire dall'output su NON è una strada in discesa e molto potrebbe dipendere anche da come sono fatti i pdf da trattare, fossero, p.e., prodotti da scansioni entrerebbero in gioco processi di ocr, tempo fa vidi delle utilità per l'estrazioni di dati tabellari da pdf (non ricordo dove), etc., comunque è un argomento ampio da vedere e non immediato, sarebbe bene avere un esempio mirato su cui ragionare.
Confesso, per altro, che non mi sono mai interessato molto di tale problematica, i tools linux in materia rendono semplici molte operazioni sui pdf, comunque la Tua problematica potrebbe essere un interessante spunto di studio, esponila più dettagliatamente, indicando anche quali sono le Tue difficoltà.
[Edit] Fermo restando quanto sopra, ho fatto un po' di ricerche in rete riguardo l'estrazione di testo da pdf, provado vari esempi reperiti in giro, risultati decisamente più buoni li ho ottenuti con
pdfminerti posto un test con quest'ultima libreria per la stessa pagina :
Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
>>> 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
>>> f_name = 'pytutorial-it-readthedocs-io-it-python3.9.pdf'
>>> pages = range(18,19)
>>> def convert(fname, pages=None):
if not pages:
pagenums = set()
else:
pagenums = set(pages)
output = StringIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)
infile = open(fname, 'rb')
for page in PDFPage.get_pages(infile, pagenums):
interpreter.process_page(page)
infile.close()
converter.close()
text = output.getvalue()
output.close
return text
>>> testo = convert(f_name, pages)
>>> print(testo)
CAPITOLO 4
Altri strumenti per il controllo di flusso
Oltre a while di cui abbiamo già parlato, Python utilizza le consuete istruzioni per il controllo del flusso, comuni
a molti linguggi, con qualche peculiarità.
4.1 Istruzione if
...
rimane, comunque, un argomento da studiarci su per poter operare "come si deve"