Sådan laver du OCR fra Linux-kommandolinjen ved hjælp af Tesseract

Du kan udtrække tekst fra billeder på Linux-kommandolinjen ved hjælp af Tesseract OCR-motoren. Det er hurtigt, præcist og fungerer på omkring 100 sprog. Sådan bruger du det.

Optisk tegngenkendelse

Optisk tegngenkendelse (OCR) er evnen til at se på og finde ord i et billede og derefter udtrække dem som redigerbar tekst. Denne enkle opgave for mennesker er meget vanskelig for computere at udføre. Den tidlige indsats var mildest talt klodset. Computere var ofte forvirrede, hvis skrifttypen eller størrelsen ikke var til OCR-softwarens smag.

Ikke desto mindre var pionererne på dette område stadig højt værdsatte. Hvis du mistede den elektroniske kopi af et dokument, men stadig havde en trykt version, kunne OCR genskabe en elektronisk, redigerbar version. Selvom resultaterne ikke var 100 procent nøjagtige, var dette stadig en stor tidsbesparelse.

Med noget manuel oprydning ville du have dit dokument tilbage. Folk var tilgivende over for de fejl, den lavede, fordi de forstod kompleksiteten af ​​opgaven, som en OCR-pakke står over for. Derudover var det bedre end at skrive hele dokumentet igen.

Tingene er blevet væsentligt forbedret siden da. Tesseract OCR-applikationen, skrevet af Hewlett Packard, startede i 1980’erne som en kommerciel applikation. Det var open source i 2005, og det er nu understøttet af Google. Det har flersprogede muligheder, betragtes som et af de mest nøjagtige OCR-systemer, der findes, og du kan bruge det gratis.

Installation af Tesseract OCR

Brug denne kommando for at installere Tesseract OCR på Ubuntu:

sudo apt-get install tesseract-ocr

På Fedora er kommandoen:

sudo dnf install tesseract

På Manjaro skal du skrive:

sudo pacman -Syu tesseract

Brug af Tesseract OCR

Vi vil stille en række udfordringer til Tesseract OCR. Vores første billede, der indeholder tekst, er et uddrag fra betragtning 63 i Generelle databeskyttelsesforordninger. Lad os se, om OCR kan læse dette (og forblive vågen).

  Sådan gør du Linux-terminalen brugervenlig med ColorLS

Det er et vanskeligt billede, fordi hver sætning starter med et svagt hævet tal, hvilket er typisk i lovgivningsdokumenter.

Vi er nødt til at give tesseract-kommandoen nogle oplysninger, herunder:

Navnet på billedfilen, vi vil have den skal behandle.
Navnet på den tekstfil, den vil oprette for at holde den udpakkede tekst. Vi behøver ikke at angive filtypenavnet (det vil altid være .txt). Hvis der allerede findes en fil med samme navn, vil den blive overskrevet.
Vi kan bruge –dpi-indstillingen til at fortælle tesseract, hvad der er prikker pr. tomme (dpi) opløsning af billedet er. Hvis vi ikke angiver en dpi-værdi, vil tesseract forsøge at finde ud af det.

Vores billedfil hedder “recital-63.png”, og dens opløsning er 150 dpi. Vi vil oprette en tekstfil fra den kaldet “recital.txt.”

Vores kommando ser sådan ud:

tesseract recital-63.png recital --dpi 150

Resultaterne er meget gode. Det eneste problem er de hævede tekster – de var for svage til at blive læst korrekt. Et billede af god kvalitet er afgørende for at få gode resultater.

tesseract har fortolket de hævede numre som anførselstegn (“) og gradsymboler (°), men selve teksten er blevet ekstraheret perfekt (højre side af billedet skulle trimmes for at passe her).

Det sidste tegn er en byte med den hexadecimale værdi på 0x0C, som er et vognretur.

Nedenfor er endnu et billede med tekst i forskellige størrelser, og både fed og kursiv.

Navnet på denne fil er “bold-italic.png.” Vi ønsker at oprette en tekstfil kaldet “bold.txt”, så vores kommando er:

tesseract bold-italic.png bold --dpi 150

Denne gav ingen problemer, og teksten blev udtrukket perfekt.

Brug af forskellige sprog

