OCRthyPDF - Eine grafische Benutzeroberfläche für OCRmyPDF

Da es leider immer wieder vorkommt, dass die Originaldateien eingescannter Texte nicht mehr vorliegen (oder nicht mehr gefunden werden können), muss in diesen Fällen eine Texterkennung bemüht werden, um aus den Bilddateien in den PDFs editierbaren Text zu erzeugen.  Das Kommandozeilentool OCRmyPDF von James Barlow hat mir diesbezüglich schon häufig das Leben im Umgang mit eingescannten Textdateien erleichtert. Da ich keine einfach gehaltene grafische Benutzeroberfläche finden konnte, kam mir die Idee zu OCRthyPDF – Einer Benutzerobefläche, die Anwendern, die nicht an die Benutzung von Kommandozeilen-Tools gewöhnt sind, den Zugang zu den grundlegenden Funktionen von OCRmyPDF ermöglicht.  Kurz: OCRthyPDF ist eine kostenlose Texterkennung für PDF-Dateien.

OCRthyPDF GUI

Die Splitter-Funktion erweitert die von OCRmyPDF bereitgestellte Funktionalität um die Option, gescannte Dokumente vor der Texterkennung an Trennseiten – definiert durch einen QR-Code – zu trennen. Ein QR-Code kann beispielsweise eine reine Trennseite markieren, die bei der Erstellung der Zieldokumente verworfen wird. Alternativ kann der QR-Code im Aufklebermodus (Sticker Mode) die erste Seite eines neuen Dokuments markieren und wird beibehalten.

Download und Installationshinweise

Wenn du Ubuntu oder eine andere Linux-Distro verwendst, auf der Snap / (Gnome Software) bereits  vorinstalliert ist, kannst du OCRthy PDF direkt aus dem Store installieren. Alternativ gibst du im Terminal sudo snap install ocrthypdf ein. Wenn deine Distro Gnome Software nicht vorinstalliert hat, finden du hier eine Anleitung zur Installation.

Fehlersuche

Snaps werden in einer eingeschränkten Umgebung ausgeführt und benötigen Berechtigungen für den Zugriff auf Dateien auf deinem Rechner (ähnlich wie Apps auf dem Smartphone). Prüfe daher zunächst, ob du die richtigen Berechtigungen in der Benutzeroberfläche des Stores eingestellt hast. Du kannst OCRthyPDF über das Terminal mit ocrthypdf --log INFO oder ocrthypdf --log DEBUG starten, um weitere Informationen zu erhalten, falls die Anwendung nicht wie erwartet funktioniert. Informationen zu Unterprozessen wie OCRmyPDF, Splitter, Ghostscript usw. werden innerhalb  der Registerkarte ‚Console‘ angezeigt. Setze den ‚Loglevel‘ auf DEBUG und ‚Limit console …‘ auf ’no‘ für eine detailliertere Ausgabe. pushpin Logs gecheckt und keine Ahnung, was schief gelaufen ist? Melde dein Problem hier.

Kurzanleitung

OCRthyPDF GUI Options-Tab

Zuerst musst du ein einzelnes PDF oder einen Ordner mit PDF-Dateien auswählen, die von der Zeichenerkennung verarbeitet werden sollen. Dann gibst du einen Ordner an, in dem die neuen PDFs gespeichert werden sollen. Wenn kein Ausgabeordner ausgewählt wird, wird der Eingabeordner automatisch als Ausgabeordner vorbelegt. Die Einstellungen in der Registerkarte „Optionen“ entsprechen den im OCRmyPDF cookbook beschriebenen Werten und funktionieren genau so. Nicht alle Kombinationen sind sinnvoll oder erlaubt. OCRthyPDF hindert dich nicht, solche Kombinationen einzustellen. In den meisten Fällen verweigert die Texterkennung einfach den Start oder bricht mit einer Fehlermeldung ab. In der Registerkarte ‚Console‘ findst du in diesen Fällen ausführliche Informationen darüber, was schief gelaufen ist. pushpin Vorsicht! Wenn du das Postfix-Feld leer lässt und die Ausgabe in den Eingabeordner geschrieben wird, überschreibst du die Quelldatei!facepalm Starte die Texterkennung mit der Schaltfläche „Start OCR“. Du kannst die Schaltfläche „Stop OCR“ drücken, um alle laufenden OCR-Aufträge anzuhalten. Der Aktivitätsbalken neben den Buttons blinkt, während die OCR läuft.
OCRthyPDF GUI Splitter-Tab
Der Splitter ermöglicht es dir, eine PDF-Datei anhand eines Barcodes / QR-Codes in einzelne Dateien aufzuteilen. Das ist praktisch, wenn du viele (mehrseitige) Dokumente scannen musst und nicht jedes Dokument einzeln in den Scanner legen möchtest. Lege einfach eine Trennseite zwischen die einzelnen Dokumente und scanne sie auf einmal! Um den Splitter zu aktivieren, setze „Run splitter prior to OCR“ auf „yes“. Im nächsten Feld musst du den Trenntext angeben. Der Splitter versucht, auf jeder Seite QR-Codes zu finden und vergleicht deren Inhalt mit diesem Text. Der nächste Schalter wählt den Trennblattmodus aus. Standardmäßig wird die Trennseite weggelassen und nicht in die Ausgabedateien übernommen. Im Aufklebermodus (Sticker Mode) beginnt ein QR-Code ein neues Segment und die Seite wird der Ausgabe hinzugefügt. Jedes Segment/Dokument wird mit seiner Segmentnummer als Postfix gespeichert. Standard-QR-Codes mit dem Text „NEXT“ kannst du hier herunterladen. Du kannst das Muster <SEPARATOR_TEXT>|<CUSTOM_POSTFIX> in deinen QR-Codes verwenden, um ein benutzerdefiniertes Postfix an den Dateinamen anzuhängen.  Die entsprechende Funktion stellt der Sticker Modus bereit. Verwende individuelle Postfixe in jedem Code, da in diesem Modus keine Segmentnummern hinzugefügt werden, sofern ein benutzerdefiniertes Postfix gefunden wird. pushpin Beispiele für nützliche QR-Codes im Sticker-Modus:

  • NEXT|Anschreiben , NEXT|Lebenslauf , NEXT|Anlagen
  • NEXT|Bewerbung_Meier , NEXT|Bewerbung_Schmidt

pushpin

Wenn du die Option wählst, den Quelldateinamen nicht im Ausgabedateinamen zu verwenden, kannst du die Dateinamen mit Hilfe der benutzerdefinierten Postfixe festlegen (Dann auch das Postfix-Feld in der Registerkarte ‚Optionen‘ leer lassen). Bevor Splitter mit der Analyse der Seiten einer PDF-Datei beginnt, wird die Quell-PDF-Datei mit Ghostscript umgeschrieben, um einige häufige Probleme mit PDF-Dateien, die von Scannern/MFPs erzeugt werden, zu umgehen. Splitter sucht dann in der umgeschriebenen Datei nach QR-Codes, setzt aber die geteilten Dateien direkt aus der Quelldatei zusammen. Du kannst die Option „Assemble split files from rewritten source file?“ verwenden, um Splitter anzuweisen, die Seiten aus der umgeschriebenen/reparierten Version zu übernehmen. Wenn du gescannte Dokumente aufteilst, die lediglich Bitmap-Bilder enthalten, sollte die Aktivierung dieser Option kein Problem darstellen. Wenn du jedoch Dokumente aufteilst, die auch andere Elemente enthalten (Text, Schriftarten, Vektorzeichnungen usw.), kann das Ergebnis von der Quelle abweichen und du verlierst ggf. einige Inhalte oder Schriften!

