Ext JS Winter-Camp-Workshop

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Nachdem das Thema Dokumenten Management (DMS) wieder einmal etwas gestresst worden ist, habe ich gedacht, dass wir im Winter-Camp-Workshop eine ExtJS-Anwendung zu diesem Thema entwickeln. Ich hatte ja schon hier eine einfache Datenbankanwendung für beliebige Datenbanktabellen vorgestellt und diese soll jetzt ein wenig in Richtung DMS erweitert werden.

Zum Gesamtkonzept:

- Die Anwendung ist nichts für unbedarfte Benutzer, weil sie wenig Vorkehrungen vor Falscheingaben haben wird
- Zunächst werden nur PDF-Dokumente verwaltet und diese müssen in einem 'durchsuchbaren' Format vorliegen, damit das Tool pdftotext auch an den Inhalt herankommen kann. Durchsuchbare PDFs werden von den meisten Scannern produziert bzw. können mit geeigneten Windows-Tools (Abbyy) hergestellt werden; grundsätzlich sind weitere Dateitypen denkbar und möglich
- Die Aufnahme neuer Dokumente wird zunächst manuell und einzeln abgewickelt; könnte später auch über einen Crawler geschehen
- Die Dokumente werden in einem Dokumenten-Verzeichnis abgelegt und ähnlich wie bei anderen Synology-Programme über einen Datenbankeintrag verwaltet. Je nach Dokumentenanzahl sollte man sich eine geeignete Hierarchie im Voraus überlegen, da die Pfade innerhalb der Datenbank nicht automatisch aktualisiert werden; könnte man später per Crawler ein wenig lockerer sehen
- Die Abfragen werden mit klassischem SQL-Where-Abfragen eingegeben; daher sollte man die Syntax für die Where-Klausel können bzw. lernen wollen. Die darunter operierende MySQL-Datenbank kennt spezielle Datenbank-Abfrage-Notationen für Volltext-Indizes; dies kann man auch einsetzen

Es ist notwendig, sich mit ExtJS, JavaScript, PHP und MySQL auseinandersetzen zu wollen ... es ist nicht notwendig, alles in den Skripte sofort und gleich zu verstehen.

Das Grundgerüst des hier vorgestellten DMS:

- Datenbankunterstützte DMS-Verwaltung, die einfach auf persönliche Wünsche hin angepasst werden kann
- Volltext-Recherche
- Supergeile ExtJS-GUI
- Lauffähig auf allen DS-Modellen, wo man per IPKG xpdf-Tools installieren kann
- Beliebige Verlinkung der Dokumente untereinander
- Beliebig viele Notizen pro Dokument mit Zeitangabe für eine Wiedervorlage
- Ausdruck von hübschen Übersichtslisten (auch von Teillisten, welche aus Abfragen resultieren)

Itari
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die benötigte MySQL-Datenbank kann per phpmyadmin angelegt werden. Namensvorschlag 'dms'. Die folgenden 3 Tabellen werden für das Projekt benötigt (können später beliebig erweitert werden):

