![Een terminalvenster op een Linux-laptop.](https://www.howtogeek.com/wp-content/uploads/2019/09/xstock-lede-linux-see-attribution.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.rjm91kC_Jl.png)
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
Op Fedora is het commando:
sudo dnf install tesseract
Op Manjaro moet je typen:
sudo pacman -Syu tesseract
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).
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 vertellentesseract
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
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.
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.
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
Deze leverde geen problemen op en de tekst was perfect geëxtraheerd.
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
De afbeelding met de tekst staat hieronder. Het is het eerste couplet van het Welshe volkslied.
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
gaat perfect om, zoals getoond in de uitgepakte tekst hieronder. Da iawn, Tesseract OCR.
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.”
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
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;
Om alle tekstbestanden in één te combineren, kunnen we gebruiken cat
:
cat text-turing* > complete.txt
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.
Zoals je hieronder kunt zien, blijven de vragen bestaan, maar de “Q” en “A” aan het begin van elke regel gingen verloren.
Diagrammen worden ook niet correct getranscribeerd. Laten we eens kijken wat er gebeurt als we proberen het onderstaande uit de Turing-pdf te extraheren.
Zoals je kunt zien in ons resultaat hieronder, zijn de karakters gelezen, maar is het formaat van het diagram verloren gegaan.
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.