Tesseract OCR understøtter omkring 100 sprog. For at bruge et sprog skal du først installere det. Når du finder det sprog, du vil bruge, på listen, skal du notere dets forkortelse. Vi vil installere support til walisisk. Dens forkortelse er “cym”, som er en forkortelse for “Cymru”, hvilket betyder walisisk.

  Sådan opsætter du Rclone til Linux

Installationspakken kaldes “tesseract-ocr-” med sprogforkortelsen mærket i slutningen. For at installere den walisiske sprogfil i Ubuntu bruger vi:

sudo apt-get install tesseract-ocr-cym

Billedet med teksten er nedenfor. Det er det første vers af den walisiske nationalsang.

Lad os se, om Tesseract OCR er op til udfordringen. Vi bruger muligheden -l (sprog) til at lade tesseract vide, hvilket sprog vi ønsker at arbejde på:

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150

tesseract klarer sig perfekt, som vist i den ekstraherede tekst nedenfor. Da iawn, Tesseract OCR.

Hvis dit dokument indeholder to eller flere sprog (som f.eks. en walisisk-til-engelsk ordbog), kan du bruge et plustegn (+) til at bede tesseract om at tilføje et andet sprog, som sådan:

tesseract image.png textfile -l eng+cym+fra

Brug af Tesseract OCR med PDF’er

Tesseract-kommandoen er designet til at fungere med billedfiler, men den er ikke i stand til at læse PDF-filer. Men hvis du har brug for at udtrække tekst fra en PDF, kan du først bruge et andet værktøj til at generere et sæt billeder. Et enkelt billede vil repræsentere en enkelt side i PDF’en.

Det pdftppm-værktøj, du har brug for skulle allerede være installeret på din Linux-computer. PDF’en, vi vil bruge til vores eksempel, er en kopi af Alan Turings banebrydende papir om kunstig intelligens, “Computing Machinery and Intelligence.”

PDF af titelbladet til

Vi bruger -png-indstillingen til at angive, at vi vil oprette PNG-filer. Filnavnet på vores PDF er “turing.pdf.” Vi kalder vores billedfiler “turing-01.png”, “turing-02.png” og så videre:

pdftoppm -png turing.pdf turing

For at køre tesseract på hver billedfil ved hjælp af en enkelt kommando, skal vi bruge en for sløjfe. For hver af vores “turing-nn.png,” filer kører vi tesseract og opretter en tekstfil kaldet “text-” plus “turing-nn” som en del af billedfilens navn:

for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;

for i i turing-??.png;  lave tesseract

For at kombinere alle tekstfilerne til én, kan vi bruge kat:

cat text-turing* > complete.txt

cat text-turing* > complete.txt i et terminalvindue.”  width=”646″ højde=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<div style=

Så hvordan gik det? Meget godt, som du kan se nedenfor. Den første side ser dog ret udfordrende ud. Det har forskellige tekststile og størrelser og dekoration. Der er også et lodret “vandmærke” i højre kant af siden.

Men outputtet er tæt på originalen. Naturligvis gik formateringen tabt, men teksten er korrekt.

Det lodrette vandmærke blev transskriberet som en ordsprog nederst på siden. Teksten var for lille til at blive læst af tesseract nøjagtigt, men det ville være let nok at finde og slette den. Det værste resultat ville have været omstrejfende tegn i slutningen af ​​hver linje.

Mærkeligt nok er de enkelte bogstaver i starten af ​​listen over spørgsmål og svar på side to blevet ignoreret. Afsnittet fra PDF’en er vist nedenfor.

Som du kan se nedenfor, forbliver spørgsmålene, men “Q” og “A” i starten af ​​hver linje gik tabt.

Diagrammer vil heller ikke blive transskriberet korrekt. Lad os se på, hvad der sker, når vi forsøger at udtrække den viste nedenfor fra Turing PDF’en.

Et diagram af

Som du kan se i vores resultat nedenfor, blev tegnene læst, men formatet på diagrammet gik tabt.

Igen kæmpede tesseract med den lille størrelse af abonnenterne, og de blev gengivet forkert.

Retfærdigvis var det dog stadig et godt resultat. Vi var ikke i stand til at udtrække ligetil tekst, men så blev dette eksempel bevidst valgt, fordi det var en udfordring.

En god løsning, når du har brug for det

OCR er ikke noget, du skal bruge dagligt. Men når behovet opstår, er det godt at vide, at du har en af ​​de bedste OCR-motorer til din rådighed.