Texterkennung und Dokumentenablage unter Linux

Wenn man versucht ein papierloses (-armes) Büro zu führen kommt man nicht umhin, eingegangene Briefe einzuscannen und auf der Festplatte zu speichern. Ich habe mir dazu schon vor einiger Zeit ein einfaches Script gebastelt, dass einfache A4-Seiten mittels SANE liest und als JPG speichert. Das macht wenig aufwand und wenn man dem Ordner, in welchem die Datei liegt einen sinnvollen Namen verpasst, findet man seine Dokumente auch schnell wieder.

Ich benenne die Ordner, in welche ich die Dateien Scanne z.B. nach dem Schema 2020-08-02 Angebot für Unterstützung bei Dokumentenarchivierung. Wobei das Datum dem Datum auf dem gescannten Dokument entspricht.

Dieses Vorgehen sorgt schon für eine gewisse Ordnung auf dem PC und auch im Büro.

In einer Hinsicht ist es aber noch unbefriedigend:

Wenn man auf diese Weise mehrseitige Dokumente scannt, hat man am Ende einen Ordner voller einzelner Bilddateien. Was man aber eigentlich haben möchte, ist ein einzelnes Dokument, welches alle Seiten enthält. Und idealerweise möchte man in diesem Dokument auch nach Texten suchen können.

Wer sich jetzt fragt, wie das gehen soll, dass man in einem Bild nach einem Text sucht: Das Zauberwort heißt Texterkennung. Es gibt verschiedene Werkzeuge dafür, unter Linux unter anderem Tesseract, OCRAD, cuneiform und GOCR.

Dabei handelt es sich jeweils um Programmbibliotheken, die Texte in Bildern erkennen können. Darüber hinaus gibt es eine ganze Menge von Programmen, die auf diese Bibliotheken aufsetzen und dem Nutzer verschiedene Funktionalitäten zur Verfügung stellen.

Das für meine Zwecke tauglichste Programm heißt pdfsandwich:

Dieses Programm durchsucht in PDF eingebettete Bilder nach Texten und legt diese als unsichtbare Ebene über/unter die Bilder im PDF. Das bewirkt, dass man den Text im Bild scheinbar markieren, kopieren und durchsuchen kann.

Das geschieht mit einem einfachen Sript in drei Schritten:

  1. jedes einzelne Bild wir mittels convert aus dem Paket ImageMagick in ein einzelnes PDF überführt.
  2. jedes der so erzeugten PDFs wird anschließend mit pdfsandwich verarbeitet. Dabei wird automatische Texterkennung mittels Tesseract durchgeführt und ein neues PDF mit überlagertem Text erzeugt.
  3. Alle so erhaltenen PDFs werden mit PDFTK zu einen einzelnen PDF „zusammengebunden“.

So sieht das Script aus:

#!/bin/bash

type pdfsandwich 2>/dev/null || pkexec apt-get install -y pdfsandwich       || exit -1
type tesseract   2>/dev/null || pkexec apt-get install -y tesseract-ocr-deu || exit -1
type unpaper     2>/dev/null || pkexec apt-get install -y unpaper           || exit -1
type pdftk       2>/dev/null || pkexec apt-get install -y pdftk             || exit -1

STAMP=$(date|md5sum|awk '{print $1}')

for FILE in "$@"; do
    convert "$FILE" "$FILE.pdf"
    pdfsandwich -lang deu -rgb -o "$FILE.$STAMP.pdf" "$FILE.pdf"
        rm "$FILE.pdf"
done
pdftk *.$STAMP.pdf cat output Dokument.pdf
rm *.$STAMP.pdf

Die vier Zeilen nach dem Shebang installieren die notwendigen Softwarepakete, wenn diese nicht vorhanden sind. Dann wird eine Zufällige Zeichenfolge erzeugt, um die temporären Dateien zu benennen. Dann werden die oben bechriebenen Schritte auf die Bilddateien angewendet.

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.