Aus SatriaWiki
Wechseln zu: Navigation, Suche
K (Tesseract OCR auf ZyXEL NAS)
K (Raspberry Pi 3 als build machine)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Was ist SeedDMS? ==
 
== Was ist SeedDMS? ==
SeedDMS ist ein Dokumentenmanagementsystem mit Weboberfläche, basierend auf PHP und MySQL.
+
SeedDMS ist ein Dokumentenmanagementsystem mit Weboberfläche, basierend auf PHP, MySQL und Javascript.
  
 
https://www.seeddms.org
 
https://www.seeddms.org
Zeile 6: Zeile 6:
 
== SeedDMS auf ZyXEL NAS ==
 
== SeedDMS auf ZyXEL NAS ==
 
Gleich vorweg: Es gehört einiges dazu, SeedDMS auf dem Linux eines ZyXEL NAS laufen zu lassen! Aber der integrierte PHP-fähige Webserver kann dazu verwendet werden, mit SeedDMS ein Dokumentenmanagementsystem aufzusetzen, ohne Cloud und Internet, das - wenn man will - aber trotzdem von überall erreichbar ist.
 
Gleich vorweg: Es gehört einiges dazu, SeedDMS auf dem Linux eines ZyXEL NAS laufen zu lassen! Aber der integrierte PHP-fähige Webserver kann dazu verwendet werden, mit SeedDMS ein Dokumentenmanagementsystem aufzusetzen, ohne Cloud und Internet, das - wenn man will - aber trotzdem von überall erreichbar ist.
 +
 +
Auch stellt das hier keine Anfängeranleitung dar. Ich setze voraus, dass man mit der Administration des NAS und seinem Netzwerk vertraut ist.
  
 
=== Grundlagen ===
 
=== Grundlagen ===
Zeile 20: Zeile 22:
  
 
Jetzt landet man mit einem Browser unter <span style="color:orange;">https://NAS:5001/MyWeb/dms</span>, kann aber nichts sehen, weil noch keine Startseite erstellt wurde.
 
Jetzt landet man mit einem Browser unter <span style="color:orange;">https://NAS:5001/MyWeb/dms</span>, kann aber nichts sehen, weil noch keine Startseite erstellt wurde.
 +
 +
Aus dem Internet ist diese Seite dann über ein <span style="color:orange;">Portforwarding</span> oder über ein <span style="color:orange;">VPN</span> erreichbar.
  
 
==== Aktivierter SSH-Zugang ====
 
==== Aktivierter SSH-Zugang ====
Zeile 53: Zeile 57:
 
Um eine Browserinstallation zu ermöglichen, muss noch die Datei
 
Um eine Browserinstallation zu ermöglichen, muss noch die Datei
  
<ins>conf/ENABLE_INSTALL_TOOL</ins>
+
<span style="color:orange;">conf/ENABLE_INSTALL_TOOL</span>
  
angelegt werden.
+
angelegt werden, die nach der Installation unbedingt wieder gelöscht werden muss!
  
 
=== SeedDMS installieren ===
 
=== SeedDMS installieren ===
Zeile 62: Zeile 66:
 
<span style="color:orange;"><nowiki>https://NAS:5001/MyWeb/dms/www/install/install.php</nowiki></span>
 
<span style="color:orange;"><nowiki>https://NAS:5001/MyWeb/dms/www/install/install.php</nowiki></span>
  
== Tesseract OCR auf ZyXEL NAS ==
+
== Tesseract OCR und Ghostscript auf ZyXEL NAS ==
Damit aus dem schönen Dokumentenmanagementsystem auch etwas richtig schickes wird, sollte man es um eine OCR (Optical Character Recognition) erweitern. Hierzu eignet sich das freie tool <span style="color:orange;">tesseract</span>.
+
Damit aus dem schönen Dokumentenmanagementsystem auch etwas richtig schickes wird, sollte man es um eine OCR (Optical Character Recognition) erweitern. Hierzu eignet sich das freie tool <span style="color:orange;">tesseract</span>. Es kann Texte aus Bilddateien herauslesen, die dann von SeedDMS in der Datenbank als Schlüsselbegriffe für die Volltextsuche gespeichert werden. PDFs müssen zuerst in eine Grafik (z.B. TIFF) umgewandelt werden, und können dann mit tesseract gescannt werden. Für die Umwandlung verwende ich <span style="color:orange;">Ghostscript</span>.
 +
 
 +
Aber sowohl tesseract als auch Ghostscript müssen für das Linux auf dem NAS selber gebaut / kompiliert werden. Das Linux auf dem NAS eignet sich aber kaum dafür, da es nicht mal apt-get gibt und so die dependencies mühsam manuell installiert werden müssten.
 +
 
 +
=== Raspberry Pi 3 als build machine ===
 +
