Tabellen vs. platte tekst: waarom het belangrijk is
Controleer voordat u een methode kiest wat voor gegevens uw PDF bevat. De aanpak hangt volledig af van de PDF-structuur:
| PDF-type | Wat het bevat | Beste methode |
|---|---|---|
| Native tabellen | Op tekst gebaseerde PDF met zichtbare tabelranden en rasterlijnen | Elke methode — CleverUtils is het snelst |
| Tabellen zonder randen | Kolommen uitgelijnd met afstand, geen zichtbaar raster | Python (pdfplumber) voor precisie |
| Gescande PDF | Afbeelding van een afgedrukte pagina (geen selecteerbare tekst) | Eerst OCR (alleen tekst, geen tabelstructuur) |
| Gemengde inhoud | Tabellen + alinea's + kopteksten op dezelfde pagina | Python voor selectieve extractie |
Snelle test: open uw PDF en probeer tekst met uw muis te selecteren. Als u afzonderlijke woorden kunt markeren, is het een native (tekstgebaseerde) PDF. Als de hele pagina als één blok wordt geselecteerd, is het een gescande afbeelding — u hebt OCR nodig. Hebt u de platte tekst nodig in plaats van een tabel, lees dan hoe u tekst uit een PDF haalt.
Methode 1: Online converteren met CleverUtils
De snelste optie voor de meeste gebruikers. CleverUtils extraheert tabellen met lijnen cel voor cel. Pagina's zonder zulke tabellen worden regel voor regel in één kolom geëxporteerd, en gescande PDF's gaan automatisch door OCR. Geen installatie, geen account vereist.
- Ga naar cleverutils.com/nl/pdf-to-csv
- Upload uw PDF — sleep en zet neer, of klik op « Kies PDF-bestand ». Max. 100 MB.
- Gescande PDF's vragen geen extra stap: als er geen tekst wordt gevonden, worden de eerste 10 pagina's gelezen met Engelse OCR, één regel per rij.
- Klik op « Converteren naar CSV » — conversie duurt enkele seconden voor de meeste bestanden.
- Download de CSV — open deze in Excel, Google Sheets of importeer in uw database.
CleverUtils verwerkt alle pagina's van uw PDF en combineert de geëxtraheerde rijen in één UTF-8-CSV-bestand. Bestanden worden versleuteld tijdens overdracht en automatisch verwijderd binnen 2 uur.
Methode 2: Python met pdfplumber
pdfplumber is de beste Python-bibliotheek voor het extraheren van tabellen uit PDF's. Het begrijpt tabellen met en zonder randen, geeft u coördinaten voor elk teken en laat u extractieparameters fijnafstellen.
pdfplumber installeren
pip install pdfplumber
Basis tabelextractie
Dit script extraheert alle tabellen van elke pagina van een PDF en schrijft ze naar een CSV-bestand:
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")
Omgaan met tabellen zonder randen
Wanneer tabellen geen zichtbare randen hebben, kan pdfplumber kolommen nog steeds detecteren met tekenposities. Gebruik extract_table() met aangepaste instellingen:
# Voor PDF's zonder zichtbare tabelranden
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)
Meerdere PDF's batchgewijs converteren
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)")
Methode 3: Microsoft Excel (Gegevens ophalen)
Microsoft 365 (Excel voor 365) kan PDF-bestanden rechtstreeks importeren met behulp van de Power Query / Gegevens ophalen-functie. Deze optie is niet beschikbaar in zelfstandige Excel 2016 of 2019 — het vereist een actief Microsoft 365-abonnement. Het werkt goed voor eenvoudige, goed gestructureerde tabellen.
- Open Excel en maak een nieuwe lege werkmap aan.
- Ga naar Gegevens → Gegevens ophalen → Uit bestand → Uit PDF.
- Selecteer uw PDF uit de bestandsbrowser.
- Kies de tabel(len) die u wilt importeren in het paneel Navigatie. Excel toont een voorbeeld van elke gedetecteerde tabel.
- Klik op « Laden » om de gegevens in uw werkblad te importeren.
- Opslaan als CSV: Bestand → Opslaan onder → kies « CSV (met komma's gescheiden) (*.csv) » als indeling.
Beperking: de PDF-import in Excel werkt het best met eenvoudige, afgebakende tabellen. Het heeft moeite met multi-kolom-indelingen, samengevoegde cellen en tabellen zonder randen. Gebruik voor complexe PDF's in plaats daarvan CleverUtils of Python.
Methode 4: Google Sheets
Google Sheets importeert PDF's niet rechtstreeks, maar u kunt de ingebouwde OCR van Google Drive gebruiken om eerst de tekst uit te nemen en deze vervolgens in Sheets te plakken.
- Upload de PDF naar Google Drive.
- Klik met de rechtermuisknop op de PDF → Openen met → Google Docs. Google zal OCR op het bestand toepassen en het converteren naar een bewerkbaar document.
- Selecteer de tabelgegevens in het Google Doc en kopieer (Ctrl+C / Cmd+C).
- Open een nieuw Google Sheet en plak (Ctrl+V / Cmd+V). De gegevens vullen de cellen in.
- Ruim de gegevens op — pas kolombreedte aan, verwijder extra rijen, corrigeer OCR-fouten.
- Downloaden als CSV: Bestand → Downloaden → Door komma's gescheiden waarden (.csv).
Tip: Google's OCR werkt verrassend goed voor gescande PDF's. Maar de tabelstructuur kan de kopieer-plak-stap mogelijk niet intact overleven. Voor betere resultaten met tabelgegevens, gebruik de directe PDF-naar-CSV-converter van CleverUtils.
Vergelijking van methoden
| Functie | CleverUtils | Python | Excel | Google Sheets |
|---|---|---|---|---|
| Moeilijkheid | Makkelijk | Geavanceerd | Gemiddeld | Makkelijk |
| Installatie | Geen (browser) | Python + pip | Microsoft 365 | Geen (browser) |
| Tabellen met randen | Uitstekend | Uitstekend | Goed | Redelijk |
| Tabellen zonder randen | Slecht (één kolom per regel) | Uitstekend | Slecht | Slecht |
| Gescande PDF's (OCR) | Automatisch (Engels, 10 pagina's, alleen tekst) | Met pytesseract | Niet ondersteund | Via Google Drive |
| Batchverwerking | Eén bestand tegelijk | Onbeperkt | Eén bestand tegelijk | Eén bestand tegelijk |
| Beste voor | Snelle eenmalige conversies | Automatisering & complexe PDF's | Excel-gebruikers met eenvoudige tabellen | Snelle extractie met OCR |
Tips voor schone CSV-uitvoer
- Controleer de koppelingrij. Sommige PDF's hebben headers met meerdere regels die in aparte CSV-rijen worden opgesplitst. Controleer na conversie of uw kolomkoppelingen op één rij staan.
- Wees voorzichtig met samengevoegde cellen. PDF-tabellen voegen cellen vaak samen voor groepskoppen. Deze worden meestal lege cellen in CSV. Vul ze handmatig in of met een script na extractie.
- Zorg voor speciale tekens. Komma's, aanhalingstekens en regelbreaks in celwaarden kunnen CSV-parsing verbreken. Goede converters (CleverUtils, pdfplumber) verwerken escaping automatisch. Als de uwe niet, verpak waarden in dubbele aanhalingstekens.
- Codering is van belang. Gebruik UTF-8-codering bij het opslaan van CSV om geaccentueerde tekens, valutasymbolen en non-Latijnse tekst te behouden. In Python:
open("out.csv", "w", encoding="utf-8-sig")(de-sigvoegt een BOM toe die Excel helpt UTF-8 te detecteren). - Tabellen op meerdere pagina's. Wanneer een tabel meerdere PDF-pagina's omvat, extraheren sommige gereedschappen elke pagina als een aparte tabel. Sla in Python de koptekstgrij op volgende pagina's over om duplicaten te voorkomen.
Veelvoorkomende problemen en oplossingen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Lege CSV-uitvoer | Gescande PDF (op afbeeldingen gebaseerd) | CleverUtils voert automatisch OCR uit; gebruik in Python pytesseract |
| Alle gegevens in één kolom | Excel opende CSV met verkeerd scheidingsteken | Gebruik Gegevens → Tekst naar kolommen → Gescheiden → Komma |
| Kolommen niet uitgelijnd | Tabel zonder randen met ongelijke afstand | Gebruik pdfplumber met vertical_strategy: "text" |
| Verminkte tekens | Onjuiste codering (meestal Latin-1 vs UTF-8) | Open in teksteditor, opslaan als UTF-8 |
| Dubbele koprijen | Tabel over meerdere pagina's met herhaalde koprijen | In Python, sla rij 0 over op pagina's na de eerste |
Adobe Acrobat en bankafschriften
Adobe Acrobat
Acrobat Pro exporteert PDF-tabellen naar Excel en niet rechtstreeks naar CSV: gebruik PDF exporteren → Spreadsheet → Microsoft Excel-werkmap, open het bestand daarna in Excel en sla het op als CSV UTF-8.
Bank- en creditcardafschriften
- Kijk eerst in uw internetbankieren: veel banken laten u transacties direct als CSV downloaden, wat conversiefouten voorkomt.
- Hebt u alleen de PDF, test dan of de tekst selecteerbaar is. Afschriften op tekstbasis converteren goed; gescande afschriften hebben OCR en een zorgvuldige controle nodig.
- Vergelijk na het converteren de totalen in de CSV met het afschrift en corrigeer datums en mintekens voordat u importeert in boekhoudsoftware.