Dieses Tool bietet Apache -Tika -Bindungen für PHP und ermöglicht es, Text und Metadaten aus Dokumenten, Bildern und anderen Formaten zu extrahieren.
Die folgenden Modi werden unterstützt:
Der Servermodus wird empfohlen, da es 5 -mal schneller ist, aber einige gemeinsam genutzte Hosts zulassen keine Ausführungsverfahren im Hintergrund.
Obwohl die Bibliothek eine Liste unterstützter Versionen enthält, sollte jede Version von Apache Tika kompatibel sein, solange die Abwärtskompatibilität vom Tika -Team aufrechterhalten wird. Daher ist es nicht erforderlich, auf ein Update der Bibliothek zu warten, um mit den neuen Versionen des Tools zu arbeiten.
Hinweis : Die unterstützte PHP -Version bleibt mit dem neuesten vom PHP -Team unterstützten unterstützt
Installieren Sie mit Composer:
composer require vaites/php-apache-tikaWenn Sie OCR verwenden möchten, müssen Sie Tesseract installieren:
sudo yum install tesseract (Verwenden Sie DNF anstelle von yum auf Fedora 22 oder mehr)sudo apt-get install tesseract-ocrbrew install tesseract (mit Homebrew)scoop install tesseract (mit Scoop) Die Bibliothek geht davon aus, dass tesseract Binary im Pfad ist, sodass Sie sie selbst kompilieren oder mit einer anderen Methode installieren können.
Starten Sie den Apache Tika Server mit Vorsicht:
java -jar tika-server-x.xx.jarWenn Sie JRE anstelle von JDK verwenden, müssen Sie ausführen, wenn Sie Java 9 oder mehr haben:
java --add-modules java.se.ee -jar tika-server-x.xx.jarInstantieren Sie die Klasse und überprüfen Sie, ob ein JAR existiert oder der Server ausgeführt wird:
$ client = Vaites ApacheTika Client:: make ( ' localhost ' , 9998 ); // server mode (default)
$ client = Vaites ApacheTika Client:: make ( ' /path/to/tika-app.jar ' ); // app mode Wenn Sie die Abhängigkeitsinjektion verwenden möchten, serialisieren Sie die Klasse oder verzögern Sie einfach die Überprüfung:
$ client = Vaites ApacheTika Client:: prepare ( ' localhost ' , 9998 );
$ client = Vaites ApacheTika Client:: prepare ( ' /path/to/tika-app.jar ' ); Sie können auch eine URL verwenden:
$ client = Vaites ApacheTika Client:: make ( ' http://localhost:9998 ' );
$ client = Vaites ApacheTika Client:: prepare ( ' http://localhost:9998 ' );Verwenden Sie die Klasse, um Text aus Dokumenten zu extrahieren:
$ language = $ client -> getLanguage ( ' /path/to/your/document ' );
$ metadata = $ client -> getMetadata ( ' /path/to/your/document ' );
$ html = $ client -> getHTML ( ' /path/to/your/document ' );
$ text = $ client -> getText ( ' /path/to/your/document ' );Oder verwenden Sie Text aus den Bildern:
$ client = Vaites ApacheTika Client:: make ( $ host , $ port );
$ metadata = $ client -> getMetadata ( ' /path/to/your/image ' );
$ text = $ client -> getText ( ' /path/to/your/image ' ); Sie können eine URL anstelle eines Dateipfads verwenden, und die Bibliothek lädt die Datei herunter und übergibt sie an Apache Tika. Es ist nicht erforderlich , -enableUnsecureFeatures -enableFileUrl Befehlszeile bei der Startung des Servers wie hier beschrieben hinzuzufügen.
Wenn Sie Apache TIKA> = 2.0.0 verwenden, können Sie einen httpfetcher definieren und die Option -enableUnsecureFeatures -enableFileUrl verwenden, wenn Sie den Server starten, um den Server bei der Übergabe einer URL anstelle eines Dateinamens Remote -Dateien herunterzuladen. Dazu müssen Sie den Namen des Httpfetcher mit $client->setFetcherName('yourFetcherName') festlegen.
Hier finden Sie die vollständige Liste der verfügbaren Methoden
Methoden mit Tika -Dateien:
$ client -> getMetadata ( $ file );
$ client -> getRecursiveMetadata ( $ file , ' text ' );
$ client -> getLanguage ( $ file );
$ client -> getMIME ( $ file );
$ client -> getHTML ( $ file );
$ client -> getXHTML ( $ file ); // only CLI mode
$ client -> getText ( $ file );
$ client -> getMainText ( $ file );Andere mit Tika bezogene Methoden:
$ client -> getSupportedMIMETypes ();
$ client -> getIsMIMETypeSupported ( ' application/pdf ' );
$ client -> getAvailableDetectors ();
$ client -> getAvailableParsers ();
$ client -> getVersion ();Codierungsmethoden:
$ client -> getEncoding ();
$ client -> setEncoding ( ' UTF-8 ' );Unterstützte Versionen verwandte Methoden:
$ client -> getSupportedVersions ();
$ client -> isVersionSupported ( $ version );Setzen/abrufen einen Rückruf für die sequentielle Reaktion: Antwort:
$ client -> setCallback ( $ callback );
$ client -> getCallback ();Setzen/Holen Sie sich die Chunk -Größe für Secueal Lesen:
$ client -> setChunkSize ( $ size );
$ client -> getChunkSize ();Aktivieren/deaktivieren Sie den Downloader für den internen Remotedatei:
$ client -> setDownloadRemote ( true );
$ client -> getDownloadRemote ();Setzen Sie den Fether -Namen:
$ client -> setFetcherName ( $ fetcher ); // one of FileSystemFetcher, HttpFetcher, S3Fetcher, GCSFetcher, or SolrFetcher
$ client -> getFetcherName ();Setzen/Get Jar/Java -Pfade (nur CLI -Modus):
$ client -> setPath ( $ path );
$ client -> getPath ();
$ client -> setJava ( $ java );
$ client -> getJava ();
$ client -> setJavaArgs ( ' -JXmx4g ' );
$ client -> getJavaArgs ();
$ client -> setEnvVars ([ ' LANG ' => ' es_ES.UTF-8 ' ]);
$ client -> getEnvVars ();Hosteigenschaften einstellen/abrufen
$ client -> setHost ( $ host );
$ client -> getHost ();
$ client -> setPort ( $ port );
$ client -> getPort ();
$ client -> setUrl ( $ url );
$ client -> getUrl ();
$ client -> setRetries ( $ retries );
$ client -> getRetries ();Setzen/Get Curl -Client -Optionen
$ client -> setOptions ( $ options );
$ client -> getOptions ();
$ client -> setOption ( $ option , $ value );
$ client -> getOption ( $ option );Timeout einstellen/abrufen:
$ client -> setTimeout ( $ seconds );
$ client -> getTimeout ();HTTP -Header einstellen/abrufen (siehe Tikaserver):
$ client -> setHeader ( ' Foo ' , ' bar ' );
$ client -> getHeader ( ' Foo ' );
$ client -> setHeaders ([ ' Foo ' => ' bar ' , ' Bar ' => ' baz ' ]);
$ client -> getHeaders ();Set/Get OCR -Sprachen (siehe Tikaoc):
$ client -> setOCRLanguage ( $ language );
$ client -> setOCRLanguages ( $ languages );
$ client -> getOCRLanguages ();Setzen Sie den Namen des HTTP-Fethers (nur für Tika> = 2.0.0 siehe https://cwiki.apache.org/confluence/display/tika/tika-pipes)
$ client -> setFetcherName ( $ fetcherName )Seit 1.0 -Version gibt es einige Bruchänderungen:
$client->getRecursiveMetadata() gibt wie erwartet ein Array zurückClient::getSupportedVersions() und Client::isVersionSupported() -Methoden können nicht statisch aufgerufen werdenClient::getAvailableDetectors() und Client::getAvailableParsers() sind identisch und haben eine neue DefinitionWeitere Informationen finden Sie unter changelog.md.
Diese Bibliothek ist nur ein Proxy , wenn Sie eine Empy -Antworten oder unerwartete Ergebnisse erhalten. Die häufigste Ursache ist Tika selbst. Ein einfacher Test verwendet die GUI, um die Antwort zu überprüfen:
java -jar tika-app-x.xx.jarWenn die Ergebnisse gleich sind, müssen Sie einen Blick auf die Jira von Tika werfen und gegebenenfalls ein Problem eröffnen.
Standardmäßig ist der zurückgegebene Text mit UTF-8 codiert, und die Methode Client::setEncoding() ermöglicht das Festlegen der erwarteten Codierung.
Tests sind so konzipiert, dass alle Funktionen für alle unterstützten Versionen von Apache Tika im App -Modus und im Servermodus abgeholt werden . Es gibt einige Proben, gegen die man testen kann:
Es gibt einige Probleme bei den Tests, die nicht mit dieser Bibliothek verbunden sind: