Dieses Script dient dazu, das Tool „ocrmypdf“ unter Ubuntu automatisch einzurichten und ein Nautilus-Skript zu erstellen, mit dem sich PDF-Dokumente schnell und einfach durchsuchbar machen lassen. Dabei wird zunächst überprüft, ob „ocrmypdf“ bereits installiert ist; falls nicht, wird es zusammen mit dem deutschen Tesseract-Sprachpaket (tesseract-ocr-deu) über die Paketverwaltung installiert. Anschließend wird im Ordner „~/.local/share/nautilus/scripts“ ein Skript erzeugt, das im Rechtsklick-Menü von Nautilus auftaucht, sobald man eine PDF-Datei ausgewählt hat. Wird es ausgeführt, wandelt „ocrmypdf“ die ausgewählte PDF mithilfe der deutschen Texterkennung (-l deu) durchsuchbar um und richtet dabei schief eingescannte Seiten automatisch aus (-d). Nach Abschluss der OCR kann man wählen, ob die ursprüngliche Datei überschrieben oder eine neue Datei mit dem Zusatz „_ocr“ angelegt werden soll. Damit vereinfacht das Skript den täglichen Umgang mit gescannten Dokumenten, da sie bequem per Mausklick durchsuchbar gemacht werden können.
#!/usr/bin/env bash # Dieses Skript installiert falls nötig ocrmypdf, prüft ob das deutsche Sprachpaket # für Tesseract vorhanden ist und legt das Nautilus-Skripte-Verzeichnis an. # Anschließend erstellt es ein Skript, das über das Nautilus-Kontextmenü aufgerufen # werden kann, um PDFs mittels OCR durchsuchbar zu machen. # 1. Prüfung auf ocrmypdf if ! command -v ocrmypdf &> /dev/null then echo "ocrmypdf ist nicht installiert. Installation wird durchgeführt..." sudo apt-get update && sudo apt-get install -y ocrmypdf if [ $? -ne 0 ]; then echo "Die Installation von ocrmypdf ist fehlgeschlagen." exit 1 fi else echo "ocrmypdf ist bereits installiert." fi # 2. Prüfung, ob die deutsche Sprache (deu) für Tesseract installiert ist # Das zugehörige Paket heißt in Ubuntu: tesseract-ocr-deu # Man könnte alternativ auch prüfen, ob 'deu.traineddata' in tessdata vorhanden ist. if ! dpkg -s tesseract-ocr-deu &>/dev/null then echo "Das deutsche Tesseract-Sprachpaket (tesseract-ocr-deu) ist nicht installiert. Installation wird durchgeführt..." sudo apt-get update && sudo apt-get install -y tesseract-ocr-deu if [ $? -ne 0 ]; then echo "Die Installation des deutschen Tesseract-Sprachpakets ist fehlgeschlagen." exit 1 fi else echo "Das deutsche Tesseract-Sprachpaket (tesseract-ocr-deu) ist bereits installiert." fi # 3. Nautilus Skripte Verzeichnis erstellen, falls nicht vorhanden SCRIPT_DIR="$HOME/.local/share/nautilus/scripts" if [ ! -d "$SCRIPT_DIR" ]; then echo "Erstelle Nautilus-Skripte-Verzeichnis unter: $SCRIPT_DIR" mkdir -p "$SCRIPT_DIR" else echo "Nautilus-Skripte-Verzeichnis existiert bereits." fi # 4. Skriptdatei erstellen SCRIPT_FILE="$SCRIPT_DIR/PDF_durchsuchbar_machen" echo "Erstelle Skriptdatei: $SCRIPT_FILE" cat > "$SCRIPT_FILE" << 'EOF' #!/usr/bin/env bash # Dieses Skript macht eine ausgewählte PDF mittels ocrmypdf durchsuchbar. # Nach erfolgreicher OCR-Umwandlung fragt es, ob die Originaldatei überschrieben # oder eine neue Datei erstellt werden soll. Bei Erstellung einer neuen Datei # wird der Zusatz "_ocr" an den Basisnamen angehängt. inputfile="$1" tempfile="/tmp/ocr_$$.pdf" # Ausführen von ocrmypdf mit deutscher Texterkennung (-l deu) und Deskew (-d) ocrmypdf -l deu -d "$inputfile" "$tempfile" if [ $? -ne 0 ]; then # Bei Fehlern temporäre Datei entfernen rm -f "$tempfile" zenity --error --text="Die OCR-Umwandlung ist fehlgeschlagen." exit 1 fi # Wenn erfolgreich, Nutzer fragen, ob die Datei überschrieben oder eine neue Datei erstellt werden soll zenity --question \ --text="Die OCR-Umwandlung war erfolgreich.\nMöchten Sie die Originaldatei überschreiben oder eine neue Datei erstellen?" \ --ok-label="Überschreiben" \ --cancel-label="Neue Datei erstellen" if [ $? -eq 0 ]; then # Nutzer hat 'Überschreiben' ausgewählt mv "$tempfile" "$inputfile" zenity --info --text="Die Originaldatei wurde erfolgreich durchsuchbar gemacht." else # Nutzer hat 'Neue Datei erstellen' ausgewählt basename="$(basename "$inputfile")" dirname="$(dirname "$inputfile")" extension="${basename##*.}" filename_without_ext="${basename%.*}" # Neuer Dateiname mit _ocr newfile="${dirname}/${filename_without_ext}_ocr.${extension}" # Falls es bereits eine Datei mit diesem Namen gibt, hänge eine Zahl an counter=1 while [ -e "$newfile" ]; do newfile="${dirname}/${filename_without_ext}_ocr_${counter}.${extension}" counter=$((counter+1)) done mv "$tempfile" "$newfile" zenity --info --text="Eine neue durchsuchbare Datei wurde erstellt:\n\n$newfile" fi EOF # Skript ausführbar machen chmod +x "$SCRIPT_FILE" echo "Skript erfolgreich erstellt und ausführbar gemacht." echo "Die Installation ist abgeschlossen. Bitte starten Sie Nautilus ggf. neu." echo "Über Rechtsklick auf eine PDF -> Skripte -> 'PDF_durchsuchbar_machen' können Sie das Skript aufrufen."
Moderiert von sebix:
Thema in einen passenden Forenbereich verschoben, da keine Supportfrage erkennbar ist. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.