Tabelle vs testo semplice: perché è importante
Prima di scegliere un metodo, controlla che tipo di dati contiene il tuo PDF. L'approccio dipende interamente dalla struttura del PDF:
| Tipo di PDF | Cosa contiene | Metodo migliore |
|---|---|---|
| Tabelle native | PDF basato su testo con bordi della tabella visibili e linee di griglia | Qualsiasi metodo — CleverUtils è il più veloce |
| Tabelle senza bordi | Colonne allineate per spaziatura, nessuna griglia visibile | Python (pdfplumber) per precisione |
| PDF scansionato | Immagine di una pagina stampata (nessun testo selezionabile) | CleverUtils con OCR abilitato |
| Contenuto misto | Tabelle + paragrafi + intestazioni sulla stessa pagina | Python per estrazione selettiva |
Test veloce: apri il tuo PDF e prova a selezionare il testo con il mouse. Se riesci a evidenziare parole individuali, è un PDF nativo (basato su testo). Se l'intera pagina viene selezionata come un blocco, è un'immagine scansionata — avrai bisogno dell'OCR.
Metodo 1: Converti online con CleverUtils
L'opzione più veloce per la maggior parte degli utenti. CleverUtils gestisce PDF nativi, tabelle senza bordi e persino documenti scansionati con OCR. Nessuna installazione, nessun account richiesto.
- Vai su cleverutils.com/it/pdf-to-csv
- Carica il tuo PDF — trascina e rilascia, o fai clic su « Scegli file PDF ». Max. 100 MB.
- Per PDF scansionati: seleziona la tua lingua OCR dal menu a discesa prima di convertire.
- Fai clic su « Converti in CSV » — la conversione richiede alcuni secondi per la maggior parte dei file.
- Scarica il CSV — aprilo in Excel, Google Sheets o importa nel tuo database.
CleverUtils elabora tutte le pagine del tuo PDF e combina i dati estratti in un unico file CSV. I file vengono crittografati durante il trasferimento ed eliminati automaticamente entro 2 ore.
Metodo 2: Python con pdfplumber
pdfplumber è la migliore libreria Python per estrarre tabelle da PDF. Comprende sia le tabelle con che senza bordi, ti fornisce le coordinate per ogni carattere e ti permette di ottimizzare i parametri di estrazione.
Installa pdfplumber
pip install pdfplumber
Estrazione di base della tabella
Questo script estrae tutte le tabelle da ogni pagina di un PDF e le scrive in un file CSV:
import pdfplumber
import csv
with pdfplumber.open("invoice.pdf") as pdf:
all_rows = []
for page in pdf.pages:
table = page.extract_table()
if table:
all_rows.extend(table)
with open("output.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(all_rows)
print(f"Extracted {len(all_rows)} rows to output.csv")
Gestione di tabelle senza bordi
Quando le tabelle non hanno bordi visibili, pdfplumber può comunque rilevare le colonne utilizzando le posizioni dei caratteri. Usa extract_table() con impostazioni personalizzate:
# Per PDF senza bordi di tabella visibili
table_settings = {
"vertical_strategy": "text",
"horizontal_strategy": "text",
"snap_y_tolerance": 5,
"intersection_x_tolerance": 15,
}
with pdfplumber.open("report.pdf") as pdf:
page = pdf.pages[0]
table = page.extract_table(table_settings)
for row in table:
print(row)
Converti più PDF in batch
import pdfplumber
import csv
from pathlib import Path
for pdf_file in Path("./invoices").glob("*.pdf"):
csv_path = pdf_file.with_suffix(".csv")
with pdfplumber.open(pdf_file) as pdf:
rows = []
for page in pdf.pages:
table = page.extract_table()
if table:
rows.extend(table)
with open(csv_path, "w", newline="") as f:
csv.writer(f).writerows(rows)
print(f"{pdf_file.name} -> {csv_path.name} ({len(rows)} rows)")
Metodo 3: Microsoft Excel (Ottieni dati)
Microsoft 365 (Excel per 365) può importare file PDF direttamente utilizzando la funzione Power Query / Ottieni dati. Questa opzione non è disponibile in Excel 2016 o 2019 standalone — richiede un abbonamento Microsoft 365 attivo. Funziona bene per tabelle semplici e ben strutturate.
- Apri Excel e crea una nuova cartella di lavoro vuota.
- Vai a Dati → Ottieni dati → Da file → Da PDF.
- Seleziona il tuo PDF dal browser dei file.
- Scegli la/le tabella/e che desideri importare dal pannello Navigazione. Excel mostrerà un'anteprima di ogni tabella rilevata.
- Fai clic su « Carica » per importare i dati nel tuo foglio di lavoro.
- Salva come CSV: File → Salva con nome → scegli « CSV (delimitato da virgole) (*.csv) » come formato.
Limitazione: l'importazione PDF in Excel funziona meglio con tabelle semplici e delimitate. Fatica con layout a più colonne, celle unite e tabelle senza bordi. Per PDF complessi, usa CleverUtils o Python invece.
Metodo 4: Google Sheets
Google Sheets non importa direttamente i PDF, ma puoi usare l'OCR integrato di Google Drive per estrarre prima il testo e poi copiarlo in Sheets.
- Carica il PDF su Google Drive.
- Fai clic con il pulsante destro del mouse sul PDF → Apri con → Google Docs. Google userà OCR sul file e lo convertirà in un documento modificabile.
- Seleziona i dati della tabella nel Google Doc e copia (Ctrl+C / Cmd+C).
- Apri un nuovo Google Sheet e incolla (Ctrl+V / Cmd+V). I dati riempiranno le celle.
- Pulisci i dati — regola le larghezze delle colonne, rimuovi le righe extra, correggi gli errori di OCR.
- Scarica come CSV: File → Scarica → Valori separati da virgole (.csv).
Suggerimento: l'OCR di Google funziona sorprendentemente bene per PDF scansionati. Ma la struttura della tabella potrebbe non sopravvivere al passaggio di copia-incolla intatta. Per risultati migliori con dati tabulari, usa il convertitore diretto PDF in CSV di CleverUtils.
Confronto dei metodi
| Funzionalità | CleverUtils | Python | Excel | Google Sheets |
|---|---|---|---|---|
| Difficoltà | Facile | Avanzato | Medio | Facile |
| Installazione | Nessuna (browser) | Python + pip | Microsoft 365 | Nessuna (browser) |
| Tabelle delimitate | Eccellente | Eccellente | Buono | Giusto |
| Tabelle senza bordi | Buono | Eccellente | Cattivo | Cattivo |
| PDF scansionati (OCR) | Integrato | Con pytesseract | Non supportato | Via Google Drive |
| Elaborazione batch | Un file alla volta | Illimitato | Un file alla volta | Un file alla volta |
| Migliore per | Conversioni veloci una tantum | Automazione & PDF complessi | Utenti Excel con tabelle semplici | Estrazione rapida con OCR |
Suggerimenti per un output CSV pulito
- Controlla la riga di intestazione. Alcuni PDF hanno intestazioni su più righe che si dividono in righe CSV separate. Dopo la conversione, verifica che le intestazioni delle colonne siano su una sola riga.
- Attenzione alle celle unite. Le tabelle PDF spesso uniscono le celle per i titoli dei gruppi. Questi di solito diventano celle vuote in CSV. Compilali manualmente o con uno script dopo l'estrazione.
- Gestisci i caratteri speciali. Virgole, virgolette e interruzioni di riga all'interno dei valori delle celle possono interrompere l'analisi CSV. I buoni convertitori (CleverUtils, pdfplumber) gestiscono l'escape automaticamente. Se il tuo no, racchiudi i valori tra virgolette doppie.
- La codifica è importante. Usa la codifica UTF-8 quando salvi il CSV per preservare i caratteri accentati, i simboli di valuta e il testo non latino. In Python:
open("out.csv", "w", encoding="utf-8-sig")(il-sigaggiunge una BOM che aiuta Excel a rilevare UTF-8). - Tabelle su più pagine. Quando una tabella si estende su più pagine PDF, alcuni strumenti estraggono ogni pagina come una tabella separata. In Python, salta la riga di intestazione nelle pagine successive per evitare duplicati.
Problemi comuni e soluzioni
| Problema | Causa | Soluzione |
|---|---|---|
| Output CSV vuoto | PDF scansionato (basato su immagine) | Abilita OCR in CleverUtils o usa pytesseract |
| Tutti i dati in una colonna | Excel ha aperto CSV con delimitatore errato | Usa Dati → Testo in colonne → Delimitato → Virgola |
| Colonne disallineate | Tabella senza bordi con spaziatura irregolare | Usa pdfplumber con vertical_strategy: "text" |
| Caratteri corrotti | Codifica non corretta (solitamente Latin-1 vs UTF-8) | Apri nell'editor di testo, salva come UTF-8 |
| Intestazioni duplicate | Tabella su più pagine con intestazioni ripetute | In Python, salta riga 0 nelle pagine dopo la prima |