このツールは、PHP用のApache Tika Bindingsを提供し、ドキュメント、画像、その他の形式からテキストとメタデータを抽出できます。
次のモードがサポートされています。
サーバーモードは5倍高速であるため推奨されますが、一部の共有ホストはバックグラウンドで実行プロセスを許可していません。
ライブラリにはサポートされているバージョンのリストが含まれていますが、Tikaチームが後方互換性が維持されている限り、Apache Tikaの任意のバージョンは互換性がなければなりません。したがって、図書館の更新がツールの新しいバージョンで動作するのを待つ必要はありません。
注:サポートされているPHPバージョンは、PHPチームがサポートする最新のサポートと同期したままです
Composerを使用してインストールします:
composer require vaites/php-apache-tikaOCRを使用する場合は、Tesseractをインストールする必要があります。
sudo yum install tesseract (Fedora 22以上でYumの代わりにDNFを使用)sudo apt-get install tesseract-ocrbrew install tesseract (homebrewを使用)scoop install tesseract (スクープを使用)ライブラリは、 tesseractバイナリがパスにあると想定しているため、自分でコンパイルしたり、他の方法を使用してインストールしたりできます。
Apache Tika Serverを慎重に開始:
java -jar tika-server-x.xx.jarJDKの代わりにJREを使用している場合は、Java 9以下がある場合は実行する必要があります。
java --add-modules java.se.ee -jar tika-server-x.xx.jarクラスをインスタンス化し、JARが存在するか、サーバーが実行されているかを確認します。
$ client = Vaites ApacheTika Client:: make ( ' localhost ' , 9998 ); // server mode (default)
$ client = Vaites ApacheTika Client:: make ( ' /path/to/tika-app.jar ' ); // app mode 依存関係の注入を使用する場合は、クラスをシリアル化するか、チェックを遅らせるだけです。
$ client = Vaites ApacheTika Client:: prepare ( ' localhost ' , 9998 );
$ client = Vaites ApacheTika Client:: prepare ( ' /path/to/tika-app.jar ' ); URLも使用できます。
$ client = Vaites ApacheTika Client:: make ( ' http://localhost:9998 ' );
$ client = Vaites ApacheTika Client:: prepare ( ' http://localhost:9998 ' );クラスを使用して、ドキュメントからテキストを抽出します。
$ 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 ' );または画像からテキストを抽出するために使用します。
$ client = Vaites ApacheTika Client:: make ( $ host , $ port );
$ metadata = $ client -> getMetadata ( ' /path/to/your/image ' );
$ text = $ client -> getText ( ' /path/to/your/image ' );ファイルパスの代わりにURLを使用でき、ライブラリはファイルをダウンロードしてApache Tikaに渡します。ここで説明するように、サーバーを起動するときにコマンドラインに-enableUnsecureFeatures -enableFileUrl追加する必要はありません。
Apache Tika> = 2.0.0を使用する場合、httpfetcherを定義し、サーバーを起動するときにオプション-enableUnsecureFeatures -enableFileUrlを使用して、ファイルの代わりにURLを渡すときにサーバーをダウンロードするサーバーをダウンロードするように使用できます。そのためには、 $client->setFetcherName('yourFetcherName')を使用してHTTPFetcherの名前を設定する必要があります。
利用可能な方法の完全なリストは次のとおりです
Tikaファイル関連の方法:
$ 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 );その他のティカ関連の方法:
$ client -> getSupportedMIMETypes ();
$ client -> getIsMIMETypeSupported ( ' application/pdf ' );
$ client -> getAvailableDetectors ();
$ client -> getAvailableParsers ();
$ client -> getVersion ();エンコーディング方法:
$ client -> getEncoding ();
$ client -> setEncoding ( ' UTF-8 ' );サポートされているバージョン関連方法:
$ client -> getSupportedVersions ();
$ client -> isVersionSupported ( $ version );応答の連続読み取りのためにコールバックを設定/取得します。
$ client -> setCallback ( $ callback );
$ client -> getCallback ();セキュリティの読み取りのためにチャンクサイズを設定/取得します:
$ client -> setChunkSize ( $ size );
$ client -> getChunkSize ();内部リモートファイルのダウンロード者を有効/無効にします:
$ client -> setDownloadRemote ( true );
$ client -> getDownloadRemote ();フェッチャー名を設定します:
$ client -> setFetcherName ( $ fetcher ); // one of FileSystemFetcher, HttpFetcher, S3Fetcher, GCSFetcher, or SolrFetcher
$ client -> getFetcherName ();JAR/Javaパスを設定/取得します(CLIモードのみ):
$ client -> setPath ( $ path );
$ client -> getPath ();
$ client -> setJava ( $ java );
$ client -> getJava ();
$ client -> setJavaArgs ( ' -JXmx4g ' );
$ client -> getJavaArgs ();
$ client -> setEnvVars ([ ' LANG ' => ' es_ES.UTF-8 ' ]);
$ client -> getEnvVars ();ホストプロパティを設定/取得します
$ client -> setHost ( $ host );
$ client -> getHost ();
$ client -> setPort ( $ port );
$ client -> getPort ();
$ client -> setUrl ( $ url );
$ client -> getUrl ();
$ client -> setRetries ( $ retries );
$ client -> getRetries ();CURLクライアントオプションを設定/取得します
$ client -> setOptions ( $ options );
$ client -> getOptions ();
$ client -> setOption ( $ option , $ value );
$ client -> getOption ( $ option );タイムアウトの設定/取得:
$ client -> setTimeout ( $ seconds );
$ client -> getTimeout ();HTTPヘッダーを設定/取得します(Tikaserverを参照):
$ client -> setHeader ( ' Foo ' , ' bar ' );
$ client -> getHeader ( ' Foo ' );
$ client -> setHeaders ([ ' Foo ' => ' bar ' , ' Bar ' => ' baz ' ]);
$ client -> getHeaders ();OCR言語を設定/取得します(Tikaocorを参照):
$ client -> setOCRLanguage ( $ language );
$ client -> setOCRLanguages ( $ languages );
$ client -> getOCRLanguages ();httpフェッチャー名を設定します(tika> = 2.0.0のみ、https://cwiki.apache.org/confluence/display/tika/tika-pipesを参照してください)
$ client -> setFetcherName ( $ fetcherName )1.0バージョン以来、いくつかの壊れた変更があります:
$client->getRecursiveMetadata()予想どおり配列を返しますClient::getSupportedVersions()およびClient::isVersionSupported()メソッドは静的に呼び出すことはできませんClient::getAvailableDetectors()およびClient::getAvailableParsers()によって返される値は同一であり、新しい定義があります詳細については、changelog.mdを参照してください。
このライブラリはプロキシのみであるため、Empy応答または予期しない結果が得られた場合、最も一般的な原因はTika自体です。簡単なテストでは、GUIを使用して応答を確認しています。
java -jar tika-app-x.xx.jar結果が同じ場合は、ティカのジラを調べて、必要に応じて問題を開く必要があります。
デフォルトでは、返されたテキストはUTF-8でエンコードされ、 Client::setEncoding()メソッドでは、予想されるエンコードを設定できます。
テストは、アプリモードとサーバーモードでサポートされているすべてのバージョンのApache Tikaのすべての機能をカバーするように設計されています。テストするサンプルがいくつかあります:
このライブラリとは関係のないテスト中にいくつかの問題があります。