php apache tika

2025-12-07 0 195

php apache tika

该工具为PHP提供了Apache Tika绑定,可以从文档,图像和其他格式中提取文本和元数据。

支持以下模式

  • 应用模式:通过命令行接口运行应用程序JAR
  • 服务器模式:向JSR 311网络服务器提出HTTP请求

建议使用服务器模式,因为要快5倍,但是有些共享主机不允许在后台运行过程。

尽管该库包含支持版本的列表,但只要Tika Team维护向后兼容,Apache Tika的任何版本都应兼容。因此,不必等待库的更新与该工具的新版本一起使用。

特征

  • 简单的类接口到Apache Tika功能:
    • 文本和HTML提取
    • 元数据提取
    • OCR识别
  • 标准的元数据文件
  • 支持本地和远程资源
  • 没有重量级图书馆依赖性
  • 与Apache Tika 1.15或更高
    • 测试高达1.28.5、2.9.3和3.1.0
  • 在Linux,MacOS,Windows以及FreeBSD上工作

要求

  • PHP 7.3或更高
    • 多键字符串支持
    • 卷曲扩展
  • Apache Tika 1.15或更高
  • Oracle Java或OpenJDK
    • tika 1.19或更高的Java 8
    • tika的Java 7从1.15到1.18
  • Tesseract(OCR识别可选)

注意:受支持的PHP版本将与PHP团队的最新支持保持同步

安装

使用作曲家安装:

composer require vaites/php-apache-tika

如果要使用OCR,则必须安装Tesseract:

  • fedora/centossudo yum install tesseract (在22或更高的Fedora上使用DNF代替YUM)
  • debian/ubuntusudo apt-get install tesseract-ocr
  • MacOSbrew install tesseract (使用自制)
  • Windowsscoop 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://l*o*c*alhost:9998 \' );
$ client = \\ Vaites \\ ApacheTika \\Client:: prepare ( \' http://l*o*c*alhost: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 ();

Web客户端

设置/获取主机属性

 $ 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版本有一些破坏的变化:

  • 不支持1.15之前的Apache tika版本(使用0.x版本1.14及以上)
  • php最低要求为7.3或更高(使用0.x版本7.1及以上)
  • $client->getRecursiveMetadata()按预期返回数组
  • Client::getSupportedVersions()Client::isVersionSupported()方法无法静态调用
  • Client::getAvailableDetectors()Client::getAvailableParsers()返回的值是相同的,并且具有新的定义

有关更多详细信息,请参见ChangElog.md。

故障排除

空的响应或意外结果

该库只是代理人,因此,如果您得到灰度响应或意外结果,最常见的原因是tika本身。一个简单的测试是使用GUI检查响应:

  1. 在没有参数的情况下运行tika应用程序: java -jar tika-app-x.xx.jar
  2. 放下文件或使用文件 – >打开
  3. 等到元数据出现
  4. 使用视图菜单获取文本或HTML

如果结果相同,则必须查看Tika的Jira并在必要时打开问题。

编码

默认情况下,返回的文本是用UTF-8编码的, Client::setEncoding()方法允许设置预期的编码。

测试

测试旨在涵盖App模式和服务器模式下Apache Tika的所有受支持版本的所有功能。有一些样本可以测试:

  • 样本1 :文档元数据和文本提取
  • 样本2 :图像元数据
  • 样本3 :文本识别
  • 样本4 :不支持的媒体
  • 示例5 :回调的巨大文字
  • 示例6 :远程通话
  • 示例7 :文本编码
  • 样本8 :递归元数据

已知问题

在测试过程中发现了一些问题,与此库无关:

  • apache tika 1.17及较低无法从tika-2509中所述从OCR提取文本
  • Tesseract减慢文档解析,如Tika-2359中所述

集成

  • Symfony2捆绑包

下载源码

通过命令行克隆项目:

git clone https://github.com/vaites/php-apache-tika.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 php apache tika https://www.zuozi.net/31779.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务