OCR uitvoeren vanaf de Linux-opdrachtregel met Tesseract

Een terminalvenster op een Linux-laptop.
Fatmawati Achmad Zaenuri / Shutterstock

U kunt tekst uit afbeeldingen op de Linux-opdrachtregel extraheren met de Tesseract OCR-engine. Het is snel, nauwkeurig en werkt in ongeveer 100 talen. Hier leest u hoe u het kunt gebruiken.

Optische karakter erkenning

Optische tekenherkenning (OCR) is de mogelijkheid om woorden in een afbeelding te bekijken en te vinden, en ze vervolgens als bewerkbare tekst te extraheren. Deze eenvoudige taak voor mensen is erg moeilijk voor computers om te doen. De eerste pogingen waren op zijn zachtst gezegd onhandig. Computers waren vaak in de war als het lettertype of de grootte niet naar de zin van de OCR-software was.

Niettemin stonden de pioniers op dit gebied nog steeds in hoog aanzien. Als u de elektronische kopie van een document bent kwijtgeraakt, maar nog steeds een gedrukte versie heeft, kan OCR een elektronische, bewerkbare versie opnieuw maken. Zelfs als de resultaten niet 100 procent nauwkeurig waren, was dit nog steeds een grote tijdbesparing.

Als je wat handmatig opruimt, heb je je document terug. Mensen waren vergevingsgezind over de fouten die het maakte omdat ze de complexiteit begrepen van de taak waarmee een OCR-pakket te maken heeft. Bovendien was het beter dan het hele document opnieuw te typen.

Sindsdien zijn de zaken aanzienlijk verbeterd. De Tesseract OCR-applicatie, geschreven door Hewlett Packard, begon in de jaren 80 als een commerciële applicatie. Het was in 2005 open source en wordt nu ondersteund door Google. Het heeft meertalige mogelijkheden, wordt beschouwd als een van de meest nauwkeurige OCR-systemen die er zijn en u kunt er gratis gebruik van maken.

Tesseract OCR installeren

Gebruik deze opdracht om Tesseract OCR op Ubuntu te installeren:

sudo apt-get install tesseract-ocr

sudo apt tesseract-ocr installeren in een terminalvenster.

Op Fedora is het commando:

sudo dnf install tesseract

sudo dnf install tesseract in een terminalvenster.

Op Manjaro moet je typen:

sudo pacman -Syu tesseract

sudo pacman -Syu tesseract in een terminalvenster.

Met behulp van Tesseract OCR

We gaan een reeks uitdagingen stellen aan Tesseract OCR. Onze eerste afbeelding met tekst is een uittreksel uit overweging 63 van de algemene verordening gegevensbescherming. Laten we kijken of OCR dit kan lezen (en wakker blijven).

uittreksel uit overweging 63 van de AVG

Het is een lastig beeld omdat elke zin begint met een vaag superscriptnummer, wat typerend is voor wetgevingsdocumenten.

We moeten de tesseract commando wat informatie, waaronder:

  • De naam van het afbeeldingsbestand dat we willen verwerken.
  • De naam van het tekstbestand dat het zal maken om de geëxtraheerde tekst in te bewaren. We hoeven de bestandsextensie niet op te geven (het zal altijd .txt zijn). Als er al een bestand met dezelfde naam bestaat, wordt dit overschreven.
  • We kunnen de --dpi optie om te vertellen tesseract wat de resolutie van de afbeelding in dots per inch (dpi) is. Als we geen dpi-waarde opgeven, tesseract zal proberen het uit te zoeken.

Ons afbeeldingsbestand heet “recital-63.png” en de resolutie is 150 dpi. We gaan er een tekstbestand van maken met de naam ‘recital.txt’.

Ons commando ziet er als volgt uit:

tesseract recital-63.png recital --dpi 150

tesseract recital-63.png overweging --dpi 150 in een terminalvenster.

De resultaten zijn erg goed. Het enige probleem zijn de superscripts: ze waren te zwak om correct te worden gelezen. Een afbeelding van goede kwaliteit is essentieel om goede resultaten te krijgen.

Tekst uit overweging 63 gehaald.

tesseract heeft de superscriptnummers geïnterpreteerd als aanhalingstekens (“) en graden-symbolen (°), maar de eigenlijke tekst is perfect geëxtraheerd (de rechterkant van de afbeelding moest worden bijgesneden om hier te passen).

Het laatste teken is een byte met de hexadecimale waarde van 0x0C, wat een regelterugloop is.

Hieronder staat nog een afbeelding met tekst in verschillende formaten en zowel vet als cursief.

Afbeelding met verschillende tekstgroottes in vet en cursief.

De naam van dit bestand is “bold-italic.png.” We willen een tekstbestand maken met de naam “bold.txt”, dus onze opdracht is:

tesseract bold-italic.png bold --dpi 150

tesseract bold-italic.png bold --dpi 150 in een terminalvenster.

Deze leverde geen problemen op en de tekst was perfect geëxtraheerd.

geëxtraheerde tekst uit vet-cursief.png.

Verschillende talen gebruiken

Tesseract OCR ondersteunt ongeveer 100 talen. Om een ​​taal te gebruiken, moet u deze eerst installeren. Noteer de afkorting als u de taal die u wilt gebruiken in de lijst vindt. We gaan ondersteuning voor Welsh installeren. De afkorting is “cym”, wat een afkorting is voor “Cymru”, wat Welsh betekent.

Het installatiepakket heet “tesseract-ocr-” met de taalafkorting aan het einde. Om het Welshe taalbestand in Ubuntu te installeren, gebruiken we:

sudo apt-get install tesseract-ocr-cym

sudo apt-get install tesseract-ocr-cym in een terminalvenster.

De afbeelding met de tekst staat hieronder. Het is het eerste couplet van het Welshe volkslied.

afbeelding met tekst van het eerste couplet van het volkslied van Wales.

Laten we kijken of Tesseract OCR de uitdaging aankan. We gebruiken de -l (taal) optie te huur tesseract ken de taal waarin we willen werken:

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

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

tesseract gaat perfect om, zoals getoond in de uitgepakte tekst hieronder. Da iawn, Tesseract OCR.

Geëxtraheerde Welshe tekst.

Als uw document twee of meer talen bevat (zoals bijvoorbeeld een woordenboek Welsh-naar-Engels), kunt u een plusteken (+) vertellen tesseract om een ​​andere taal toe te voegen, zoals zo:

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

Tesseract OCR gebruiken met pdf’s

De tesseract commando is ontworpen om te werken met afbeeldingsbestanden, maar het kan geen pdf’s lezen. Als u echter tekst uit een pdf moet extraheren, kunt u eerst een ander hulpprogramma gebruiken om een ​​reeks afbeeldingen te genereren. Een enkele afbeelding vertegenwoordigt een enkele pagina van de pdf.

De pdftppm hulpprogramma dat u nodig hebt, moet al op uw Linux-computer zijn geïnstalleerd. De pdf die we voor ons voorbeeld zullen gebruiken, is een kopie van Alan Turing’s baanbrekende paper over kunstmatige intelligentie, “Computing Machinery and Intelligence.”

PDF van de titelpagina van "Computing Machinery and Intelligence" door AM Turing.

Wij gebruiken de -png optie om aan te geven dat we PNG-bestanden willen maken. De bestandsnaam van onze pdf is ’turing.pdf’. We noemen onze afbeeldingsbestanden ’turing-01.png’, ’turing-02.png’, enzovoort:

pdftoppm -png turing.pdf turing

pdftoppm -png turing.pdf turing in een terminalvenster.

Rennen tesseract op elk afbeeldingsbestand met een enkele opdracht, moeten we een for-lus gebruiken. Voor elk van onzenn.png, ”bestanden die we uitvoeren tesseract, en maak een tekstbestand met de naam ’text-‘ plus ’turing-nn“Als onderdeel van de bestandsnaam van de afbeelding:

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

voor i in turing - ??. png;  doe tesseract "$ i" "tekst- $ i" -l eng;  gedaan;  in een terminalvenster.

Om alle tekstbestanden in één te combineren, kunnen we gebruiken cat:

cat text-turing* > complete.txt

cat text-turing *> complete.txt in een terminalvenster.” width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Dus, hoe deed het?  Heel goed, zoals je hieronder kunt zien.  De eerste pagina ziet er echter behoorlijk uitdagend uit.  Het heeft verschillende tekststijlen, formaten en versieringen.  Er is ook een verticaal “watermerk” aan de rechterkant van de pagina.</p>
<p>De uitvoer komt echter dicht bij het origineel.  Het is duidelijk dat de opmaak verloren is gegaan, maar de tekst is correct.</p>
<p><img loading=

Het verticale watermerk werd getranscribeerd als een regel brabbeltaal onderaan de pagina. De tekst was te klein om door te lezen tesseract nauwkeurig, maar het zou gemakkelijk genoeg zijn om het te vinden en te verwijderen. Het slechtste resultaat zou aan het einde van elke regel losse tekens zijn geweest.

Vreemd genoeg zijn de enkele letters aan het begin van de lijst met vragen en antwoorden op pagina twee genegeerd. Het gedeelte uit de pdf wordt hieronder weergegeven.

Een lijst met vragen en antwoorden uit de pdf van de Turing-paper.

Zoals je hieronder kunt zien, blijven de vragen bestaan, maar de “Q” en “A” aan het begin van elke regel gingen verloren.

Geëxtraheerde tekst van de vraag- en antwoordpagina van de Turing-pdf.

Diagrammen worden ook niet correct getranscribeerd. Laten we eens kijken wat er gebeurt als we proberen het onderstaande uit de Turing-pdf te extraheren.

Een diagram van "Input" en "Last State" uit de Turing PDF.

Zoals je kunt zien in ons resultaat hieronder, zijn de karakters gelezen, maar is het formaat van het diagram verloren gegaan.

Geëxtraheerde tekst uit een diagram in de Turing-pdf.

Nog een keer, tesseract worstelde met de kleine omvang van de abonnementen, en ze werden onjuist weergegeven.

Maar eerlijk gezegd was het nog steeds een goed resultaat. We waren niet in staat om duidelijke tekst te extraheren, maar toen werd dit voorbeeld bewust gekozen omdat het een uitdaging vormde.

Een goede oplossing als u die nodig heeft

OCR is niet iets dat u dagelijks hoeft te gebruiken. Als de behoefte zich echter voordoet, is het goed om te weten dat u een van de beste OCR-engines tot uw beschikking heeft.

Nieuwste artikelen

Gerelateerde artikelen