Hvordan å skanne og OCR som en proff med åpen kildekode tools


Med optisk tegngjenkjenning (OCR), kan du skanne innholdet i et dokument til en enkelt fil med redigerbar tekst. Denne artikkelen, som fokuserer på å skanne bøker, beskriver trinnene du må ta for å forberede sider for optimal OCR resultater, og sammenligner ulike gratis OCR verktøy for å avgjøre hvilken som er best på å trekke ut teksten.



Først brann opp distribusjonens pakkebehandleren for å hente noen pakker og avhengigheter. I Debian, de nødvendige pakkene er tilregnelig, tilregnelig-utils, imagemagick, unpaper, tesseract-ocr, og tesseract-OCR-eng. Du kan også installere andre språkpakker for Tesseract - for eksempel, jeg installerte tesseract-ocr-deu for tysk tekst

Skanning sidene

Før du kan oversette bilder til tekst, må du. å skanne sidene. Hvis du ønsker å skanne en bok, kan du ikke bruke en automatisk feed for skanneren. Følgende lille bash /ksh script skanner sider en om gangen og utganger hver til en egen fil i bærbar anymap format kalt skan- n
.pnm:

 
 for jeg i $ (seq --format =% 003.f 1 150); do echo Forbered side $ jeg og trykk enter lese scanimage --device 'brother2: BUS1; dev1' --format = PNM --mode 'Ekte grå' --resolution 300 l 90 -t 0 -x 210 -y 200 - -brightness -20 --contrast 15 > skan- $ i.pnmdone 


Juster parametere til scanimage kommandoen i henhold til din skannermodell (finne ut hvilken enhet navn du kan bruke med scanimage -L og se opp enhetsspesifikke alternativer med scanimage --help --device yourdevice
). Også justere innstillingene for parametrene -l (kast til venstre), -t (kast på toppen), -x, og -y (X- og Y-koordinater i nedre høyre hjørne på siden). Prøv å plassere boken på en måte som gjør det mulig å bruke disse parametre for å definere et rektangel som inneholder bare teksten, ikke bindende eller grensen. Ikke bekymre deg om sidetallet; du kan kutte den ut senere med litt innsats.


Dine skanninger kan ikke plasseres konsekvent eller har skygger i hjørnene. Hvis du mate disse bildene til et OCR-program, vil du ikke få nøyaktige resultater uansett hvor god den OCR-motoren kan være. Du kan imidlertid bruke unpaper kommandoen før du påfører OCR magi til preprocess bildet og dermed få en gjenkjent tekst mer nøyaktig. Hvis du skannet sidene i riktig retning - det vil si høyre side opp - du kan bruke standardinnstillingene med unpaper; ellers kan du bruke noen av nytte mange alternativer. For eksempel --pre rotere -90 roterer bildet mot klokken. Du kan også fortelle unpaper at to sidene blir skannet i ett bilde. Se håndboken side for detaljert informasjon. Følgende unpaper script forbereder de skannede bildene for optimal OCR ytelse:


 
 for jeg i $ (seq --format =% 003.f 1 150); gjøre echo forbereder side $ jeg unpaper skan- $ i.pnm unpapered- $ jeg konvertere unpapered- $ i.pnm forberedt- $ i.tif & & rm unpapered- $ i.pnmdone 


Du må konvertere skanninger fra .pnm filer fordi den beste OCR verktøyet jeg har funnet krever TIFF innspill format.


< h4> Sammenligning OCR verktøy


Nå kommer den viktigste delen: den automatiserte optisk tegngjenkjenning. Mange åpen kildekode-verktøy er tilgjengelig for denne jobben, men jeg testet et utvalg og funnet at de fleste ikke gir tilfredsstillende resultater. Dette er ikke en representativ undersøkelse, men det er klart at noen open source verktøy utfører langt bedre enn andre.


For å illustrere, jeg har forberedt et lite eksempel fra en tysk bok skrevet av min kones bestefar. Figuren til høyre viser den opprinnelige teksten. Det er en mindre versjon av den opprinnelige 300 DPI skanning som jeg matet til OCR-programmer


GOCR ga følgende resultater:.


Ja, wer _einer __leute hat IHN njcht jn _3meg. Menc_al fra_e 3ch _jch, van- _ gerade der Maulbeerba_ es 3st. Ejne Aprikose ist doc.h eine vjel edlere m3cht


Ocrad gitt følgende:.


Ia, Hennes meiner _leute hat IHN nicht i _iMe_. M ò nchmal fragte ich mich, Na- nm gerade der Maulbeerbaum es ist. . Eine Rpyik_e ist doch eine viel edlere nvcht


Jeg brukte -l deu alternativet med Tesseract-OCR å velge det tyske ordet bibliotek, noe som resulterte i følgende:


Ja. wer meiner Landsleute hat IHN nicht i Erinnerung. Manchmal fragte ich mich, van- rum gerade der Maulbeerbaum es ist. . Eine Aprikose ist doch eine viel edlere Frucht


Av de tre, Tesseract-OCR fungert best, gjør bare én feil: det tolket komma i den første linjen som en periode. Derfor har jeg laget Tesseract-OCR verktøyet mitt valg. Denne enkle skriptet bruker dette programmet til å bruke OCR på hver skannet side:


 
 for jeg i $ (seq --format =% 003.f 1 150); gjøre ekko gjør OCR på side $ jeg tesseract forberedt- $ i.tif tesseract- $ jeg -l engdone 


Resultatet av denne prosessen er en haug med tekstfiler som hver representerer innholdet på en side .


Sette alt sammen


Før du oppretter en konsolidert dokument, vil du ønsker å fjerne eventuelle sidetall som fortsatt eksisterer i ditt tekstfiler. Hvis de er plassert over teksten, kan du strippe den første linjen fra hver tekstfil som Tesseract-OCR produsert:


 
 for jeg i $ (seq --format = % 003.f 1 150); gjøre hale -n 2 tesseract- $ i.txt > tekst- $ i.txtdone 


Hvis de er under teksten, bare bruke hodet -n -1 i skriptet ovenfor i stedet for å hale -n 2. Dette fører til at skript for å fjerne den siste linjen og ikke den første


Til slutt, bruk katt tekst - * txt >.. Complete.txt å skape én stor fil som inneholder hele boken. Redigere den resulterende filen og unhyphenate hele teksten ved å erstatte hver kombinert forekomst av en bindestrek og et linjeskift med en tom streng. Du kan også fjerne unødvendige linjeskift. I gedit, kan du definere dine egne verktøy og gjøre dem tilgjengelig via en hurtigtast. Jeg definert følgende verktøy for å arbeide på dagens valg:


 
 # /bin /sh # linjeskift til spacestr '\\ n' '' # bare én plass tegn om! timesed 's /[[: blank:]] {2,} //' 


Med denne kan du velge noen linjer og trykk definerte snarvei. Hele utvalget blir én linje.


Du har nå ett stort dokument som representerer innholdet i boken. Vurder å lese hele filen på nytt for å finne eventuelle skrivefeil som måtte være igjen, og deretter gå videre til LaTeX for å skape et profesjonelt utseende Portable Document Format fil fra skannet tekst. Anmeldelser