Van bestaande PDF naar PDF/UA: reconstrueren in plaats van retaggen

De oorspronkelijke Word-, XML- of opmaakbron is verdwenen. De PDF is er nog wel, ziet er goed uit en bevat tekst, maar heeft geen bruikbare structuur voor hulpsoftware zoals schermlezers. Kunt u daar geautomatiseerd een PDF/UA van maken?

In een eerder artikel beschreven we de route: analyseren, groeperen, reconstrueren, opnieuw genereren en valideren. De reconstructiekern daarvan draait inmiddels. Daarbij bleek de belangrijkste keuze niet een slimmer auto-tag-algoritme, maar een ander uitgangspunt: behandel de oude PDF als meetbaar bronmateriaal en bouw een nieuw semantisch document op.

Dat is geen belofte dat iedere willekeurige PDF met één druk op de knop toegankelijk wordt. Het is wel een reproduceerbare manier om gelijkvormige, digitaal gemaakte documenten seriegewijs te herstellen, met controles op zowel PDF/UA-conformiteit als inhoudsbehoud.

Waarom tags achteraf vaak op het verkeerde fundament rusten

Een PDF legt heel precies vast waar letters, lijnen en afbeeldingen op een pagina staan. Wat die onderdelen betekenen, is vaak verdwenen.

  • Twee tekstblokken naast elkaar kunnen kolommen zijn, maar ook een tabel.
  • Vetgedrukte tekst kan een kop zijn, maar ook gewone nadruk.
  • Een terugkerend logo kan paginameubilair zijn, terwijl een vergelijkbare afbeelding inhoud draagt.
  • Een nummer links van tekst kan een lijstmarkering, paragraafnummer of tabelcel zijn.
  • De zichtbare tekst van een link en de bijbehorende PDF-annotatie kunnen in verschillende objecten zitten.

Auto-tagging moet betekenis raden binnen de bestaande PDF-objecten. Als die objecten de leesvolgorde of inhoudsstructuur niet volgen, worden keurige tags op een verkeerd model gezet. Daarom repareren wij niet primair de structuurboom van het oude bestand. We lezen het bestand en maken een nieuwe structuur.

PDF met gemarkeerde elementen en pijlen naar verschillende mogelijke interpretaties.

Vier metingen leveren samen het bronbeeld

Geen enkele extractor bevat alle benodigde informatie. De reconstructieketen leest daarom vier kanten van dezelfde PDF:

  1. Tekst en coördinaten: woorden, regels, blokken, kolommen en hun begrenzingen.
  2. Typografie: fontfamilie, grootte, gewicht en kleur per tekstfragment.
  3. Getekende vormen: lijnen, kaders en vlakken die bijvoorbeeld een tabel of illustratie zichtbaar maken.
  4. Annotaties: externe en interne links, hun doel, positie en zichtbare linktekst.

Die signalen worden op coördinaten samengevoegd tot één tussenmodel. Pas daarna volgen leesvolgorde en semantiek:

bestaande PDF
  → tekst + typografie + vormen + annotaties
  → leesvolgorde
  → koppen, alinea's, lijsten, tabellen, figuren en links
  → semantische XSL-FO
  → nieuwe getagde PDF

De oude PDF blijft daarbij ongewijzigd. De nieuwe PDF is een apart, volledig opnieuw opgebouwd artefact.

Vier PDF-metingen — tekst, typografie, vormen en annotaties — komen samen in één model.

Eerst meten, alleen uitzonderingen configureren

Het schaalbare onderdeel is niet “één universele regel voor alle PDF's”. Het is de combinatie van generieke metingen en een kleine configuratie per documentfamilie.

Paginaformaat, marges, kolommen, goot, korps, regelhoogte, inspringing en witruimte worden uit de documenten zelf gemeten. Uitschieters mogen daarbij niet de hele bladspiegel bepalen; robuuste percentielen werken beter dan een minimum of maximum.

Een serieconfiguratie legt alleen vast wat niet betrouwbaar uit geometrie volgt, zoals:

  • welke typografie en tekstpatronen kopniveaus aangeven;
  • welk terugkerend beeld een logo of ander paginameubilair is;
  • wanneer een ogenschijnlijke tabel in werkelijkheid genummerde lopende tekst is;
  • welke omschrijving een terugkerend betekenisvol beeld krijgt.

Metadata uit de bron-PDF selecteert automatisch de juiste serieconfiguratie. Bij een nieuwe documentfamilie beginnen we dus met meten, niet met een handgeschreven sjabloon vol vaste posities.

Paginametingen, uitschieters en een configuratiechecklist voor een documentfamilie.

Kolommen zijn geen tabellen

De lastigste fouten ontstaan wanneer meetkunde ten onrechte als betekenis wordt behandeld. Een eerdere reconstructiepoging zette 96 procent van de lopende tekst in tabellen. Twee paginakolommen waren aangezien voor tabelkolommen; het resultaat groeide van enkele tientallen naar 126 pagina's met soms één woord per regel.

In de nieuwe keten wordt daarom eerst de leesvolgorde bepaald. Tabeldetectie komt pas daarna en moet voldoende bewijs vinden voor rijen én kolommen. Bevestigde tabellen worden opnieuw opgebouwd met Table, TR, TH en TD, inclusief expliciete relaties tussen datacellen en hun kopcellen. Tekstkolommen blijven gewone tekst.

Dit verschil is essentieel: een tabel is geen visuele indeling, maar een semantische relatie tussen cellen.

Vergelijking van tekstkolommen en tabellen, met een waarschuwing om die niet te verwarren.

Opnieuw genereren maakt kwaliteit afdwingbaar

Vanuit het tussenmodel maakt XSLT nieuwe XSL-FO. Apache FOP genereert daaruit een nieuwe PDF/UA-1-kandidaat met onder meer:

  • een logische structuurboom en leesvolgorde;
  • taal en titel;
  • echte lijsten en tabellen;
  • getagde links met hun beschrijving;
  • ingebedde fonts en betrouwbare Unicode-tekst;
  • paginameubilair dat als artifact buiten de inhoud blijft.

De formatter, stylesheets, fonts, extractors en validator zijn vast gepind. Een mislukte build bewaart de XSL-FO en rapporten, zodat dezelfde fout later exact kan worden gereproduceerd.

Workflow van XSLT via XSL-FO naar een gestructureerd PDF/UA-1-document.

Wat de huidige serietest daadwerkelijk bewijst

Een reeks van dertien Duitse overheidsdocumenten uit dezelfde publicatiefamilie is automatisch via metadata herkend en document voor document opnieuw opgebouwd. De regressietest van 29 juli 2026 gaf:

  • 13 van 13 nieuwe PDF's waren technisch intact volgens qpdf;
  • 146.393 van 146.393 Unicode-letters bleven behouden;
  • de ene unieke externe URI in de bronserie bleef 1 → 1 behouden;
  • 13 van 13 nieuwe artefacten behaalden met veraPDF 1.30.2 en het expliciete ua1-profiel een PDF/UA-1 PASS met nul gefaalde regels;
  • de eerste en laatste bron- en resultaatpagina van alle dertien documenten zijn gerenderd en visueel gecontroleerd.

Het totale paginatal veranderde van 114 naar 104. Dat was niet automatisch een fout: opnieuw vloeien combineerde enkele korte voorpagina's met het begin van de inhoud. Daarom is “evenveel pagina's” geen algemene kwaliteitsmaat. Volledige letterstroom, links, semantische structuur en visuele bruikbaarheid zijn sterkere controles.

Deze uitkomst bewijst de gecontroleerde serie en de geteste constructies. Zij bewijst niet dat ieder type PDF al automatisch kan worden verwerkt.

Stapel PDF's met 13/13 resultaten, 146.393 behouden letters en een groene vink.

Eén groene validator is niet genoeg

De keten gebruikt bewust meer dan één kwaliteitspoort:

  1. Vorm: veraPDF controleert de machineverifieerbare eisen van PDF/UA-1.
  2. Inhoud: de tekststroom en URI's worden met de bron vergeleken.
  3. Integriteit: qpdf controleert of het nieuwe bestand technisch geldig is.
  4. Beeld: representatieve pagina's worden gerenderd en bekeken.
  5. Menselijke beoordeling: betekenisvolle alternatieve teksten, complexe leesvolgorde en de juistheid van semantische keuzes blijven waar nodig een reviewpunt.

Die tweede poort is niet theoretisch. Tijdens de ontwikkeling ontstond een PDF die de formele PDF/UA-controle haalde terwijl een groot deel van de tekst ontbrak. Conformiteit van de bestandsstructuur en behoud van de publicatie zijn twee verschillende vragen.

veraPDF vermeldt zelf dat zijn PDF/UA-validatie alleen de machineverifieerbare controles uitvoert. Een groen ua1-rapport mag daarom alleen als technisch conformiteitsbewijs voor precies dat bestand worden gepresenteerd, niet als volledige gebruikerstest of algemene wettelijke goedkeuring.

Vijf verbonden controles voor structuur, inhoud, integriteit, beeld en menselijke beoordeling.

Waar automatisering wel en niet past

Deze aanpak past goed bij digitaal gemaakte PDF's met een tekstlaag, herkenbare documentfamilies en terugkerende vormgeving. Daar kan één geteste serieconfiguratie veel documenten bedienen en kan iedere volgende wijziging tegen hetzelfde regressiecontract worden gecontroleerd.

Scans zonder betrouwbare tekstlaag, formulieren, infographics, ingewikkelde wiskunde en documenten waarvan de betekenis alleen bij de auteur bekend is, vragen aanvullende extractie of menselijke keuzes. Ook alternatieve teksten kunnen niet verantwoord uit alleen geometrie worden afgeleid.

Daarom begint een traject niet met een bulkbelofte, maar met een representatief corpus:

  1. documentfamilies en uitzonderingen vaststellen;
  2. bronkwaliteit en extracteerbaarheid meten;
  3. acceptatiecriteria voor inhoud, structuur en beeld afspreken;
  4. één serie end-to-end reconstrueren;
  5. menselijke controlepunten expliciet maken;
  6. pas na een groene regressieset opschalen.

Zo wordt bestaande-PDF-remediatie geen oncontroleerbare conversie, maar een herhaalbaar productieproces met bewijs per bestand.

Automatische verwerking van PDF's met tekstlaag naast documenten die menselijk ingrijpen vragen.

Bronnen en afbakening

De genoemde testresultaten gelden voor de op 29 juli 2026 gecontroleerde artefacten en de daarin afgedekte documentconstructies. PDF/UA-conformiteit wordt alleen geclaimd voor een artefact met een succesvol veraPDF ua1-rapport; menselijke toegankelijkheidscontrole blijft aanvullend nodig waar de norm een inhoudelijk oordeel vraagt.

ISO 14289-1, het Matterhorn Protocol en veraPDF als bronnen voor PDF/UA-controle.

Wil je hier meer over weten?

Neem contact op om te bespreken wat dit voor jouw organisatie kan betekenen.

Neem contact op