Hoe haal ik tekst uit een screenshot zonder het te uploaden?
Wat browser OCR daadwerkelijk leest: gemeten overeenkomst op zes fixtures, de 515 tekens die het heeft uitgevonden van een foto zonder tekst en het model dat je eenmalig betaalt om te downloaden.
De meeste OCR-sites nemen je screenshot, plaatsen het op een server en lezen het daar. Dat is prima voor een foto van een restaurantmenu. Het is een andere beslissing voor een loonstrook, een paspoortpagina of een screenshot van een privégesprek. Onze afbeelding naar tekst tool voert de herkenning uit in je browsertabblad, zodat het bestand op je schijf blijft en de tekst ernaast verschijnt.
De engine is Tesseract, gecompileerd naar WebAssembly en meegeleverd met de pagina. Je eerste uitvoering downloadt een worker-script, de WebAssembly-kern en één taalmodel. Je browser cachet alle drie. Daarna is er niets meer te ophalen.
Wordt mijn screenshot geüpload?
Nee. Er is geen upload-eindpunt in deze codebase dat er een kan ontvangen. Het enige netwerkverkeer dat de tool genereert is same-origin: 3 verzoeken die in totaal ongeveer 6 MB voor Engels bedragen, elk van hen geserveerd vanaf dit domein. Je bestand wordt binnen de pagina gedecodeerd, aan de engine gegeven als pixels en daar omgezet in tekst. Open het netwerk-tabblad tijdens een uitvoering en je zult modelchunks zien aankomen en niets dat je afbeelding wegneemt. Onze privacy pagina vermeldt de enige dingen die we verzamelen, namelijk paginabezoeken en anonieme tooltellingen.
De gevestigde partijen werken andersom. Smallpdf en iLovePDF doen beide de herkenning op hun eigen machines, zodat je bestand hen moet bereiken voordat er iets gebeurt. Hun antwoord op de privacyvraag is een retentiebelofte: de kopie wordt na een tijdje verwijderd. We hebben hun retentietekst geciteerd in de JPG naar PDF handleiding. Een retentiebelofte vertelt je hoe lang je paspoortscan op de schijf van iemand anders blijft staan. Het zegt niets over of het daar komt. Hier komt die vraag niet op.
Hoe nauwkeurig is het op een echte screenshot?
We hebben het gemeten. Zes fixtures met bekende tekst zijn op 2026-08-11 door de engine gegaan, en de score hieronder is een karakter-voor-karakter vergelijking van de output met de tekst waarvan we wisten dat deze in de afbeelding stond. De fixtures zijn synthetisch: HTML-pagina's weergegeven in een browser en vastgelegd als echte screenshots, met de vervaagde versie vervaagd en gedraaid in CSS zodat het een slechte telefoonopname imiteert.
| Fixture | Taal | Overeenkomst | Vertrouwen |
|---|---|---|---|
| Schone screenshot | Engels | 100.0% | 95 |
| Dichte paragraaf | Engels | 100.0% | 95 |
| Gesimuleerde vervaagde opname | Engels | 92.4% | 65 |
| Russisch voorbeeld | Russisch | 100.0% | 96 |
| Japans voorbeeld | Japans | 100.0% | 93 |
| Foto zonder tekst erin | Engels | 515 tekens van uitgevonden tekst | 32 |

Twee van de Engelse fixtures kwamen terug op 100.0%, karakter voor karakter, beide met een vertrouwen van 95. De vervaagde en gedraaide kopie van dezelfde paragraaf kwam uit op 92.4% en een vertrouwen van 65. Dat is 7.6 punten van overeenkomst verloren, en de figuur hierboven laat zien waar het naartoe ging: de openingswoorden zijn verknald terwijl het midden van de paragraaf overleeft. Vertrouwen 65 activeert ook de waarschuwing voor laag vertrouwen op de kaart, zodat je het weet voordat je kopieert.
Wat gebeurt er als er geen tekst in de afbeelding staat?
Dit is het deel dat andere OCR-pagina's overslaan. We gaven de engine een donkere foto van vlinders boven een mosrijke tak, en er staat nergens tekst in. Het gaf 515 tekens tekst terug die nooit hebben bestaan. Dat is wat OCR-engines doen. Ze zijn gebouwd om karaktervormen te vinden, dus korrel en textuur worden gerapporteerd als karakters, en geen enkele fase in de pijplijn beslist dat een afbeelding leeg is.
We beweren niet een lege afbeelding te detecteren, omdat we dat niet kunnen. Elk resultaat heeft zijn vertrouwensscore, en een waarschuwing gaat af wanneer het gemiddelde onder de 60 zakt. Die foto scoorde 32. Een schone screenshot scoort 95. De afstand tussen die twee getallen is het signaal, en het staat op de kaart voordat je de tekst aanraakt.
Leest het Russisch en Japans?
Negen talen: Engels, Spaans, Roemeens, Arabisch, Grieks, Turks, Indonesisch, Russisch en Japans. Kies er een voordat je extracteert, omdat de engine vormen vergelijkt met het model dat je hebt gekozen en het verkeerde model slecht leest. Er is nog geen automatische detectie. Beide niet-Latijnse fixtures kwamen schoon terug, Russisch op 100.0% en vertrouwen 96, Japans op 100.0% en vertrouwen 93 zodra de spatiëring is genormaliseerd, aangezien de engine spaties tussen Japanse karakters invoegt.

Elke taal is een apart modelbestand, tessdata_fast van het Tesseract-project, geserveerd vanaf dit domein zoals alles. Het toevoegen van één kost tussen de 0,6 en 2 MB de eerste keer dat je het selecteert, en alle negen samen zijn ongeveer 11 MB. Je browser houdt ze bij, dus het is een eenmalige kost per taal en de tweede uitvoering in een taal begint onmiddellijk.
Wanneer moet je dit niet gebruiken?
Handschrift. Het Tesseract-project zegt het zo duidelijk: je kunt het richten op handschrift, en het zal niet goed werken, omdat de engine is ontworpen voor gedrukte tekst. Tekst gefotografeerd in een scène is de andere zwakke zaak, het winkelbord en het schaplabel. De ingebouwde tekstselectie van je telefoon gaat daar beter mee om, en een dienst die is getraind op handschrift zal ons verslaan op een brief van je grootmoeder. We zeggen liever dat dan dat we de uitvoering nemen en je een onduidelijke paragraaf geven.
Voor alles wat anders is, komen de Tesseract kwaliteitsnotities overeen met wat we zagen in de fixtures: grotere en scherpere karakters worden beter gelezen, en donkere tekst op een lichte achtergrond is de gemakkelijke zaak. Screenshot de bron waar je kunt. Waar je dat niet kunt, schiet recht op met gelijkmatige verlichting en vul het kader met de tekst.
Wat doe ik daarna met de afbeelding?
De output is platte tekst. Kopieer het met de knop, die de Clipboard API van de browser gebruikt. Download een .txt per afbeelding, of neem de hele batch als één bestand mee. Je afbeelding is door niets aangeraakt. Als het kleiner moet worden voordat je het doorstuurt, doet de compressor dat in hetzelfde tabblad en de resizer verandert de pixelafmetingen. Doe een van beide na de extractie. Een screenshot eerst verkleinen gooit de pixels weg waaruit de karakters zijn opgebouwd.
Twee ketens die je moet kennen. Een HEIC-foto van een iPhone gaat er rechtstreeks in, gedecodeerd door de browser voordat de engine het ziet, zodat er geen formaatconversie stap eerst hoeft te worden gedaan. En als je alleen één blok tekst uit een lange screenshot wilt halen, laat het dan eerst door de cropper lopen, zodat de output het deel is dat je vroeg en niets anders. Het andere model dat lokaal op deze site draait is degene die beslist welke pixels het onderwerp zijn.
Probeer het op de slechtste screenshot die je hebt. Laat het vallen op de afbeelding naar tekst tool, kies de taal, en lees dan het vertrouwensnummer voordat je de tekst leest.
Wat met PDF's?
Een PDF splitst in twee voordat een van dit van toepassing is. Een bestand geëxporteerd vanuit een tekstverwerker of een browser heeft een tekstlaag, zodat de karakters er al in zitten en het eruit halen geen herkenning vereist. Een bestand dat van een scanner of een telefoon komt, is een afbeelding verpakt in een PDF, en het heeft dezelfde OCR-pas nodig als een afbeelding. Onze PDF naar tekst pagina controleert elke pagina en selecteert, en hoe het beslist welke pagina's precies zijn gelezen en welke zijn herkend is de langere uitleg. Op de fixtures kwamen een digitaal bestand en een drie pagina's tellend digitaal bestand beide terug op 100.0% rechtstreeks vanuit de tekstlaag, en een gescande pagina die is gemaakt met de eigen JPG naar PDF-converter van deze site kwam terug op 100.0% via OCR.

Er is een limiet van 25 pagina's per bestand. De oversize fixture is 28 pagina's, en de uitvoering las de eerste 25 en printte een melding dat dit zo was. Splits alles langer in een PDF-lezer en stuur de rest als een tweede uitvoering. Nog iets dat het waard is om te weten voordat je begint: een PDF trekt ongeveer 1,3 MB voor de lezer bovenop de OCR-engine en het model, en die OCR-download gebeurt nog steeds wanneer elke pagina digitaal blijkt te zijn en er niets herkend hoeft te worden.
De privacykwestie is hier sterker dan voor screenshots. Bankafschriften, loonstroken en scans van een ID zijn de documenten waar mensen het meest tekst uit willen halen, en dat zijn de documenten die je het minst aan de server van een vreemde zou willen geven. De PDF-pagina werkt zoals de afbeelding naar tekst tool, met het bestand dat van je schijf in het tabblad wordt gelezen en niets ergens naartoe wordt verzonden. Als je bron een PDF is, begin daar in plaats van elke pagina te screenshotten.