Anzeige:
Ergebnis 1 bis 10 von 10

Thema: suchen in PDF Datei in der Datenbank

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74

    suchen in PDF Datei in der Datenbank

    Hallo,
    ich habe in meiner Datenbank auch PDF Dateien gespeichert. Nun würde ich gerne eine Suchfunktion machen die es mir ermöglicht stichworte in den PDFs zu suchen.
    Es soll also ein stichwort eingegeben werden können und dann sollen alle Datenbankeinträge angezeigt werden, bei den die PDFs dieses Stichwort enthalten. Ist das irgendwie möglich ?

    Danke für Infos,
    Chris

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    welche Datenbank, wie hast Du die Dateien gespeichert? LOB? Deren Behandlung unterscheidet sich AFAIK ziemlich in den verschiedenen DBMS.

    Jan

    EDIT: Es müssen natürlich auch durchsuchbare PDFs sein - wenn der Text in einem eingebetteten Images steckt, dann hilft Dir nur OCR-Software, und da sind leistungsfähige Programme IMHO nicht im OpenSource-Bereich zu finden, dann musst Du Knete abdrücken.
    Geändert von jan61 (18-06-2008 um 21:56 Uhr)

  3. #3
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Hallo

    Dafür brauchst du einen Indexer wie Lucene oder Xapian. In den Index wirfst du eine Referenz auf das Dokument und den Inhalt. Natürlich in Plainformat. Du kannst Metadaten noch hinzufügen.
    Lucene.NET welches z.B. von Beagle verwendet wird, ist im Moment bei Apache und dort in der Incubation-Phase und wird daher im Moment nicht weiterentwickelt, aber es wird etwas passieren.
    Lucene Java ist sehr gut und wird aktiv weiterentwickelt.
    Xapian mag ich persönlich sehr, es wird auch von apt verwendet.

    Damit kannst du dann effektiv suchen, aber eine Livesuche macht keinen Sinn. Die Performance wäre unerträglich.

    Den Text musst du selbstverständlich extrahieren mit verschiedenen Programmen. Xapian leistet hier sehr gute Arbeit. Es verwendet verschiedene kleine Programme wie antiword usw. die alle auf der HP vorgestellt sind. Einfach mal reinschauen.

    Es gibt noch kommerzielle Indexengines. Und natürlich die RDBMS-eigenen Indexer, wie etwa von MSSQL, welche aber den Open-Source-Engines hinterherhinken. Vor allem sind die letzteren kompliziert in der Wartung und Installation. MSSQL bietet dafür von Haus aus schon MS Office Unterstützung und PDF-Unterstützung ist frei (im Sinne von Freibier) verfügbar.

    Zu OCR möchte ich noch auf Tesseract verweisen. Diese OCR-Engine ist imho der Hammer und kommt schon beinahe den kommerziellen Produkten nahe. gOCR ist hier wesentlich schlechter, aber Tesseract überbietet gOCR um einiges und lässt gutes Arbeiten zu. Für die Wald und Wiesen-Bedürfnisse reicht es aus.

    Lg, Christian

    PS: Bitte nicht auf der DB selbst die PDFs durchsuchen, sondern nur über einen Index zugreifen. Wenn ich so etwas schon höre, oh mein Gott.
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von Waxolunist Beitrag anzeigen
    PS: Bitte nicht auf der DB selbst die PDFs durchsuchen, sondern nur über einen Index zugreifen. Wenn ich so etwas schon höre, oh mein Gott.
    Diverse DBMS bieten Aufsätze / Komponenten zum Handling von LOBs - z. B. Oracle und Informix. Wenn die Daten in der DB stehen, dann sollte man sowas auch nutzen und nicht das ganze Geraffel wieder ins Dateisystem exportieren. Dann fängt man nämlich wieder an, sich separat um Backup, Failover, Clustering und Ähnliches kümmern zu müssen, anstatt die vorhandenen (und hoffentlich eingesetzten) Mittel der DBMS nutzen zu können.

    Aber das ist alles Spekulation, solange überhaupt noch nicht klar ist, wie die Dateien gespeichert sind und welches DBMS benutzt wird.

    Jan

    P.S.: Tesseract werde ich mir mal anschauen, mit gOCR war ich nämlich überhaupt nicht zufrieden.

  5. #5
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Zitat Zitat von jan61 Beitrag anzeigen
    Diverse DBMS bieten Aufsätze / Komponenten zum Handling von LOBs - z. B. Oracle und Informix. Wenn die Daten in der DB stehen, dann sollte man sowas auch nutzen und nicht das ganze Geraffel wieder ins Dateisystem exportieren.
    Ja und das sind genauso Aufsätze, wie ich sie anhand von MSSQL beschrieben habe. Es sind Indizes. Es wird hier keine Livesuche gemacht.

    Allerdings sind diese "Aufsätze" sehr beschränkt in den Dateiformaten. Mit Lucene habe ich hier einfach mehr Möglichkeiten.

    Lg, Christian
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  6. #6
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von Waxolunist Beitrag anzeigen
    Ja und das sind genauso Aufsätze, wie ich sie anhand von MSSQL beschrieben habe. Es sind Indizes. Es wird hier keine Livesuche gemacht.
    Was meinst Du mit "Es wird hier keine Livesuche gemacht"?

    Die "Text Engine" von Oracle und die "Data Blades" von Informix z. B. sind weitaus mehr als nur Indizes.

    Aber wie schon gesagt: Wir spekulieren hier nur. Wir haben ja immer noch keine Antwort, worum es sich eigentlich dreht.

    Jan

  7. #7
    Registrierter Benutzer
    Registriert seit
    18.04.2008
    Beiträge
    59
    Hi. Wenn nichts gegen Indizieren der Suchbegriffe und extrahieren der
    Texte spricht, konvertieren mit pdf to text, z.B. (über cronjob)
    http://pdftohtml.sourceforge.net/

  8. #8
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Zitat Zitat von jan61 Beitrag anzeigen
    Was meinst Du mit "Es wird hier keine Livesuche gemacht"?
    Du hast recht, die Anforderungen sind bisher nur Spekulation und der Aufsatz kann mehr als nur ein Index. Aber die Suche selbst wird gegen einen Index gemacht und nicht gegen die Textspalte.

    Trotzdem denke ich, dass der TE hier keine Oracle zur Verfügung hat sondern eher auf Open Source Produkte aufbaut.

    Aber vielleicht meldet sich der TE ja mal wieder und klärt ein wenig hier auf.

    Lg, Christian
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  9. #9
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74
    Hallo,
    sorry das ich mich so lange nicht mehr gemeldet habe.

    Also ich hatte vor die PDF's in der Datenbank als blob zu speichern.
    Es handelt sich um eine MySQL Datenbank.

    Ich bin Anfäger und kann mit solchen Begriffen wie Indexer, LOB, Plainformat .... aber ich werde versuchen mich schlau zu machen.

    ohne jetzt mal gegoogelt zu haben ...
    verstehe ich es richtig, dass ich die komplette PDF als Text in der Datenbank speichern soll ? Damit ich dann diese Spalte durchsuchen kann und nicht extra jedes mal das PDF umwandeln muss.
    das wäre zumindest eine Möglchkeit oder (aber nicht die Beste) ?
    Da ich aber komplette Bücher speichern will wird das denke ich zeimlich schnell ziemlich speicheraufwändig ?

    Hab grad mal nach Indexer gegoogelt und für Lucene den Wiki Eintrag durchgelesen. Meine aktuelle Vorstellung reicht soweit, dass ich denk das Lucene meinen Text (den ich aus dem PDF extrahiert habe) durchsucht, doppelte wörter verwirft ... wörter wie "und" usw. rauswirft und alphabetisch ordnet.
    Dann könnte ich diese Daten in meine Tabelle schreiben ?

    Die Weboberfläche mache ich mir Ruby on Rails, hab gelesen das Lucene auch in Ruby exportiert ist. Die Funktionsweise und die Verwendung werde ich mir genauer ansehen.

    Im PDF sind Texte also OCR entfällt.

    Also den ersten Ansatz mit dem ich mal weiterarbeiten werde bzw. mich drüber informieren werde sind Indexer.
    Falls ich dann noch Fragen habe werde ich mich nochmal melden.
    Aber falls Ihr aber noch weitere produktive Hinweise und Tipps habt bin ich natürlich froh drüber.


    Vielen Dank,
    Chris

  10. #10
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Zitat Zitat von chris21 Beitrag anzeigen
    Hab grad mal nach Indexer gegoogelt und für Lucene den Wiki Eintrag durchgelesen. Meine aktuelle Vorstellung reicht soweit, dass ich denk das Lucene meinen Text (den ich aus dem PDF extrahiert habe) durchsucht, doppelte wörter verwirft ... wörter wie "und" usw. rauswirft und alphabetisch ordnet.
    Dann könnte ich diese Daten in meine Tabelle schreiben ?
    Hallo

    Beinahe, nur dsass du diese Daten nicht mehr weiterspeicherst, sondern den mit Lucene erstellten Index abfraegst.

    Aber dein Ansatz ist richtig.

    Lg, Christian
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •