Die Wissenschaft des Suchens und des Findens in einer digitalen Welt ist alles andere als trivial und erfordert einiges an Know-How und besteht aus vielen Einzelteilen.

Ein wichtiger Teil wenn es darum geht Dokumente zu finden ist diese suchbar zu machen. Also die Extraktion der Daten aus verschiedenen Formaten in eine einfache Form. Vereinfacht gesagt geht es darum die Daten jedes beliebigen Dokuments in reinen Text zu verwandeln den man später als sogenannten Fulltext-Index speichern kann um dann darin zu suchen.

Das ist nicht nur schneller sonder erlaubt auch sehr viel spezifischere Suchen.

Fulltext-Funktionalität kann unglaublich aufwendig und komplex sein, aber wir reden hier ja von Python und deshalb ist es eine der einfachsten Aufgaben überhaupt.

Das Python-Fulltext-Modul (http://pypi.python.org/pypi/fulltext/) erfordert nämlich nur zwei Zeilen Code um aus einem Dokument einen Fulltext String zu machen und unterstützt sehr viele Dateiformate.

Um also ein Dokument in einen String welcher nur noch die Daten enthält zu verwandeln reichen folgende zwei Zeilen:

Select Code
import fulltext
x = fulltext.get('any.pdf', '< no content >')

Wenn die PDF-Datei korrekt ausgelesen wurde steht nun ihr Inhalt als reiner Text in der Variable x. Sollte es nicht funktioniert haben, wird der Text im zweiten Parameter zurückgeliefert. In diesem Fall also “< no content >”.

Wie bereits erwähnt unterstützt dieses Modul sehr viele Dateitypen, welche genau seht ihr in dieser Liste. Das Tool nach dem  Doppelpunkt ist ist das Tool welches von dem Fulltext-Modul intern verwendet wird um die Daten zu extrahieren. Natürlich müssen diese Tools am System auch installiert sein.

  • application/pdf: pdftotext
  • application/msword: antiword
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document: docx2txt
  • application/vnd.ms-excel: convertxls2csv
  • application/rtf: unrtf
  • application/vnd.oasis.opendocument.text: odt2txt
  • application/vnd.oasis.opendocument.spreadsheet: odt2txt
  • application/zip: funzip
  • application/x-tar, gzip: tar & gunzip
  • application/x-tar, bzip2: tar & bunzip2
  • application/rar: unrar
  • text/html: html2text
  • text/xml: html2text
  • image/jpeg: exiftool
  • video/mpeg: exiftool
  • audio/mpeg: exiftool
  • application/octet-stream: strings

Also ich für meinen Teil bin begeistert und auch bereits fleißig am Entwickeln einer Lösung in welcher ich dieses Modul verwende.