CodeKitHub
Waarom foto's van boekpagina's mislukken bij OCR (en hoe een paar graden scheefstand de nauwkeurigheid ruïneert)

Waarom foto's van boekpagina's mislukken bij OCR (en hoe een paar graden scheefstand de nauwkeurigheid ruïneert)

Gepubliceerd op 24 jul 2026

Als je ooit een foto van een boekpagina hebt proberen om te zetten naar tekst en er een muur van verminkte onzin voor terugkreeg, heb je waarschijnlijk het verkeerde de schuld gegeven. Het is verleidelijk om te denken dat oud, vergeeld papier of slecht licht de boosdoener is — maar in tests maakte geen van beide veel verschil. De echte oorzaak is bijna altijd iets wat je niet zomaar aan de foto kunt zien: een kleine camerakanteling.

De test: dezelfde pagina, vier omstandigheden

Om erachter te komen wat OCR (optical character recognition) op foto’s van boekpagina’s in de praktijk echt breekt, hebben we hetzelfde blok tekst door Tesseract gehaald — de opensource OCR-engine — onder vier omstandigheden: een nette platte scan, een vergeelde/vervaagde pagina, een foto met ongeveer 12 graden scheefstand, en een scheve foto met een lichtreflectie erbij.

Conditie Woordnauwkeurigheid
Schone, platte scan 100%
Vergeelde, vervaagde pagina (geen scheefstand) 100%
~12° scheef (geen verkleuring) 67,7%
~8° scheef + reflectie 71,0%

De vergeelde pagina scoorde precies hetzelfde als de brandschone versie — volle punten. Zodra er scheefstand werd toegevoegd, stortte de nauwkeurigheid met een derde in, en dat leverde precies het soort output op dat iedereen kent die “schoolboek scannen naar tekst” tools heeft geprobeerd: "brow," in plaats van “brown”, "Chapte,." in plaats van “Chapter.”, "hidde,," in plaats van “hidden”.

Waarom een piepklein kanteltje zoveel schade aanricht

OCR-engines lezen tekst door de rijen van een afbeelding te scannen op zoek naar consistente horizontale banden inkt — dat is het mechanisme waarmee ze de ene tekstregel van de volgende onderscheiden. Op een perfect rechte scan ligt elke tekstregel netjes in een horizontale band, en de engine scheidt regel 1 keurig van regel 2 en van regel 3.

Kantel de pagina zelfs maar 10 graden, en die nette horizontale band wordt een diagonale veeg die tientallen pixelrijen beslaat. De regelherkenningslogica van de engine begint tekens uit wat eigenlijk twee aparte regels zouden moeten zijn samen te voegen, of splitst één teken op over wat hij denkt dat twee verschillende regels zijn. Het resultaat is niet “iets minder nauwkeurig” — het is compleet andere output, omdat de fundamentele eenheid die de engine leest (een regel) niet meer overeenkomt met wat er daadwerkelijk in de afbeelding staat.

Dit verklaart ook waarom een foto die voor jou volkomen leesbaar lijkt, toch onleesbare OCR-output kan opleveren. Jouw visuele systeem compenseert een kanteling van 10 graden zonder enige bewuste moeite — je merkt het niet eens als scheef op. Een naïeve OCR-pipeline heeft die compensatie niet ingebouwd en leest precies de pixels die hij krijgt.

De oplossing: rechttrekken vóór het herkennen, niet erna

De praktische conclusie is niet “houd je telefoon voorzichtiger vast” — een beetje scheefstand bij het fotograferen van een opengeslagen boek is bijna onvermijdelijk, want je drukt de pagina niet plat tegen een scanner. De oplossing is automatisch: detecteer de kantelhoek en corrigeer die voordat je tekstherkenning uitvoert, niet erna.

Een betrouwbare manier om de hoek te detecteren zonder zwaar machine-learning-model is de projectieprofielmethode: draai de afbeelding door een reeks kandidaathoeken, en meet voor elke hoek hoe “piekerig” de inktverdeling per rij is. Bij de juiste hoek liggen tekstregels netjes in scherpe banden (hoge variantie tussen rijen); bij elke andere hoek smeert de inkt uit over de rijen (lage variantie). De hoek met de hoogste variantie is de correctiehoek.

Deze correctie eerst uitvoeren en dan pas tekst herkennen bracht elk van onze scheve testgevallen terug naar 100% woordnauwkeurigheid — dezelfde pagina, dezelfde OCR-engine, het enige verschil was hem eerst recht te trekken.

Wat dit betekent als je een boek aan het digitaliseren bent

  • Maak je geen zorgen over de papierconditie. Vergeling, lichte verbleking en wat contrastverlies door verouderd papier beïnvloeden de nauwkeurigheid nauwelijks op zichzelf. Een oude pocket digitaliseert ongeveer net zo goed als een nieuwe.
  • Maak je wél zorgen over de hoek. Zelfs een kanteling die je met het blote oog niet zou opmerken, kan het volledige verschil zijn tussen bruikbare tekst en rommel.
  • Reflectie van een flits doet er minder toe dan scheefstand, maar hindert nog steeds. Een felle lichtvlek op glanzend papier kan de tekst eronder volledig wegvagen — hoekcorrectie lost geen plek op waar simpelweg geen leesbare inkt meer te lezen is.
  • Een tool die scheefstand automatisch corrigeert lost het echte probleem op. Onze book page to text tool voert deze exacte detectie-en-correctiestap uit in je browser voordat er herkend wordt — geen upload, geen server, en hij is specifiek gebouwd rond het scheefstandsprobleem in plaats van ervan uit te gaan dat je hem een platte scan voert.

Als je eerder OCR op een boekfoto hebt geprobeerd en het opgaf omdat het resultaat onleesbaar was: de pagina was waarschijnlijk niet het probleem — een paar graden camerahoek bijna zeker wel.

← Terug naar blog