OCR Setup für Nextcloud

nextcloud März 15, 2019

Letztes Update: 17.8.18

In diesem kleinen Tutorial möchte ich Euch erklären wie ihr Optical Character Recoginition, kurz OCR, mit Hilfe von Docker Containern für Nextcloud einrichtet. Dazu müssen zu erst ein paar Abhängigkeiten installiert werden.Was braucht ihr?

  • Nextcloud 13+
  • Linux Betriebsystem basierend auf Ubuntu 14.04 oder älter mit AMD, Intel Prozessoren. ARM Prozessoren werden nicht unterstützt (Wie Raspberry Pi oder ODROID C2)
  • Docker (Hiermit wird Tesseract und OCRmyPDF im Container ausgeführt.
  • Terreract-OCR und OCRmyPDF

Gut, zuerst installieren wir alles nötige. Dies geht mit

sudo apt-get install docker php-redis

Nun muss der Cloud die OCR App installiert und aktiviert werden. Anschließend wechseln wir in folgendes Verzeichnis.

cd /var/www/nextcloud/app/ocr/worker

Mit vi Dockerfile passen wir unten stehenden Code an und ersetzen „OCR“ mit unserem Passwort.Denkt daran, dass Ihr ein sehr Sichereres nehmt. Meines hat beispielsweise 25 Stellen

# This image serves the redis instance for the ocr worker and the nextcloud ocr app.
# important steps:
# docker build --build-arg PASSWORD="verysavepassword" -t <your username> /redis .
# docker run --name redis --network=isolated_ocr -p 6379:6379 -d <your username> /redis
# Please notice: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
FROM redis LABEL maintainer=<janiskoehr@icloud.com&#8220; description=This image serves the redis instance for the ocr worker and the nextcloud ocr app.&#8220; vendor=
“Janis Koehr” 
ARG PASSWORD=“secret”
COPY redis.conf /usr/local/etc/redis/redis.conf
RUN if [ -n “$PASSWORD” ]; then echo “requirepass $PASSWORD” >> /usr/local/etc/redis/redis.conf; fi 
CMD [ “redis-server”, “/usr/local/etc/redis/rFileedis.conf” ]
[...]

Das gleiche ändern wir in dem  **redis.conf** im gleichen Verzeichnis. Sucht hier nach **requirepass**. Dieses auskommentieren und Eurer Passwort dahinter setzen. Zeile 397

```bash
# requirepass foobared
requirepass secret

Mit dem folgenden Kommando kommen wir zum nächsten Teil der Anleitung. Nun wird der eigentliche Redis Container erstellt und mit einem Passwort versehen. Das Gleiche wie vorhin auch. Ersetzt bitte auch “user” mit eurem Namen in der Cloud. (Es wird nur Kleingeschriebenes akzeptiert von Docker). Dies geschieht ebenfalls im Worker Verzeichnis.

docker build --build-arg PASSWORD="secret" -t user/redis .

Für den nächsten Schritt müssen wir in das ocr Verzeichnis wechseln. Dies geht am besten mit

cd ../worker

Hier editieren wir die Dockerfile Datei.

# This image serves the redis instance for the ocr worker and the nextcloud ocr app.
# important steps:
# docker build --build-arg PASSWORD="" -t /redis .
# docker run --name redis --network=isolated_ocr -p 6379:6379 -d /redis
# Please notice: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
FROM redis
LABEL maintainer="janiskoehr@icloud.com" description="This image serves the redis instance for the ocr worker and the nextcloud ocr app." vendor="Janis Koehr"
ARG PASSWORD="secret"
COPY redis.conf /usr/local/etc/redis/redis.conf
RUN if [ -n "$PASSWORD" ]; then echo "requirepass $PASSWORD" &gt;&gt; /usr/local/etc/redis/redis.conf; fi
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
```

```bash
docker build --build-arg LANGUAGES="tesseract-ocr-deu" -t user/ocr .

und starten anschließend die Docker Container. Zuerst aber die Zeilen wiederum anpassen, User ersetzen und das Passwort einfügen.

Update:

Seit einiger Zeit muss man ein file anpassen damit es zu keinem Fehler kommt. Man wechselt in das Verzeichnis /var/www/nextcloud/apps/ocr/worker/src/configuration/ und editiert die worker.configuration.ts Datei. Den Inhalt der Datei durch diesen hier ersetzen:

Danach läuft das Script richtig durch. Bitte denkt daran daß das Verzeichnis /var/www/nextcloud/tmp
vor dem Containerstart vorhanden sein muss!

docker run  --restart always --name redis --network=ocr -p 6379:6379 -d user/redis
docker run --restart always --name ocr --network=ocr -e "NODE_ENV=production" -e "REDIS_HOST=redis" -e "REDIS_PORT=6379" -e "REDIS_DB=0" -e "REDIS_PASSWORD=secret" -v /var/www/nextcloud/data/user:/home/node/data:ro -v /var/www/nextcloud/tmp:/home/node/output -d user/ocr

Abschließend sollte man mit docker ps kontrollieren ob die Container auch laufen. Wenn dies alles funktioniert hat, wechseln wir wieder in unsere Nextcloud und geben alle Parameter ein. In meinem Fall habe ich einen anderen Port gewählt, weil der Port 6379 bereits belegt ist, für das eigentliche Caching von Nextcloud und WordPress.

Das Setup wäre erledigt und Ihr könnt mit dem Bearbeiten der Dateien anfangen. Mehr Infos zu dem Projekt gibt es auf Github

Aktuell habe ich aber ein Fehler im “System” wie hier nachzulesen ist. Es ist so das angeblich die Dateien im OCR Container nicht gefunden werden können, obwohl diese vorhanden sind.

The execution of “ocrmypdf” command failed: ERROR -File not found- /home/node/data/lars/files/Clatronic_user_manual_MWG_775_H.pdf

An was das nun liegt, keine Ahnung. Aber ich hoffe der Developer Janis findet eine Lösung. ?

Wennn euch die Anleitung gefallen hat, lasst einen Kommentar da. Ich würde mich über ein wenig Feedback freuen ?

Kaffeespende

Comments powered by Talkyard.

Großartig! Das Abonnement wurde erfolgreich abgeschlossen.
Großartig! Schließen Sie als Nächstes die Kaufabwicklung ab, um vollen Zugriff zu erhalten.
Willkommen zurück! Sie haben sich erfolgreich angemeldet.
Erfolg! Ihr Konto ist vollständig aktiviert, Sie haben jetzt Zugang zu allen Inhalten.