該工具為PHP提供了Apache Tika綁定,可以從文檔,圖像和其他格式中提取文本和元數據。
支持以下模式:
建議使用服務器模式,因為要快5倍,但是有些共享主機不允許在後台運行過程。
儘管該庫包含支持版本的列表,但只要Tika Team維護向後兼容,Apache Tika的任何版本都應兼容。因此,不必等待庫的更新與該工具的新版本一起使用。
注意:受支持的PHP版本將與PHP團隊的最新支持保持同步
使用作曲家安裝:
composer require vaites/php-apache-tika如果要使用OCR,則必須安裝Tesseract:
sudo yum install tesseract (在22或更高的Fedora上使用DNF代替YUM)sudo apt-get install tesseract-ocrbrew install tesseract (使用自製)scoop install tesseract (使用scoop)該庫假設tesseract二進制屬於路徑,因此您可以自己對其進行編譯或使用任何其他方法安裝。
謹慎啟動Apache Tika服務器:
java -jar tika-server-x.xx.jar如果您使用的是JRE而不是JDK,則必須在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 );其他與Tika相關的方法:
$ 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 ();設置/獲取Secutient的塊大小:
$ client -> setChunkSize ( $ size );
$ client -> getChunkSize ();啟用/禁用內部遠程文件下載器:
$ client -> setDownloadRemote ( true );
$ client -> getDownloadRemote ();設置Fetcher名稱:
$ 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 ();設置/獲取捲曲客戶端選項
$ 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語言(請參閱Tikaocr):
$ client -> setOCRLanguage ( $ language );
$ client -> setOCRLanguages ( $ languages );
$ client -> getOCRLanguages ();設置http fetcher名稱(對於tika> = 2.0.0,請參見https://cwiki.apache.org/confluence/display/tika/tika/tika-pipes)
$ client -> setFetcherName ( $ fetcherName )由於1.0版本有一些破壞的變化:
$client->getRecursiveMetadata()按預期返回數組Client::getSupportedVersions()和Client::isVersionSupported()方法無法靜態調用Client::getAvailableDetectors()和Client::getAvailableParsers()返回的值是相同的,並且具有新的定義有關更多詳細信息,請參見ChangElog.md。
該庫只是代理人,因此,如果您得到灰度響應或意外結果,最常見的原因是tika本身。一個簡單的測試是使用GUI檢查響應:
java -jar tika-app-x.xx.jar如果結果相同,則必須查看Tika的Jira並在必要時打開問題。
默認情況下,返回的文本是用UTF-8編碼的, Client::setEncoding()方法允許設置預期的編碼。
測試旨在涵蓋App模式和服務器模式下Apache Tika的所有受支持版本的所有功能。有一些樣本可以測試:
在測試過程中發現了一些問題,與此庫無關: