在 Tika 的网站上,它说(关于 tika-app-1.2.jar)它可以在服务器模式下使用。有谁知道如何在该服务器运行后发送文档和接收解析的文本?
3 回答
Tika 支持两种“服务器”模式。更简单和原始的是--server
Tika-App的旗帜。JAX-RS JSR-311 server component功能更强大,但也是更新的,它是一个附加的 jar。
Tika-App 网络服务器使用起来非常简单。只需使用标志启动 Tika-App --server
,并使用--port ###
标志告诉它要监听的端口。然后,连接到该端口并发送一个文件。您将获得 html 版本。java -jar tika-app.jar --server --port 12345
NetCat很好地解决了这个问题,类似的东西nc 127.0.0.1 12345 < MyFileToExtract
会让你回到 html
JAX-RS JSR-311 服务器组件支持几个不同的 url,用于元数据、纯文本等。您使用 启动服务器,java -jar tika-server.jar
然后使用输入文档对适当的 url 进行 HTTP 调用,您将获得资源背部。wiki 页面上有大量详细信息和示例(包括使用 curl 进行测试)
Tika App Network Server 相当简单,仅支持一种模式(提取到 HTML),通常用于测试/演示/原型制作等。Tika JAXRS Server是一个完全 RESTful 服务,它与 HTTP 通信,并且暴露范围很广蒂卡的模式。如今,这是通过网络和/或非 Java 堆栈与 Tika 交互的普遍推荐方式。
只是添加到@Gagravarr 的好答案。
在服务器模式下谈论 Tika 时,区分两个版本很重要,否则会引起混淆:
- tika-app.jar 有 --server --port 9998 选项来启动一个简单的服务器
- tika-server.jar 是使用 JAX-RS 的单独组件
第一个选项仅提供文本提取并将内容作为 HTML 返回。最有可能的是,您真正想要的是第二个选项,它是一个 RESTful 服务,它公开了 Tika 的更多功能。
您可以简单地从 Tika 项目站点下载 tika-server.jar 。使用启动服务器
java -jar tika-server-x.x.jar -h 0.0.0.0
-h 0.0.0.0 (host) 选项使服务器监听任何传入的请求,否则它只会监听来自本地主机的请求。也可以加上 -p 选项来更改端口,否则默认为 9998。
然后,一旦服务器启动,您就可以使用浏览器轻松访问它。它将列出所有可用的端点。
最后,要从文件中提取元数据,您可以像这样使用 cURL:
curl -T testWORD.doc http://example.com:9998/meta
将元数据作为键/值对返回,每行一个。您还可以通过添加正确的接受标头让 Tika 以 JSON 格式返回结果:
curl -H "Accept: application/json" -T testWORD.doc http://example.com:9998/meta
[2015-01-19 更新] 之前的评论说 tika-server.jar 无法下载。修复了这个问题,因为它确实以二进制下载的形式存在。
增强 Gagravarr 完美答案:
- 如果您的文档来自 WEB 服务器 => curl -u "http:// myserver-domain /*path-to-doc*/ doc-name.extension " | 数控 127.0.0.1 12345
- 如果文档有密码保护就更好了 => curl -u login :*password* "http:// myserver-domain /*path-to-doc*/ doc-name.extension " | 数控 127.0.0.1 12345