Ein <span style="color:orange;">Raspberry Pi 3</span> mit Raspbian eignet sich hervorragend zum Bauen der erforderlichen tools, weil die Hardware ähnlich ist und die gebauten binaries auf dem NAS lauffähig sind!
 +
 
 +
Man kann hier dieser [https://github.com/tesseract-ocr/tesseract/wiki/Compiling Anleitung] folgen.
 +
 
 +
Im Wesentlichen muss Folgendes passieren:
 +
# sudo apt-get update
 +
# sudo apt-get install g++
 +
# sudo apt-get install autoconf automake libtool
 +
# sudo apt-get install pkg-config
 +
# sudo apt-get install libpng-dev
 +
# sudo apt-get install libjpeg8-dev
 +
# sudo apt-get install libtiff5-dev
 +
# sudo apt-get install zlib1g-dev
 +
# sudo apt-get install libleptonica-dev
 +
# [https://github.com/tesseract-ocr/tesseract tesseract] und [https://github.com/ArtifexSoftware/ghostpdl Ghostscript] sources holen und auf den Raspberry bringen.
 +
 
 +
Im <span style="color:orange;">tesseract</span> Verzeichnis:
 +
# ./autogen.sh
 +
# ./configure --prefix=/i-data/sysvol/dms/tools
 +
# make
 +
# make install
 +
 
 +
Das baut und installiert tesseract in das Verzeichnis <ins>tools</ins>, damit wir es gesondert packen und wegholen können.
 +
 
 +
Beim Ausführen auf dem NAS merkt man jedoch, dass dort einige libraries fehlen. Also holt man sich diese noch dazu:
 +
* liblept.so.5
 +
* libgomp.so.1
 +
* libc.so.6
 +
* libgif.so.7
 +
* libgomp.so.1
 +
* libjbig.so.0
 +
* libjpeg.so.62
 +
* liblept.so.5
 +
* liblzma.so.5
 +
* libopenjp2.so.7
 +
* libpng16.so.16
 +
* libpthread.so.0
 +
* libstdc++.so.6
 +
* libtiff.so.5
 +
* libwebp.so.6
 +
 
 +
Außerdem braucht man noch [https://tesseract-ocr.github.io/tessdoc/Data-Files Trainingsdateien] für z.B. Deutsch und/oder Englisch, was die Texterkennung verbessert. Diese müssen in .../share/tessdata kopiert werden.
 +
 
 +
Jetzt kann man das tesseract bundle TAR im tools Verzeichnis bauen:
 +
<pre>tar -cvf tesseract-bundle.tar *</pre>
 +
 
 +
<span style="color:orange;">Ghostscript</span> wird auf ähnliche Weise gebaut. Es empfiehlt sich, aber das <ins>tools</ins> Verzeichnis vorher zu löschen, um 2 separate Bundles machen zu können.
 +
# ./configure --prefix=/i-data/sysvol/dms/tools
 +
# make
 +
# make install
  
NOTIZIEN:
+
Libraries hinzuzufügen ist hier nicht nötig, tesseract beinhaltet diese bereits. Für ein wirklich unabhängiges Ghostscript müsste man die natürlich wieder zusammensuchen.
  
https://github.com/tesseract-ocr/tesseract/wiki/Compiling
+
Jetzt kann man auch das Ghostscript TAR im tools Verzeichnis bauen:
 +
<pre>tar -cvf ghostscript.tar *</pre>
  
<poem>
+
=== Die 2 tools aufs NAS bringen ===
sudo apt-get update
+
tesseract und ghostscript werden auf dem NAS nach <ins>/i-data/sysvol/dms/tools</ins> befördert, am besten mit dem TARs, die an Ort und Stelle entpackt werden.
sudo apt-get install g++ # or clang++ (presumably)
+
Gestartet wird tesseract z.B. so:
sudo apt-get install autoconf automake libtool
+
<pre>/i-data/sysvol/dms/tools/bin/tesseract --tessdata-dir /i-data/sysvol/dms/tools/share/tessdata -l de+eng $1 $2</pre>
sudo apt-get install pkg-config
 
sudo apt-get install libpng-dev
 
sudo apt-get install libjpeg8-dev
 
sudo apt-get install libtiff5-dev
 
sudo apt-get install zlib1g-dev
 
</poem>
 
  
=== ImageMagick ===
+
Analog dazu Ghostscript:
https://imagemagick.org/script/install-source.php
+
<pre>/i-data/sysvol/dms/tools/bin/gs -dBATCH -dNOPAUSE -sDEVICE=tiffgray -r175 -sOutputFile=$2 $1</pre>
 +
wobei $1 jeweils die Quell und $2 die Zieldatei beinhalten.
  
./configure --prefix=/home/pi/ImageMagick/ --with-tiff=yes
+
=== Ein Skript, das alles kann ===
 +
Richtig gut funktionert hat das Ganze erst mit einem "umfassenden" Skript, das ghostscript und tesseract geschickt ansteuert und den output an das aufrufende SeedDMS weitergibt. Hierbei sollten die eigenen Outputs der tools mit
 +
<pre>> /dev/null 2>&1</pre>
 +
ausgeblendet werden, da sie das Zurückgegebene stören. Das Resultat soll vielmehr in eine temporäre Textdatei erfolgen, deren Inhalt dann kontrolliert ans DMS übergeben wird.

Aktuelle Version vom 9. Februar 2024, 02:36 Uhr

Was ist SeedDMS?

SeedDMS ist ein Dokumentenmanagementsystem mit Weboberfläche, basierend auf PHP, MySQL und Javascript.

https://www.seeddms.org

SeedDMS auf ZyXEL NAS

Gleich vorweg: Es gehört einiges dazu, SeedDMS auf dem Linux eines ZyXEL NAS laufen zu lassen! Aber der integrierte PHP-fähige Webserver kann dazu verwendet werden, mit SeedDMS ein Dokumentenmanagementsystem aufzusetzen, ohne Cloud und Internet, das - wenn man will - aber trotzdem von überall erreichbar ist.

Auch stellt das hier keine Anfängeranleitung dar. Ich setze voraus, dass man mit der Administration des NAS und seinem Netzwerk vertraut ist.

Grundlagen

Web-Publishing mit HTTPS

Damit der integrierte Webserver Inhalte von Freigaben als Webinhalte darstellt, müssen wir das Web-Publishing aktivieren. Wer dabei eine erhöhte Sicherheit für seine Login-Daten haben möchte, aktiviert außerdem HTTPS.

Neue Freigabe mit Webfreigabe

Am besten ist es, man erstellt auf dem NAS eine eigene Freigabe, z.B. dms und gibt dem Benutzer die nötigen Berechtigungen, mit dem wir hier die Installation vornehmen wollen.

Bei dieser Freigabe muss die Webfreigabe aktiviert sein ('dms' auf Web veröffentlichen).

Damit nun aber nicht jeder den Verzeichnisinhalt dieser Freigabe sehen kann, erstellen wir darin eine Datei .htaccess mit dem Inhalt:

Options -Indexes

Jetzt landet man mit einem Browser unter https://NAS:5001/MyWeb/dms, kann aber nichts sehen, weil noch keine Startseite erstellt wurde.

Aus dem Internet ist diese Seite dann über ein Portforwarding oder über ein VPN erreichbar.

Aktivierter SSH-Zugang

Wir kommen nicht umher, einige Dinge direkt auf dem Linux zu erledigen, und brauchen daher einen aktivierten SSH Zugang zum NAS und einen SSH-Client, wie z.B. PuTTY.

SeedDMS vorbereiten

Herunterladen und entpacken

SeedDMS ist frei verfügbar und kann hier heruntergeladen werden.

Im Prinzip muss es nur auf die dafür vorgesehene Freigabe (dms) entpackt werden. Am besten geht das, wenn man das .tar auf die Freigabe kopiert, und den Rest in der SSH Shell erledigt, weil dann die links erhalten bleiben, was wichtig ist!

Am Ende sollte das Ganze Paket ohne unnötige Unterordner auf der Freigabe liegen, so dass die Ordner wie 'data' und 'www' etc. direkte Unterordner der Freigabe sind.

tar -xvf seeddms-quickstart-5.1.12.tar

zum Entpacken und dann noch wie gewünscht verschieben:

mv seeddms51x/* .

PHP

SeedDMS ist der Meinung, es braucht PHP Version 5.6.38, aber auf meinem NAS mit PHP Version 5.5.22 läuft es auch, man muss sich nur durch die Installation mogeln ;)

Dazu wird folgende Datei verändert:

/inc/inc.ClassSettings.php

if (version_compare(PHP_VERSION, '5.6.38') < 0) {

austauschen gegen:

if (version_compare(PHP_VERSION, '5.5.22') < 0) {

MySQL

Es muss eine MySQL Datenbank bereitgestellt werden, auf die SeedDMS Zugriff erhält.

SeedDMS konfigurieren

Vor der Installation muss man die Datei /conf/settings.xml an die Gegebenheiten des NAS anpassen, was absolute Pfade auf dem Dateisystem (/i-data/...) und relative Pfade im Browser (/MyWeb/dms/...) angeht und auch die Benutzerdaten für die Datenbank.

Um eine Browserinstallation zu ermöglichen, muss noch die Datei

conf/ENABLE_INSTALL_TOOL

angelegt werden, die nach der Installation unbedingt wieder gelöscht werden muss!

SeedDMS installieren

Jetzt kann man SeedDMS über den Browser installieren:

https://NAS:5001/MyWeb/dms/www/install/install.php

Tesseract OCR und Ghostscript auf ZyXEL NAS

Damit aus dem schönen Dokumentenmanagementsystem auch etwas richtig schickes wird, sollte man es um eine OCR (Optical Character Recognition) erweitern. Hierzu eignet sich das freie tool tesseract. Es kann Texte aus Bilddateien herauslesen, die dann von SeedDMS in der Datenbank als Schlüsselbegriffe für die Volltextsuche gespeichert werden. PDFs müssen zuerst in eine Grafik (z.B. TIFF) umgewandelt werden, und können dann mit tesseract gescannt werden. Für die Umwandlung verwende ich Ghostscript.

Aber sowohl tesseract als auch Ghostscript müssen für das Linux auf dem NAS selber gebaut / kompiliert werden. Das Linux auf dem NAS eignet sich aber kaum dafür, da es nicht mal apt-get gibt und so die dependencies mühsam manuell installiert werden müssten.

Raspberry Pi 3 als build machine

Ein Raspberry Pi 3 mit Raspbian eignet sich hervorragend zum Bauen der erforderlichen tools, weil die Hardware ähnlich ist und die gebauten binaries auf dem NAS lauffähig sind!

Man kann hier dieser Anleitung folgen.

Im Wesentlichen muss Folgendes passieren:

  1. sudo apt-get update
  2. sudo apt-get install g++
  3. sudo apt-get install autoconf automake libtool
  4. sudo apt-get install pkg-config
  5. sudo apt-get install libpng-dev
  6. sudo apt-get install libjpeg8-dev
  7. sudo apt-get install libtiff5-dev
  8. sudo apt-get install zlib1g-dev
  9. sudo apt-get install libleptonica-dev
  10. tesseract und Ghostscript sources holen und auf den Raspberry bringen.

Im tesseract Verzeichnis:

  1. ./autogen.sh
  2. ./configure --prefix=/i-data/sysvol/dms/tools
  3. make
  4. make install

Das baut und installiert tesseract in das Verzeichnis tools, damit wir es gesondert packen und wegholen können.

Beim Ausführen auf dem NAS merkt man jedoch, dass dort einige libraries fehlen. Also holt man sich diese noch dazu:

  • liblept.so.5
  • libgomp.so.1
  • libc.so.6
  • libgif.so.7
  • libgomp.so.1
  • libjbig.so.0
  • libjpeg.so.62
  • liblept.so.5
  • liblzma.so.5
  • libopenjp2.so.7
  • libpng16.so.16
  • libpthread.so.0
  • libstdc++.so.6
  • libtiff.so.5
  • libwebp.so.6

Außerdem braucht man noch Trainingsdateien für z.B. Deutsch und/oder Englisch, was die Texterkennung verbessert. Diese müssen in .../share/tessdata kopiert werden.

Jetzt kann man das tesseract bundle TAR im tools Verzeichnis bauen:

tar -cvf tesseract-bundle.tar *

Ghostscript wird auf ähnliche Weise gebaut. Es empfiehlt sich, aber das tools Verzeichnis vorher zu löschen, um 2 separate Bundles machen zu können.

  1. ./configure --prefix=/i-data/sysvol/dms/tools
  2. make
  3. make install

Libraries hinzuzufügen ist hier nicht nötig, tesseract beinhaltet diese bereits. Für ein wirklich unabhängiges Ghostscript müsste man die natürlich wieder zusammensuchen.

Jetzt kann man auch das Ghostscript TAR im tools Verzeichnis bauen:

tar -cvf ghostscript.tar *

Die 2 tools aufs NAS bringen

tesseract und ghostscript werden auf dem NAS nach /i-data/sysvol/dms/tools befördert, am besten mit dem TARs, die an Ort und Stelle entpackt werden. Gestartet wird tesseract z.B. so:

/i-data/sysvol/dms/tools/bin/tesseract --tessdata-dir /i-data/sysvol/dms/tools/share/tessdata -l de+eng $1 $2

Analog dazu Ghostscript:

/i-data/sysvol/dms/tools/bin/gs -dBATCH -dNOPAUSE -sDEVICE=tiffgray -r175 -sOutputFile=$2 $1

wobei $1 jeweils die Quell und $2 die Zieldatei beinhalten.

Ein Skript, das alles kann

Richtig gut funktionert hat das Ganze erst mit einem "umfassenden" Skript, das ghostscript und tesseract geschickt ansteuert und den output an das aufrufende SeedDMS weitergibt. Hierbei sollten die eigenen Outputs der tools mit

> /dev/null 2>&1

ausgeblendet werden, da sie das Zurückgegebene stören. Das Resultat soll vielmehr in eine temporäre Textdatei erfolgen, deren Inhalt dann kontrolliert ans DMS übergeben wird.