Rich (BBCode):
CREATE TABLE document (
  document_id int(11) NOT NULL auto_increment,
  document_date datetime NOT NULL,
  document_status varchar(20) collate latin1_general_ci default NULL,
  document_tag varchar(1024) collate latin1_general_ci default NULL,
  document_content text collate latin1_general_ci,
  document_attachments varchar(4096) collate latin1_general_ci NOT NULL,
  document_type varchar(20) collate latin1_general_ci NOT NULL,
  links varchar(1) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (document_id),
  FULLTEXT KEY document_content (document_content)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

CREATE TABLE `link` (
  `link_tab1` varchar(20) collate latin1_general_ci NOT NULL,
  `link_id1` int(11) NOT NULL,
  `link_tab2` varchar(20) collate latin1_general_ci NOT NULL,
  `link_id2` int(11) NOT NULL,
  `links` varchar(1) collate latin1_general_ci NOT NULL,
  UNIQUE KEY `tab1` (`link_tab1`,`link_id1`,`link_tab2`,`link_id2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

CREATE TABLE note (
  note_id int(11) NOT NULL auto_increment,
  note_date datetime NOT NULL,
  note_content varchar(4096) collate latin1_general_ci NOT NULL,
  note_done varchar(20) collate latin1_general_ci NOT NULL,
  links varchar(1) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (note_id)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Zum Funktionieren muss ein Satz in der Tabelle 'document' erfasst werden (kann später wieder gelöscht werden).
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das Projekt sollte in einem Unterverzeichnis namens 'dms' von /volume1/web angelegt werden.

Nach dem Auspacken der Dateien wird auch das Dokumentenverzeichnis 'ablage' erzeugt. Hier werden alle Dokumente abgelegt. Das Verzeichnis kann sicherlich verlinkt werden und auch andere Techniken des Verteilens von Dateien sind denkbar.

Wenn man vorhat mehr als 100 Dokumente zu verwalten, dann sollte man sich eine Ablagestruktur überlegen, welche einfach aber auch robust ist. Mein Vorschlag für eine Beispiel-Dokumentendatei "Synology NAS Server 3rd-Party Apps Integration Guide.pdf" wäre zunächst die Ersetzung aller Leerstellen und Sonderzeichen aus dem Dateinamen, also z.B. "Synology_NAS_Server_3rd-Party_Apps_Integration_Guide.pdf" und dann das Anhängen des Datums (Jahr-Monat): "Synology_NAS_Server_3rd-Party_Apps_Integration_Guide_2009-02.pdf". Die Ablage würde ich dann wie folgt strukturieren:

Rich (BBCode):
/volume1/web/dms/ablage/s/Synology/2009/Synology_NAS_Server_3rd-Party_Apps_Integration_Guide_2009-02.pdf

Der Vorteil ist, dass man eine recht gut durchsuchbare Struktur erhält und andererseits die Struktur aus dem Dateinamen ableitbar bleibt (Erster Buchstabe, erstes Wort und Jahreszahl). Das Entfernen von Leerstellen und anderen 'unmöglichen' Zeichen vereinfacht nur das Handling mit den Dateinamen und tut auch nicht wirklich weh.
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die Anwendung wird aufgerufen mit oder ohne Search-String-Optionen:

Rich (BBCode):
http://syno/dms/form.html?database=dms&table=document

Die schon von dem vorangegangenen Workshop her bekannte Oberfläche wird angezeigt, wobei man hier auch die Datenbank und Tabelle einstellen kann. Dran denken, dass die Search-String-Optionen (?database=dms&table=document) stärker durchschlagen.

Mit 'load' kann man die Datenbank immer wieder abfragen.

Die 'Where'-Funktion erlaubt die Where-Klausel fürs SQL zu formulieren (z. B. document_id = '1') - immer daran denken, dass man die Namen der Spalten benutzt wie sie in der Tabellendefinition vorgenommen worden sind.

Klickt man mit der rechten Maus-Taste auf eine Zeile, erscheint ein Kontext-Menu. Die Auswahl 'update' zeigt dann die anhängende Maske an. Man kann nun fast alle Felder ändern (nur die Verlinkungen nicht wirklich - aber davon später). Ändert man die 'id', dann wird ein neuer Eintrag erzeugt (!) andernfalls wird der vorhandene geändert.

Unter 'attachments' würde man seinen Pfad zum Dokument angeben (/volume1/web/dms/ablage wird automatisch angenommen).

Ist per IPKG das Tool pdftotext installiert worden und in das Verzeichnis /volume1/web/dms kopiert worden, dann kann man mit den 'Gear'-Symbol am Rande der Maske eine Extraktion der Dokument-Inhalte durchführen. Das Ergebnis wird dann in das Feld 'content' aufgenommen. Wie gesagt, das könnte man auch automatisieren ... aber soweit sind wir ja noch nicht.

Das Feld 'content' wird per Volltext-Index recherchierbar. Bitte die Syntax dazu lesen. Es kann am Anfang sein, dass man im phpmyadmin mal den Aufbau des Volltext-Index forcieren muss; einfach die Tabelle auswählen, Menupunkt 'Operationen' klicken und dann ziemlich weit unter den Punkt 'Optimiere Tabelle' auswählen.

.
 

Anhänge

  • dms1.jpg
    dms1.jpg
    63,1 KB · Aufrufe: 213

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die Spalten in der Listenansicht kann man beliebig ein- und ausblenden, umsortieren und die Sortierung und Gruppenbildung beeinflussen. Die vorletzte Spalte (letzte vor link in der DB-Tabellendefinition - link wird ja nicht direkt angezeigt in der Tabellenansicht) wird standardmäßig zur Gruppenbildung herangezogen; kann man ändern ... schau in die Funktionsleiste unter 'Group'.

Mit eine Recht-Klick kann man 'add note' auswählen, also eine (von beliebig vielen) Notiz zu dem Dokument erfassen. Das kleine Fenster kann man beliebig verschieben. Sobald das Feld 'done' mit einem Inhalt gefüllt wird, wird die Wiedervorlage möglich. Ansonsten ist die Notiz nur ein 'gelber Zettel' ;)

Anmerkung: Sortierungen kann man immer durch Auswählen von Spalten hinbekommen, man kann sie auch im Search-String per 'order' einstellen. Óhne irgendwas einzustellen wird die natürlich Reihenfolge des Einspeicherns verwendet; diese wiederum lässt sich mit phpmyadmin unter Optionen neu sortieren mit 'Tabelle sortieren nach'. Will man also später Notizen in der Reihenfolge des Anlegens sortiert anschauen, dann muss man nichts machen; will man die umgekehrte oder eine ganz andere Reihenfolge, muss man das halt bei einer der beschriebenen Möglichkeiten ändern.

.
 

Anhänge

  • dms2.jpg
    dms2.jpg
    21,4 KB · Aufrufe: 205

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wenn man nun mal alles zu einem Dokument sehen möchte, dann kann man per rechten Maus-Klick auf 'view' klicken und bekommt dann die angehängte Sicht der Dinge. (Bild-1)

In dem kleine Rahmen ist ein Klick-Symbol, um die Notizen auf zu machen. Es wird dann so etwas wie eine Master-Detail-Sicht auf die Notizen (manchmal dauert das einen Moment, bis die Daten geladen worden sind) angezeigt (Bild-2)

.
 

Anhänge

  • dms3.jpg
    dms3.jpg
    62 KB · Aufrufe: 210
  • dms4.jpg
    dms4.jpg
    64,2 KB · Aufrufe: 210
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Für die PDF-Vorschau sollte natürlich ein Browser-Plug-In installiert sein (Adobe macht das eigentlich immer gerne sofort mit :D).

Damit man auch mehrere Sichten auf die Datenbank gut und schnell im Browser vorhalten kann, habe ich mir im Firefox 'VertTabbar' installiert.

So ... ich halte mal inne mit der Beschreibung.

Das ganze geht wie immer auf eigene Kappe :D und steht wie immer unter GPL3.

Itari

.
 

Anhänge

  • dms5.jpg
    dms5.jpg
    100,3 KB · Aufrufe: 210
  • dms.zip
    11,7 MB · Aufrufe: 25

denon2002

Benutzer
Mitglied seit
20. Okt 2008
Beiträge
536
Punkte für Reaktionen
0
Punkte
0
Hallo itari,

danke, das ist mal ein Thema was mich auch interressiert.
Nach meinem Urlaub hänge ich mich mal hier an dein Thema.

gruß
Torsten
 

denon2002

Benutzer
Mitglied seit
20. Okt 2008
Beiträge
536
Punkte für Reaktionen
0
Punkte
0
Ist per IPKG das Tool pdftotext installiert worden und in das Verzeichnis /volume1/web/dms kopiert worden, dann kann man mit den 'Gear'-Symbol am Rande der Maske eine Extraktion der Dokument-Inhalte durchführen. Das Ergebnis wird dann in das Feld 'content' aufgenommen.
.

Habe doch aus lauter Neugier doch schon mal losgelegt.

Beim Klick auf das Gear-Symobol erscheint die Meldung "got 0 chars"
Also klappt die Indexierung des PDF nicht. (Denke ich zumindestens)

-> Habe das gleiche in die DB eingetragen und habe per ipkg xpdf in dem ja das pdftotext enthalten ist installiert. (+ ins dms Verzeichnis kopiert)

Jedoch funktioniert es leider nicht.

---> Also komme erst am am Montag aus dem Urlaub wieder. Bin gespannt welchen Ratschlag / Idee du für mich hast.

gruß
Torsten
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Beim Klick auf das Gear-Symobol erscheint die Meldung "got 0 chars"
Also klappt die Indexierung des PDF nicht. (Denke ich zumindestens)

Die Extraktion des Textes aus dem PDF ist dann fehlgeschlagen, wenn diese Meldung kommt.

Probiere mal statt form.html ->

Rich (BBCode):
pdf2txt.php?file=Synology_NAS_Server_3rd-Party_Apps_Integration_Guide.pdf

Da müsste dir jetzt der Inhalt der PDF-Datei angezeigt werden.

Itari
 

denon2002

Benutzer
Mitglied seit
20. Okt 2008
Beiträge
536
Punkte für Reaktionen
0
Punkte
0
Hy,

WebSeite bleibt leer. (Habe denn alternativen Apache installiert)

Der Apache von Synology bringt "Warning: exec() [function.exec]: PHP exec disable. in /volume1/web/dms/pdf2txt.php on line 3" das ist aber kein Problem.

php.ini geändert "safe_mode_exec_dir =" und nun wird wieder nur eine leere Webseite angezeigt.

ich glaube das liegt an dem "pdftotext" ... oder an dem PDF...
Habe es auch mal mit mehreren anderen PDF probiert. Ohne Erfolg.

Gruß
Torsten

PS: auf der Shell "pdftotext ablage/Synology_DS209\+_Datasheet_enu.pdf test.txt" ergibt eine tolle Datei test.txt in der das gesamte PDF als Text dargestellt ist. Nur per Web habert es noch.
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Probiere das ganze solange mit dem Skript pdf2txt.php aus, bis es richtig angezeigt wird. Vielleicht ist der PDF-Dateiname das Problem? Mach mal alle Sonderzeichen und Leerstellen raus; ich habe den Dateinamen nicht sonderlich gut abgesichert gegen Leerstellen, Plus- und Minuszeichen usw. Kannst dir das ja weiter unten anschauen, was da passiert ...

Das pdf2txt.php-Skript ist ein schlichtes Skript, welches auch nur ein paar Sonderzeichen [alles was nicht zwischen Leerstelle und Tilde liegt sowie Umlaut bzw. ß ist, fliegt raus] und doppelt vorkommende Zeichen substituiert und eben den exec() enthält. Dieses Skript wird auf jeden Fall verwendet ... Es ist auch richtig, dass da 3 Zeilen das Gleiche gemacht wird ... ist halt ein radikaler Aufräumer ;)

PHP:
<?php
$out='';
exec('pdftotext.exe ablage/'.$_REQUEST['file'].' - ',$ret);
foreach($ret as $line) {
   $tmp = $line; 
   $tmp = preg_replace('/[^ -~äöüÄÖÜß]/U','',$tmp);
   $tmp = preg_replace('/(.)\1{2,}/U','\\1',$tmp);
   $tmp = preg_replace('/(.)\1{2,}/U','\\1',$tmp);
   $tmp = preg_replace('/(.)\1{2,}/U','\\1',$tmp);
   $out.=$tmp;
   }  
print $out;
?>

Itari
 

CoRe

Benutzer
Mitglied seit
10. Feb 2011
Beiträge
30
Punkte für Reaktionen
0
Punkte
12
Hi,
sorry dass ich diesen 3 Jahre alten Thread ausgrabe.

Mein aktuelles Projekt passt jedoch perfekt hier rein :)

Ich habe mittlerweile einige Open-Source-DMS auf meiner Syno getestet..
Nichts war bisher annähernd brauchbar.

LetoDMS scheitert bei der Installation (Zend und Pear habe ich installiert, AdoDB bekomme ich ums verrecken nicht zum laufen)
Und die anderen sagen mir von der Usability und dem Umfang nicht zu.

Dann habe ich den Thread hier gefunden und bin seitdem am testen, probieren, modifizieren ;)

Aktueller Stand:
Umwandlung von DOC, XLS und PPT mit "catdoc" und PDF mit "pdftotext"
CatDoc habe ich auf der Syno neu kompiliert, da die Umlaute nicht korrekt dargestellt werden.
Anschließend habe ich die Tools mit PHP angesprochen und die Daten aus den Dokumenten ausgelesen.

Die Tabelle von Itari habe ich übernommen (nur die Documents-Tabelle)
Nächster Schritt wird die Übergabe der Dokumenten-Informationen in die DB.

Ich würde gern das Frontend von Itari übernehmen, aber ich finde, dass der Quellcode für die wenigen Funktionen die genutzt werden, extrem überladen ist.

Es ist ein schickes und schnelles Frontend mit Ajax-Komponenten (stehe ich voll drauf) aber ich denke, ich werde mir ein eigenes basteln.
Gibt es eventuell Element-Bibliotheken, Funktionen oder Klassen, die man vom DSM übernehmen kann?

Eventuell hat ja noch jemand Interesse, das ganze weiterzuentwickeln.
Ich bin auf jedenfall am Thema dran und werde regelmässig Infos und Bilder posten wenn es jemanden interessiert.

Gruß
Sandro
 

butterfly

Benutzer
Mitglied seit
01. Dez 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
auch ich bin letodms "geschädigt". hab jetzt 2 tage versucht das teil zum fliegen zu bringen. nichts.
zuerst pear problem. das hatte ich dann im griff. jetzt hänge ich beim nächsten schritt: laut fehlermeldung findet er das coreverzeichnis nicht. ich habe den pfad aber richtig eingetragen. gibt es villeicht einen user bei dem letodms läuft? wie habt ihr es hinbekommen?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hi Sandro,

Tipp: ich habe etwas von der Geschichte hier auch in meinem AdminTool unter Datenbanken ... allerdings ist das auch schon Ewigkeiten her ... der Witz ist ja gewesen, die Datenstrukutur der Tabellen in eine List- bzw. Formsdarstellung automatisch (!) zu übernehmen. Für ein einfaches Archiv wäre das nicht unbedingt nötig

Die Ajax-GUI extJS wird wohl immer noch von Synology für den DSM verwendet ... allerdings (ich hab schon lange nicht mehr reingeschaut), in einer älteren Version. Man kann sich aber wohl immer noch bei extJS als non-profit-Entwickler frei bedienen

Leider hab ich im Moment wenig Zeit, mich mit dieser Geschichte hier weiter zu beschäftigen; ich finde es aber toll, wenn jemand wie du, Spaß daran hat, etwas zu basteln

LG

Itari
 

CoRe

Benutzer
Mitglied seit
10. Feb 2011
Beiträge
30
Punkte für Reaktionen
0
Punkte
12
Hi Itari,
danke für den Tipp..
Werde es aber ohne das ExtJS umsetzen.

Aktueller Stand:
Rekursives einlesen aller Dokumente ab definiertem Root-Verzeichnis (ohne Indexierung des Inhalts)
Anzeige der eingelesenen Dokumente in einer Übersicht (Dokument-Typ, Name, Pfad, Status (ADDED), Datum der letzten Änderung)
PHP-Script (für Intervall-Aufruf über Cron) zum indexieren von PDF, TXT, DOC, PPT und XLS (Limit kann in der config gesetzt werden, um bei jedem Durchlauf zu prüfen, wie viele Dokumente noch indexiert werden um nicht zu viele Indexvorgänge zu starten)

Wenn die Datei einen indexfähigen Inhalt besitzt, wird der Inhalt in die DB geschrieben (Update des Status und der letzten Änderung)

Wenn die Datei keinen indexfähigen Inhalt besitzt und ein PDF ist, wird die Datei in einen speziellen Ordner geschoben (Update des Status auf OCR).
Dieser Ordner befindet sich in der OwnCloud und wird automatisch vom Mac synchronisiert
Über die "Ordneraktionen" von Mac OSX wird der Ordner auf neue Inhalte überwacht und bei einem neuen PDF wird das Dokument an ReadIris übergeben und konvertiert.
Die konvertierte Datei wird dann über die Einstellungen von ReadIris in einen anderen OwnCloud-Ordner verschoben und somit wieder auf die Syno synchronisiert

Wenn das Index-PHP-Script das nächste mal läuft, werden bei Ordner (OCR-INBOX und OCR-OUTBOX) geprüft und wenn die OCR-Datei vorhanden ist, wird die Datei an den ursprünglichen Ort verschoben (Zusatz im Dateiname "-OCR" und beim nächsten Index-Lauf mit einbezogen (Status OCR-ADDED)
Wenn bei der Indexierung der Inhalt gelesen werden kann, dann wird die Datei aus dem OCR-Outbox-Ordner wieder gelöscht und der Datenbankeintrag wird auf die OCR-Datei geändert (somit bleibt die Original-Datei vorhanden)

Bis dahin funktioniert alles automatisch (vorrausgesetzt, das Index-PHP-Script ist im Cron eingerichtet) -> Das könnte man eigentlich auch über das Frontend einrichten (das wäre dann aber eines der letzten Schritte)

Das schöne an der ganzen Geschichte, ich kann meine ganzen Dokumente auf der Arbeit mit einem schnellen Scanner einscannen und direkt in den Ordner der OwnCloud hochladen.
Daheim wird dann alles schön mit OCR umwandelt und eingelesen ;)

Das ist mein aktueller Stand.

Hier ein paar Screenshots: (aktuell sind nur PDFs wegen der OCR-Umsetzung im DMS - TXT, DOC, XLS und PPT funktionieren aber auch schon einwandfrei)

Nach dem einlesen:
Bildschirmfoto 2012-12-02 um 00.53.27.jpg

Während der Indexierung:
Bildschirmfoto 2012-12-02 um 00.53.54.jpg

Hier mit TXT, XLS und DOC:
Bildschirmfoto 2012-12-02 um 01.13.01.jpg

Index-Script über Konsole manuell gestartet:
Bildschirmfoto 2012-12-02 um 01.13.26.jpg

Aktuell kommt nur ein JS zum sortieren der Zeilen zum Einsatz.
Die Kodierung der Scripte, der Datenbank und des Frontends ist UTF-8, somit gibt es keine Probleme mit Umlauten.
Die

Für die Suche werde ich mich wieder etwas mit Ajax beschäftigen müssen ;)

Die nächsten Aufgaben:
Umsetzung einer Suche
Ergänzung des Konzepts um Tags (Suche nach Dokument mit Tag "Rechnung") -> Dokumente können manuell oder automatisch (anhand des Dateinamen oder Inhalts) getagt werden
Planung Absicherung des Frontends (als 3rd-Party-Addon im Syno-DSM, als eigenständige Seite oder die Möglichkeit, beides zu nutzen)
Dokumente mit Copy-Schutz - aktuell wird als Status "Copy-Schutz" hinterlegt, wenn im PDF der Text gegen kopieren geschützt ist. Evtl. gibt es da ja einen Trick (zb. durchs OCR jagen, muss ich halt mal testen)

Ich halte euch natürlich auf dem laufenden ;)

Achso, vielleicht hat ja jemand Interesse, mich bei der Umsetzung der Suchfunktion zu unterstützen.
Ich würde es auch alleine schaffen, aber ich habe die Erfahrung gemacht, dass der Synergy-Effekt zu besseren Ergebnissen und Ideen führt.

Gruß
Sandro
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hi Sandro,

eine Geschichte solltest noch bedenken ... was passiert, wenn Dateien so aktualisiert werden (z.B. durch nochmaliges OCRen), dass sich Inhalt, Größe und Datum ändern usw. und du sie nochmals in die Datenbank aufnehmen musst bzw. ersetzen musst

zu der Copy-Protection solltest mal googeln ... ich hab kaum geschützte Dateien, weil ich fast alles scanne, aber vielleicht habe ich dein Problem ja auch nicht ganz verstanden

Itari
 
Zuletzt bearbeitet:

CoRe

Benutzer
Mitglied seit
10. Feb 2011
Beiträge
30
Punkte für Reaktionen
0
Punkte
12
Hi Itari,
das mit den geänderten Dateien sollte ich mir wirklich nochmal anschauen.
Würde ja eigentlich reichen, wenn ich die Checksumme als MD5 aus Dateiname und Content einfach in der DB ablege.
Dann noch das Cron-Script anpassen, dass auch Dateien, die sich seit dem letzten Scan geändert haben und dessen Status auf OK stand, auf added geändert werden.
Dann werden die einfach nochmal indexiert.

Die Copy-Protection hatte ich nur bei 2 Dokumenten, die nicht von mir selbst stammen, sondern aus dem Internet (Handbücher)
Werde mal googlen ;)

Gruß
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hi Sandro,

ich hab mir einen Crawler geschrieben, der einmal [1] über alle Dokumente rast und vergleicht, ob diese schon in der DB enthalten sind (und dabei ein paar Merkmale - bei mir wird Datum, Größe der Datei und Größe des OCRten Content - geprüft) ... den OCR-Content hab ich nämlich auch in einer DB-Tabelle, um fulltext-Abfragen zu realisieren. Zum anderen [2] hab ich einen Lauf, der nur nach 'neuen' Dokumenten sucht, also ich mach ne DB-Abfrage, von wann die letzte Datei ist und schau dann mit einen Tag Versatz nach, ob neuere Dateien vorhanden sind. Zum [3] hab ich eine Cross-Prüfung, also ob es auch zu jedem Datenbankeintrag eine Datei gibt und wenn nein, setze ich einen Lösch-Merker, schau mir die Ausgabe an und lösche dann [4] die DB-Sätze mit Löschmerker. Auf diese Weise kann ich auch mal schnell eine Datei umbennen, sozusagen aus der Datenbank herauslöschen und neu indizieren

zum Copy-Thema hilft auch immer elcomsoft gerne als Pröbchen

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat