Ingen upload, 100% lokalt, ingen konto

Artikel

Forbedre OCR-nøjagtigheden: ret billedet, inden du genkender teksten

OCR er kun så god som det billede, du giver den. En skæv, lavkontrastig, støjende scanning producerer forvrænget tekst uanset hvor god motoren er. Her er det, der faktisk gør en forskel, i den rækkefølge du bør gøre det, alt køres lokalt i din browser.

Hvorfor OCR kæmper med rigtige scanninger

En OCR-motor som Tesseract blev trænet på ren, horisontal tekst med høj kontrast. Den opdeler en side i linjer, linjer i ord og ord i tegnformer, og matcher derefter hver form mod sin trænede model. Virkelige scanninger bryder disse antagelser: siden er vippet nogle grader, belysningen er ujævn, opløsningen er lav, og kanten på scannerbakken eller modstående side tilføjer mørkt støj. Hvert af disse problemer får linje- og tegnsegmenteringssteget til at gætte forkert, og en forkert segmentering fører til forkerte tegn. Løsningen er sjældent en anden motor: det handler om at forberede billedet, så motorens antagelser holder. I praksis forbedrer forbehandling nøjagtigheden mere end valget af OCR-motor gør.

Diagram over OCR-forbehandlingspipeline: en scanning passerer trinene orientering, skævheds­korrektion, beskæring og gråtoner, inden den når genkendelses­motoren.

Start med opløsning: sigt efter 300 DPI

Tesseract fungerer bedst ved omkring 300 DPI for normal brødtekst. Under cirka 200 DPI flyder stregerne i hvert tegn sammen med naboerne og nøjagtigheden falder kraftigt. Hvis du styrer scanningen, indstil scanneren til 300 DPI før alt andet, da det er det enkelt vigtigste valg. Hvis du kun har et lavopløseligt billede, skaber opskalering ikke detaljer, der aldrig blev fanget, men en moderat opskalering kan stadig hjælpe motoren med at adskille tegn, der rører hinanden, ved at give segmenteringen flere pixels at arbejde med. Meget lille skrift har gavn af 400 til 600 DPI; derover vokser filen kun uden nøjagtighetsgevinst. Når kilden er en PDF, rasteriser hver side til et billede ved mål-DPI'et først, og kør derefter OCR på det billede.

Korrekt orientering

Hvis siden er roteret 90, 180 eller 270 grader, læser motoren sidelengs eller på hovedet og returnerer nonsens. Tesseract har et orienteringsdetektionspass (OSD), der kan gætte rotationen, men det er upålideligt på sparsom tekst, formularer eller sider domineret af billeder. At rotere siden opret selv fjerner gætteriet. Dette trin er tabsfrit og øjeblikkeligt: at rotere med et multiplum af 90 grader remapper kun eksisterende pixels til nye positioner, uden kvalitetstab og ingen resampling. Gør det inden retning, fordi retning forudsætter, at teksten allerede er nogenlunde horisontal.

Retning: ret den lille hældning

Selv en hældning på 2 til 3 grader, den slags du får fra at indføre en side lidt skævt, skader OCR: det horisontale linjesøgningssted deler en tekstlinje i to eller slår to linjer sammen til én. Retning måler den dominerende vinkel på tekstlinjerne (sædvanligvis med en projektionsprofilanalyse eller Hough-transformanalyse) og roterer siden tilbage til vandret. I modsætning til en 90-graders rotation er retning en lille rotation med vilkårlig vinkel, der resampler pixels og tilføjer en lille mængde uskarphed. Den handel er næsten altid umagen værd, fordi jævne linjer segmenteres rent og nøjagtighetsgevinsten langt opvejer den svage blødhed. Ret ud efter at have rettet orientering og inden beskæring.

Før og efter skævhedskorrektion: en tekstside, der er skæv nogle grader til venstre, rettet til vandret til højre, så linjerne er vandrette.

Beskær til teksten og fjern støjen

Alt, der ikke er teksten du ønsker, er støj, som motoren kan mistolke: den mørke kant på scannerbakken, en del af den modsatte side, et hæftet hjørne, en finger eller et hulslagshul. At beskære til kun tekstblokken fjerner disse falske mål, hvilket både forbedrer nøjagtigheden og fremskynder genkendelsen, fordi motoren har et mindre område at analysere. For et dokument med flere kolonner forhindrer beskæring (eller at køre OCR én kolonne ad gangen) også, at motoren læser tværs over midtspalten og blander to kolonner til én forvrænget linje. Beskær efter retning, så indholdet sidder ret i rammen.

Kontrast, gråtoner og hvordan binarisering faktisk fungerer

OCR kører i sidste ende på et binært billede: hver pixel afgøres at være blæk eller papir. Tesseract gør dette internt ved hjælp af Otsu:s metode, der vælger en enkelt global tærskel fra billedhistogrammet. Det fungerer godt, når siden har jævn belysning og god kontrast, og mislykkes, når en skygge eller en farvet baggrund gør et hjørne mørkere end tærsklen forventer. De pålidelige gevinster er at konvertere til gråtoner, så en farvestik ikke kan forvirre tærsklen, og at udjævne belysningen, så hele siden befinder sig på én side af den. At øge kontrasten moderat hjælper svag tekst. Det, der normalt virker mod hensigten, er hård manuel binarisering: hvis du tærskelver til rent sort og hvid selv med den forkerte afskæring, sletter du svage streger, som motorens eget pass ville have beholdt. Lad motoren binarisere, og giv den et jævnt, gråtonebillede at starte fra. Sunasty tilbyder gråtoner for PDF:er; til fin kontrastjustering er en skrivebordsredigerer stadig bedre, men jævn belysning ved scanningstidspunktet betyder mere end nogen skyder.

Vælg det rigtige sprog og kontroller resultatet

Tesseract indlæser en separat trænet datafil pr. sprog og skrift. At køre en engelsk model over fransk eller græsk tekst producerer undgåelige fejl, især på accentuerede eller ikke-latinske tegn, så vælg det sprog, der svarer til dokumentet. Behandl endelig OCR-resultatet som et udkast, ikke et endeligt svar: motoren har ingen måde at vide, at et navn er staverigtigt, eller at et 0 ikke er et O. Korrekturlæs tal, egennavne og alt, der er juridisk eller økonomisk vigtigt. For tabeller og flerspaltelayout skal du forvente at rette strukturen i hånden, fordi OCR returnerer en strøm af genkendt tekst, ikke et rekonstrueret layout.

Værktøjer i denne artikel

Ofte stillede spørgsmål

Forbedrer opskalering af en sløret scanning OCR?

Ikke meget alene. Opskalering kan ikke gendanne detaljer, som scanningen aldrig fangede, så et sløret 100 DPI-billede forbliver sløret. En moderat opskalering kan hjælpe motoren med at adskille tegn, der rører hinanden, ved at give segmenteringen flere pixels, men at genscanne ved 300 DPI er langt mere effektivt end nogen mængde opskalering.

Skal jeg selv konvertere billedet til rent sort og hvid først?

Normalt ikke. Tesseract binariserer internt med Otsu:s metode, og en manuel hård tærskel med den forkerte afskæring sletter svage streger, som motoren ville have beholdt. Konverter til gråtoner og udjævn belysningen i stedet, og lad derefter motoren vælge sin egen tærskel.

Min tekst er på siden. Vil OCR rotere den automatisk?

Nogle gange. Tesseract har et orienteringsdetektionspass, men det er upålideligt på formularer, sparsom tekst eller billedtunge sider. At rotere siden opret selv med 90, 180 eller 270 grader er tabsfrit og fjerner gætteriet, så det er det sikrere valg.

Uploades mit dokument af noget af dette?

Nej. Rotation, retning, beskæring, konvertering til gråtoner og selve OCR kører alle i din browser. OCR bruger en WebAssembly-version af Tesseract, og de trænede sprogdata downloades én gang og cachelagres. Din fil forlader aldrig enheden.

Kilder