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) | CleverUtils met OCR ingeschakeld |
| Gemengde inhoud | Tabellen + alinea's + koppelingen 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.
Methode 1: Online converteren met CleverUtils
De snelste optie voor de meeste gebruikers. CleverUtils verwerkt native PDF's, tabellen zonder randen en zelfs gescande documenten met OCR. Geen installatie, geen account vereist.
- Ga naar cleverutils.com/nl/pdf-to-csv
- Upload uw PDF — sleep en zet neer, of klik op « PDF-bestand kiezen ». Max. 100 MB.
- Voor gescande PDF's: selecteer uw OCR-taal in de vervolgkeuzelijst voordat u converteert.
- Klik op « Naar CSV converteren » — 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 geëxtraheerde gegevens in één CSV-bestand. Bestanden worden gecodeerd 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 | Medium | Makkelijk |
| Installatie | Geen (browser) | Python + pip | Microsoft 365 | Geen (browser) |
| Afgebakende tabellen | Uitstekend | Uitstekend | Goed | Redelijk |
| Tabellen zonder randen | Goed | Uitstekend | Slecht | Slecht |
| Gescande PDF's (OCR) | Ingebouwd | 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 (afbeelding-gebaseerd) | Schakel OCR in CleverUtils in of gebruik 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" |
| Verminkt tekens | Onjuiste codering (meestal Latin-1 vs UTF-8) | Open in teksteditor, opslaan als UTF-8 |
| Dubbele koppelingen | Tabel met meerdere pagina's met herhaalde koppelingen | In Python, sla rij 0 over op pagina's na de eerste |