Erweiterung der Apache Tika-Funktionen

Apache Tika ist ein Toolkit für die Extraktion von Metadaten und Textinhalten aus verschiedenen Dokumentenformaten. Tika selbst bietet eine Implementierung…

Apache Tika ist ein Toolkit für die Extraktion von Metadaten und Textinhalten aus verschiedenen Dokumentenformaten. Tika selbst bietet eine Implementierung für das Parsen einiger Dokumentenformate, während es für das Parsen vieler weiterer Formate auf externe Bibliotheken (wie Apache PDFBox und Apache POI) zurückgreift.

Tika bietet eine einheitliche Java-API für alle unterstützten Dokumentformate, um dem Benutzer das Leben zu erleichtern. Außerdem bietet Tika Funktionen zur Erkennung des Dokumententyps und der Sprache des Inhalts.

In meinem früheren Artikel, Inhaltsextraktion mit Tika, habe ich mich mit der Verwendung von Tika entweder mit Solr oder im Standalone-Modus beschäftigt. In diesem Beitrag gehe ich auf einige der Aspekte ein, die bei der Implementierung der Unterstützung für neue Dokumentenformate eine Rolle spielen. Außerdem stelle ich Ihnen einige Beispiel-Parser und ein komplettes Maven-Projekt zur Verfügung, damit Sie schnell mit der Arbeit beginnen können.

Erweiterungsmechanismen

Das Grundprinzip der Unterstützung für weitere Dokumentenformate in Tika ist sehr einfach. Alles, was Sie tun müssen, ist eine Java-Klasse zu schreiben, die die Tika Parser-Schnittstelle implementiert und Tika über Ihre Erweiterung informiert. Wenn Sie einen Parser für eines der >900 Dateiformate implementiert haben, die Tika anhand der Dateinamenerweiterung kennt, oder für eines der ~300 Formate, die Tika anhand der Anzahl der Bytes des Dateiinhalts erkennen kann, ist das alles, was Sie tun müssen.

Es gibt mindestens drei verschiedene Möglichkeiten, Tika über den neuen Parser zu informieren. Die erste Möglichkeit (und die flexibelste) besteht darin, ihn mit Java-Code zu verkabeln. Wenn Sie Tika AutodetectParser verwenden möchten, rufen Sie die Methode setParsers von AutodetectParser mit dem Parser Ihrer Wahl auf. Wenn Sie die Dinge mit Java-Code verkabeln, können Sie auch die Erkennungslogik leicht anpassen, indem Sie einfach die setDetector-Methode aufrufen.

  public static void registerParser(AutoDetectParser autodetectParser,
      Parser parser) {
    for (MediaType type : parser.getSupportedTypes(new ParseContext())) {
      autodetectParser.getParsers().put(type.toString(), parser);
    }
  }

Die nächste Möglichkeit, die Menge der verfügbaren Parser anzupassen, besteht darin, eine externe XML-Datei zu verwenden und ein TikaConfig-Objekt mit dieser Konfigurationsdatei zu erstellen.

Die letzte der drei hier erläuterten Methoden ist die Verwendung des neuen Mechanismus, der in Version 0.7 von Tika hinzugefügt wurde: die standardmäßige Java ServiceProvider API. In der Praxis bedeutet dies, dass Sie als Anbieter einer neuen Parsing-Funktionalität Ihre Parser-Implementierungsklassen in der Datei META-INF/services/org.apache.tika.Parser innerhalb des .jar auflisten müssen, das Sie der Implementierung zur Verfügung stellen.


com.lucid.tika.MyTXTParser
com.lucid.tika.VCardParser

Die Erweiterung der Fähigkeiten von Tika durch die Verwendung der ServiceProvider-API ist sehr unkompliziert und einfach. Es gibt jedoch ein paar Details, die Sie bei der Verwendung dieses Mechanismus beachten sollten.

Wenn Sie eine von Tika bereitgestellte Parser-Implementierung durch Ihre eigene Implementierung ersetzen möchten, müssen Sie sicherstellen, dass Ihre .jar-Datei nach der tika-parsers.jar-Datei geladen wird. Das liegt daran, dass in der aktuellen Implementierung der letzte Parser, der für einen bestimmten Mime-Typ registriert ist, zum Parsen von Inhalten für diesen Mime-Typ verwendet wird.

Um völlig neue Dokumenttypen (von denen Tika nichts weiß) zu unterstützen, müssen Sie den Erkennungsprozess von AutoDetectParser manuell anpassen. Das liegt daran, dass es keinen ähnlichen Mechanismus zur Erweiterung des Erkennungsschritts gibt wie für das Hinzufügen neuer Parser. Eine Möglichkeit, dies zu tun, ist die Verwendung von CompositeDetector, um Ihre „Overlay“-Erkennungen hinzuzufügen und auf den Standard-Detector für die Erkennung der anderen Typen zu vertrauen.

  public static void setOverlayDetector(Detector overlay, AutoDetectParser parser) {
    ArrayList detectors = new ArrayList();
    detectors.add(parser.getDetector());
    detectors.add(overlay);
    parser.setDetector(new CompositeDetector(detectors));
  }

In diesem Blogbeitrag habe ich einige Möglichkeiten aufgezeigt, wie Sie die Parsing- und Erkennungsfunktionen von Tika bei Bedarf in Ihrer eigenen Umgebung erweitern können. Der beste Weg, Tika neue Funktionen hinzuzufügen, besteht darin, dass Sie Ihre neuen Parser-Integrationen und -Erweiterungen in das Tika-Projekt einbringen. Auf diese Weise wird die gesamte Gemeinschaft von den Ergebnissen profitieren.

Ausführen des mitgelieferten Beispiels

  • Projekt herunterladen
  • Projekt kompilieren
    mvn clean install
  • Kopieren Sie die Abhängigkeiten in das Verzeichnis target/dependencies
    mvn dependency:copy-dependencies
  • Führen Sie die Standard-TikaGUI mit unseren Ergänzungen aus („erweiterter“ .txt-Parser, vCard-Parser)

    java -cp target/dependency/tika-app-0.7.jar:target/extending-tika-post-1.0-SNAPSHOT.jar:target/dependency/ical4j-vcard-0.9.2.jar:target/dependency/ical4j-1.0-rc2.jar:target/dependency/commons-codec-1.3.jar:target/dependency/commons-lang-2.4.jar org.apache.tika.gui.TikaGUI

You Might Also Like

Analytics Studio: Verwandeln Sie Ihre E-Commerce-Daten in verwertbare Einblicke

Entdecken Sie, wie Analytics Studio Teams in die Lage versetzt, datengestützte Entscheidungen...

Read More

Wenn KI schief geht: Fehlschläge in der realen Welt und wie man sie vermeidet

Lassen Sie nicht zu, dass Ihr KI-Chatbot einen 50.000 Dollar teuren Tahoe...

Read More

Lucidworks Kernpakete: Branchenoptimierte KI-Such- und Personalisierungslösungen

Entdecken Sie unsere umfassenden Core Packages, die Analytics Studio, Commerce Studio und...

Read More

Quick Links

Diese Site ist auf wpml.org als Entwicklungssite registriert. Wechseln Sie zu einer Produktionssite mit dem Schlüssel remove this banner.