So führen Sie OCR über die Linux-Befehlszeile mit Tesseract aus

Veröffentlicht: 2022-01-29
Ein Terminalfenster auf einem Linux-Laptop.
Fatmawati Achmad Zaenuri/Shutterstock

Sie können Text aus Bildern auf der Linux-Befehlszeile mit der Tesseract OCR-Engine extrahieren. Es ist schnell, genau und funktioniert in etwa 100 Sprachen. Hier erfahren Sie, wie Sie es verwenden.

Optische Zeichenerkennung

Optische Zeichenerkennung (OCR) ist die Fähigkeit, Wörter in einem Bild zu betrachten und zu finden und sie dann als bearbeitbaren Text zu extrahieren. Diese einfache Aufgabe für Menschen ist für Computer sehr schwierig. Frühe Bemühungen waren klobig, um es gelinde auszudrücken. Computer waren oft verwirrt, wenn die Schriftart oder -größe der OCR-Software nicht gefiel.

Trotzdem genoss man die Pioniere auf diesem Gebiet nach wie vor in hohem Ansehen. Wenn Sie die elektronische Kopie eines Dokuments verloren haben, aber noch eine gedruckte Version hatten, konnte OCR eine elektronische, bearbeitbare Version wiederherstellen. Auch wenn die Ergebnisse nicht zu 100 Prozent genau waren, war dies immer noch eine große Zeitersparnis.

Mit etwas manuellem Aufräumen hätten Sie Ihr Dokument zurück. Die Leute verziehen die Fehler, die es gemacht hat, weil sie die Komplexität der Aufgabe verstanden haben, vor der ein OCR-Paket steht. Außerdem war es besser, als das gesamte Dokument abzutippen.

Die Dinge haben sich seitdem deutlich verbessert. Die von Hewlett Packard geschriebene OCR-Anwendung Tesseract wurde in den 1980er Jahren als kommerzielle Anwendung gestartet. Es wurde 2005 als Open Source veröffentlicht und wird jetzt von Google unterstützt. Es ist mehrsprachig, gilt als eines der genauesten OCR-Systeme auf dem Markt und Sie können es kostenlos nutzen.

Installieren von Tesseract OCR

Verwenden Sie diesen Befehl, um Tesseract OCR unter Ubuntu zu installieren:

 sudo apt-get install tesseract-ocr 

Bei Fedora lautet der Befehl:

 sudo dnf installiere Tesseract 

Auf Manjaro müssen Sie Folgendes eingeben:

 sudo pacman -Syu Tesseract 

Verwenden von Tesseract OCR

Wir werden Tesseract OCR vor eine Reihe von Herausforderungen stellen. Unser erstes Bild, das Text enthält, ist ein Auszug aus Erwägungsgrund 63 der Datenschutz-Grundverordnung. Mal sehen, ob OCR das lesen kann (und wach bleibt).

Auszug aus Erwägungsgrund 63 der DSGVO

Anzeige

Es ist ein kniffliges Bild, weil jeder Satz mit einer schwachen hochgestellten Zahl beginnt, was typisch für Gesetzesdokumente ist.

Wir müssen dem tesseract Befehl einige Informationen geben, darunter:

  • Der Name der Bilddatei, die verarbeitet werden soll.
  • Der Name der Textdatei, die erstellt wird, um den extrahierten Text aufzunehmen. Wir müssen die Dateierweiterung nicht angeben (es wird immer .txt sein). Wenn bereits eine Datei mit demselben Namen vorhanden ist, wird sie überschrieben.
  • Wir können die Option --dpi verwenden, um tesseract die Auflösung des Bildes mit Punkten pro Zoll (dpi) mitzuteilen. Wenn wir keinen dpi-Wert angeben, versucht tesseract , ihn herauszufinden.

Unsere Bilddatei heißt „recital-63.png“ und hat eine Auflösung von 150 dpi. Wir werden daraus eine Textdatei namens „recital.txt“ erstellen.

Unser Befehl sieht so aus:

 Tesseract Erwägungsgrund-63.png Erwägungsgrund --dpi 150 

Die Ergebnisse sind sehr gut. Das einzige Problem sind die hochgestellten Zeichen – sie waren zu schwach, um richtig gelesen zu werden. Eine gute Bildqualität ist entscheidend, um gute Ergebnisse zu erzielen.

Auszug aus Erwägungsgrund 63.

tesseract hat die hochgestellten Zahlen als Anführungszeichen (“) und Gradzeichen (°) interpretiert, aber der eigentliche Text wurde perfekt extrahiert (die rechte Seite des Bildes musste hier angepasst werden).

Anzeige

Das letzte Zeichen ist ein Byte mit dem hexadezimalen Wert 0x0C, was ein Wagenrücklauf ist.

Unten ist ein weiteres Bild mit Text in verschiedenen Größen und sowohl fett als auch kursiv.

Bild mit unterschiedlichen Textgrößen in Fett- und Kursivschrift.

Der Name dieser Datei lautet „bold-italic.png“. Wir möchten eine Textdatei namens „bold.txt“ erstellen, also lautet unser Befehl:

 tesseract bold-italic.png fett --dpi 150 

Dieser bereitete keine Probleme und der Text wurde perfekt extrahiert.

Verwendung verschiedener Sprachen

Tesseract OCR unterstützt rund 100 Sprachen. Um eine Sprache zu verwenden, müssen Sie sie zuerst installieren. Wenn Sie die Sprache, die Sie verwenden möchten, in der Liste finden, notieren Sie sich ihre Abkürzung. Wir werden Unterstützung für Walisisch installieren. Seine Abkürzung ist „Cym“, was die Abkürzung für „Cymru“ ist, was walisisch bedeutet.

Das Installationspaket heißt „tesseract-ocr-“, wobei das Sprachkürzel am Ende angehängt ist. Um die walisische Sprachdatei in Ubuntu zu installieren, verwenden wir:

 sudo apt-get install tesseract-ocr-cym 

Anzeige

Das Bild mit dem Text ist unten. Es ist die erste Strophe der walisischen Nationalhymne.

Bild mit dem Text der ersten Strophe der walisischen Nationalhymne.

Mal sehen, ob Tesseract OCR der Herausforderung gewachsen ist. Wir verwenden die Option -l (Sprache), um tesseract die Sprache mitzuteilen, in der wir arbeiten möchten:

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

tesseract kommt perfekt zurecht, wie der extrahierte Text unten zeigt. Da iawn , Tesseract OCR.

Extrahierter walisischer Text.

Wenn Ihr Dokument zwei oder mehr Sprachen enthält (z. B. ein walisisch-englisches Wörterbuch), können Sie ein Pluszeichen ( + ) verwenden, um tesseract , eine weitere Sprache hinzuzufügen, etwa so:

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

Verwenden von Tesseract OCR mit PDFs

Der Befehl tesseract ist für die Arbeit mit Bilddateien konzipiert, kann jedoch keine PDFs lesen. Wenn Sie jedoch Text aus einer PDF-Datei extrahieren müssen, können Sie zuerst ein anderes Dienstprogramm verwenden, um eine Reihe von Bildern zu generieren. Ein einzelnes Bild repräsentiert eine einzelne Seite der PDF-Datei.

Das benötigte Dienstprogramm pdftppm sollte bereits auf Ihrem Linux-Computer installiert sein. Das PDF, das wir für unser Beispiel verwenden, ist eine Kopie von Alan Turings bahnbrechendem Artikel über künstliche Intelligenz, „Computing Machinery and Intelligence“.

PDF der Titelseite von "Computing Machinery and Intelligence" von A.M. Turing.

Anzeige

Wir verwenden die Option -png , um anzugeben, dass wir PNG-Dateien erstellen möchten. Der Dateiname unseres PDFs lautet „turing.pdf“. Wir nennen unsere Bilddateien „turing-01.png“, „turing-02.png“ und so weiter:

 pdftoppm -png turing.pdf turing 

Um tesseract für jede Bilddatei mit einem einzigen Befehl auszuführen, müssen wir eine for-Schleife verwenden. Für jede unserer „turing- nn.png “-Dateien führen wir tesseract aus und erstellen eine Textdatei namens „text-“ plus „turing- nn “ als Teil des Bilddateinamens:

 für i in turing-??.png; Tesseract "$i" "text-$i" -l eng; fertig; 

Um alle Textdateien zu einer zusammenzufassen, können wir cat verwenden:

 cat text-turing* > complete.txt 

Also, wie hat es geklappt? Sehr gut, wie Sie unten sehen können. Die erste Seite sieht jedoch ziemlich herausfordernd aus. Es hat verschiedene Textstile und -größen sowie Dekorationen. Es gibt auch ein vertikales „Wasserzeichen“ am rechten Rand der Seite.

Die Ausgabe ist jedoch nahe am Original. Offensichtlich ist die Formatierung verloren gegangen, aber der Text ist korrekt.

Erste Seite des extrahierten Textes aus dem Turing-PDF.

Das vertikale Wasserzeichen wurde als Kauderwelsch-Zeile am Ende der Seite transkribiert. Der Text war zu klein, um von tesseract genau gelesen zu werden, aber es wäre leicht genug, ihn zu finden und zu löschen. Das schlimmste Ergebnis wären Streuzeichen am Ende jeder Zeile gewesen.

Anzeige

Merkwürdigerweise wurden die einzelnen Buchstaben am Anfang der Liste mit Fragen und Antworten auf Seite zwei ignoriert. Der Ausschnitt aus dem PDF ist unten dargestellt.

Eine Liste mit Fragen und Antworten aus dem PDF des Turing-Papiers.

Wie Sie unten sehen können, bleiben die Fragen bestehen, aber das „Q“ und „A“ am Anfang jeder Zeile gingen verloren.

Extrahierter Text aus der Frage-und-Antwort-Seite des Turing-PDF.

Auch Diagramme werden nicht korrekt transkribiert. Schauen wir uns an, was passiert, wenn wir versuchen, das unten gezeigte aus dem Turing-PDF zu extrahieren.

Ein Diagramm von "Input" und "Last State" aus dem Turing-PDF.

Wie Sie in unserem Ergebnis unten sehen können, wurden die Zeichen gelesen, aber das Format des Diagramms ging verloren.

Extrahierter Text aus einem Diagramm im Turing-PDF.

Auch hier hatte tesseract mit der geringen Größe der Indizes zu kämpfen, und sie wurden falsch gerendert.

Anzeige

Fairerweise war es dennoch ein gutes Ergebnis. Wir konnten keinen einfachen Text extrahieren, aber dieses Beispiel wurde bewusst gewählt, weil es eine Herausforderung darstellte.

Eine gute Lösung, wenn Sie sie brauchen

OCR ist nicht etwas, das Sie täglich verwenden müssen. Bei Bedarf ist es jedoch gut zu wissen, dass Ihnen eine der besten OCR-Engines zur Verfügung steht.