OCRthyPDF GUI Language-Tab
In der Registerkarte ‚Languages‘ kannst du die Sprachen (über 100 werden unterstützt!) auswählen, die in deinen Dokumenten genutzt werden. Die Standardauswahl ist Englisch und die Sprache deiner Desktop-Umgebung. Da das Ergebnis der OCR stark von dieser Auswahl abhängt, solltest du alle Sprachen auswählen, die du benötigst, und alle anderen Sprachen abwählen!
OCRthyPDF GUI Console-Tab
In der Konsole kannst du die Ausgabe der Prozesse sehen, die „unter der Haube“ arbeiten. Dies ist hilfreich, falls die Texterkennung anders als erwartet ausfällt oder die Anwendung mit einem Fehlercode die Dokumentenbearbeitung abbricht. du kannst zwischen den Logleveln „INFO“ (Statusmeldungen, wenn alles wie erwartet funktioniert) und „DEBUG“ (viele detaillierte Informationen) wählen. Standardmäßig zeigt die Konsole nur die Ausgabe des letzten Unterprozesses an und wird bereinigt, wenn ein neuer Unterprozess gestartet wird. Du kannst die Konsole jedoch auch so einstellen, dass sie die Informationen aller Unterprozesse eines OCR-Auftrages ohne Bereinigung anzeigt. Die beiden Balken am unteren Rand zeigen den Status der Warteschlange für Split-Aufträge (Aufteilen) und die Warteschlange für OCR-Aufträge (Texterkennung) an. Die „Warteschlangen“ beziehen sich jeweils auf Dokumente, die auf ihre Verarbeitung warten.

Weiterführende Links

Alternative Software und weitere Informationen zum Thema findest du unter anderem hier:

4 thoughts on “OCRthyPDF - Eine grafische Benutzeroberfläche für OCRmyPDF

  1. Hans Martens

    Congratulations! After searching for ages, I finally find a perfectly working solution for speech recognition in PDFs under UBUNTU!
    On the web, I have only ever found construction sites, but no stable *solutions*. Even the titles are recognised cleanly and formatted sensibly!
    The icing on the cake would be the following function:
    The characters are recognised correctly in the correct country code. Would it be possible to replace the blurred scanned images of the characters with original characters in the output file?
    This would massively reduce the size of the output files and make them much easier to read!
    Nevertheless: THANK YOU, you have succeeded in creating a great app!
    Hans

    Reply
    1. Björn Post author

      Hi Hans,
      thx for your positive feedback!

      OCRthyPDF is merely a frontend for ocrmypdf (except for the splitter) and therefore does not have the feature suggested.
      And I am not sure if it would be that useful since e.g. all the fonts would be lost and you have no chance to spot misinterpreted characters / numbers.

      Björn

      Reply
  2. M

    Hello,
    I would love to use OCRthyPDF and it’s exactly what I have been looking for but I just can’t get Snap to work reliable under EndeavourOS (Arch based).

    Is there a chance to release OCRthyPDF via the AUR or as an AppImage or anything BUT as a snap package?

    Kind regards.
    M

    Reply
    1. Björn Post author

      Hi M,

      I currently do not plan to release the program in a different format.
      There is one guy who plans to put it on homebrew.

      The whole application consists of two python scripts(ocrthypdf.py and splitter.py) + dependencies. So basically you install the dependencies, download both scripts from github, put them in a directory and run OCRthyPDF.py from the command line.

      Dependencies needed that can be installed with apt:
      python3.9 python3-tk python3-pip tcl ghostscript icc-profiles-free liblept5 libxml2 pngquant tesseract-ocr-all unpaper qpdf zlib1g imagemagick openjdk-8-jre
      Modules needed that can be installed with pip3:
      PySimpleGUI ocrmypdf zxing pikepdf

      If you do not want to download all tesseract languages change tesseract-ocr-all to tesseract-ocr. You can download additional language packs separately. Use apt search tesseract-ocr to see the available languages.

      Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert