该工具为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的所有受支持版本的所有功能。有一些样本可以测试:
在测试过程中发现了一些问题,与此库无关: