Waarom je een gescande PDF niet kunt doorzoeken
Een PDF kan twee heel verschillende dingen bevatten. Een PDF uit Word heeft de tekst zelf: elke letter is een teken dat de computer kent. Een PDF uit een scanner of van een telefoon bevat per pagina een afbeelding en verder niets. Jij ziet letters, de computer ziet alleen pixels. Daarom doen zoeken, kopiëren en alles selecteren alsof de pagina leeg is.
Je ziet in een paar seconden welke van de twee je hebt. Open het bestand en sleep met de muis over een zin. Lichten losse woorden op, dan is er een tekstlaag. Verschijnt er een rechthoek over de pagina, zoals wanneer je een foto bijsnijdt, dan is het een scan.
Wat OCR met een PDF doet
OCR (optische tekenherkenning) bekijkt de paginafoto, zoekt uit waar regels en letters staan en maakt de tekst die er volgens het programma gedrukt staat. Een goed programma schrijft die tekst terug in de PDF als een onzichtbare laag, precies over de gedrukte woorden. De pagina ziet er nog hetzelfde uit als de scan. Daaronder heeft elk woord nu een positie, zodat zoeken het kan vinden, markeren en laten kopiëren.
Daar volgen twee dingen uit. OCR is een schatting en hoe goed die is hangt van de scan af: een scherpe scan op 300 dpi van twintigste-eeuws drukwerk wordt bijna foutloos gelezen, een vervaagde fotokopie op 150 dpi niet. Ook de taal doet ertoe. Een model dat op Engels is getraind heeft nog nooit een ij, een ë of een é gezien en leest ze als iets anders. Als je het programma vertelt in welke taal het document is geschreven, wordt het resultaat meteen beter.
Gratis manieren om een gescande PDF te herkennen
OCRmyPDF en Tesseract op de opdrachtregel
OCRmyPDF is gratis en open source. Het stuurt Googles Tesseract-engine aan en levert dezelfde paginabeelden met een doorzoekbare tekstlaag erbij, allemaal op je eigen computer.
ocrmypdf --language nld --deskew --rotate-pages scan.pdf doorzoekbaar.pdf
Vervang nld door deu, fra, eng of ita. Voor een document in twee talen zet je twee codes achter elkaar met een plusteken (nld+fra). Op macOS installeer je het met Homebrew (brew install ocrmypdf). Op Windows heb je pip en een aparte Tesseract-installatie nodig, met WSL als alternatief. Alles typ je zelf: elk bestand, elke map, elke taalkeuze. Voor tien PDF's is dat prima. Voor een map met tweeduizend wordt het een scriptproject. Zelfs dan kun je het resultaat nergens mee doorzoeken.
Adobe Acrobat
Acrobat Pro heeft een functie Scannen en OCR die tekst herkent in het geopende document en als batch over een map kan draaien. De herkenning is goed op schoon drukwerk, maar het werk blijft per bestand: openen, herkennen, opslaan. Met de uitgebreide zoekfunctie van Acrobat kun je door veel bestanden zoeken. Op scans is dat traag en je krijgt een lijst treffers zonder de pagina zelf. Acrobat Pro is een abonnement. De gratis Acrobat Reader kan geen OCR.
Google Drive en andere clouddiensten
Je uploadt de PDF naar Google Drive, klikt met de rechtermuisknop, kiest Openen met Google Documenten en Drive herkent de tekst. Het kost niets en je hebt geen software nodig, maar je document staat nu op een server die niet van jou is, onder voorwaarden die je niet hebt geschreven. Voor een gescand tijdschrift maakt dat weinig uit. Voor cliëntdossiers, medische stukken, personeelsdossiers of de brieven van je grootmoeder is het een beslissing die je bewust moet nemen. Daarover schreven we een aparte gids: OCR zonder iets te uploaden (Engels).
Ingebouwd in het besturingssysteem
Recente versies van macOS herkennen tekst in afbeeldingen en in PDF-pagina's in Voorvertoning (Live Text). Je kunt die tekst selecteren en kopiëren. Er wordt geen tekstlaag in het bestand geschreven en Finder vindt de woorden niet. Windows heeft geen ingebouwde PDF-OCR. Beide zijn handig om een alinea uit een scan te halen. Voor een doorzoekbaar archief helpen ze niet.
Wat er misgaat en hoe je het ziet
- Een verkeerde taal is veruit de meest voorkomende oorzaak van slechte resultaten. Een Nederlands document dat met een Engels model wordt gelezen verliest elke ij en elk accent.
- Onder 300 dpi verliezen letters het detail dat de engine nodig heeft. Scan opnieuw als het kan. Anders moet je rekenen op fouten in kleine letters.
- Pagina's die scheef op de glasplaat lagen of zijwaarts zijn ingevoerd. De meeste programma's rechten de pagina en herstellen draaiingen van 90 graden. Ondersteboven ingevoerde pagina's blijven een probleem voor programma's op basis van Tesseract, het onze inbegrepen.
- Versleten of vervaagd drukwerk in oude kranten, doorslagen en flauwe fotokopieën. De engine leest wat ze kan en de rest wordt ruis.
- Handschrift valt buiten wat OCR doet. Zie de veelgestelde vragen.
Een programma dat per pagina een betrouwbaarheidsscore toont, bespaart je het ontdekken van deze problemen via één gemiste zoekopdracht tegelijk. Tesseract levert die score, maar weinig programma's laten hem zien.
Searchive is de desktop-app die we bouwden voor wie vooral iets wil terugvinden in zijn scans. Je importeert een map, kiest per document de taal en elke pagina wordt doorzoekbaar, met de treffers gemarkeerd op de scan zelf. Alles draait op je eigen Mac of Windows-pc. Voor één document is het gratis en je hebt geen account nodig.
Op de wachtlijstAls je duizend bestanden hebt
Alles hierboven beantwoordt de vraag "hoe maak ik deze PDF doorzoekbaar?". De meeste mensen vragen iets anders: op welke pagina, ergens in deze dozen, staat een bepaalde naam? Om dat te beantwoorden heb je drie dingen nodig die programma's voor losse bestanden niet geven.
- OCR die zelf loopt over honderden bestanden, elk met een eigen taal, met een status per document en een herstart vanaf pagina 124 als pagina 124 van 350 mislukt.
- Eén zoekvak dat elk document doorzoekt en gerangschikte resultaten met een fragment geeft, in plaats van elk bestand openen en Ctrl+F indrukken.
- De treffer op de scan. Een lijst bestandsnamen is geen resultaat. De paginafoto met het gevonden woord gemarkeerd wel, want het originele blad is wat je aanhaalt.
Daarvoor is Searchive gemaakt. Je importeert PDF's (of een reeks telefoonfoto's die samen één document worden) en geeft aan of elk document in het Nederlands, Duits, Frans, Engels of Italiaans is geschreven. De app herkent en indexeert dan elke pagina op je eigen computer. Documenten die al een tekstlaag hebben worden zonder OCR geïndexeerd. Zoeken kent drie standen: alle woorden, een van de woorden (zodat Keulen, Cöln en Coeln dezelfde pagina vinden) en exacte zin. Elke pagina houdt haar betrouwbaarheidsscore, zodat je ziet welke een tweede blik verdienen.
De originelen, de doorzoekbare kopieën en de index blijven allemaal op je computer. Er wordt niets geüpload. De demovideo op de startpagina toont de app op een reeks tijdschriften uit de jaren dertig.
Veelgestelde vragen
Hoe zie ik of mijn PDF een scan is?
Probeer met de muis een woord te selecteren. Lukt dat, dan is er een tekstlaag. Verschijnt er een kader over de pagina alsof je een foto bijsnijdt, dan is de PDF een afbeelding en is OCR nodig voordat je erin kunt zoeken.
Verandert OCR mijn originele bestand?
Dat hangt van het programma af. Sommige overschrijven het bestand en de meeste maken een nieuw bestand. Searchive wijzigt het geïmporteerde bestand nooit. Het bewaart een aparte doorzoekbare kopie naast het onaangeroerde origineel.
Kan ik een gescande PDF gratis doorzoekbaar maken?
Ja. OCRmyPDF met Tesseract is gratis, open source en draait op je eigen computer vanaf de opdrachtregel. Google Drive herkent tekst in een geüploade PDF gratis, als je die upload acceptabel vindt. Acrobat Pro kan het ook maar is betaald.
Werkt Nederlandse OCR goed met ij, é en ë?
Met het Nederlandse taalmodel (nld) wel. Kies je per ongeluk Engels, dan gaan juist die tekens verloren. In Searchive kies je de taal per document en de zoekfunctie vindt woorden met accenten ook als je ze zonder accent typt.
Leest OCR ook handschrift?
Nee. De programma's op deze pagina zijn gemaakt voor gedrukte tekst. Handschrift vraagt een andere techniek, handschriftherkenning (HTR), zoals Transkribus. Searchive leest geen handschrift.