将 tika 与 python 一起使用,运行时错误:无法启动 tika 服务器

Posted

技术标签:

【中文标题】将 tika 与 python 一起使用,运行时错误:无法启动 tika 服务器【英文标题】:Use tika with python, runtimeerror: unable to start tika server 【发布时间】:2019-01-01 23:57:42 【问题描述】:

我正在尝试使用 tika 包来解析文件。 Tika安装成功,tika-server-1.18.jar在cmd中运行CodeJava -jar tika-server-1.18.jar

我在 Jupyter 中的代码是:

Import tika 
from tika Import parser
parsed = parser.from_file('')

但是,我收到以下错误:

2018-07-25 10:20:13,325 [MainThread] [WARNI] 未能看到启动 日志消息;重试... 2018-07-25 10:20:18,329 [主线程] [WARNI] 无法查看启动日志消息;重试... 2018-07-25 10:20:23,332 [MainThread] [WARNI] 无法查看启动日志 信息;重试... 2018-07-25 10:20:28,340 [主线程] [错误] 3 次尝试后未收到 Tika 启动日志消息。 2018-07-25 10:20:28,340 [MainThread] [ERROR] 无法接收启动 来自 startServer 的确认。

RuntimeError: 无法启动 Tika Server。

【问题讨论】:

这个问题有什么更新吗?我收到相同的错误消息。 放弃使用TIKA Server,改用TikaApp解决问题。 “tika_client = TikaApp(file_jar = ''(我存储 tika 应用程序的地方)。它有效。不幸的是,对于解析器我还没有找到解决方案。 使用 TikaApp,tika_client.extract_all_content(path_to_file) 返回一个空字符串 这个答案解决了我的问题。 ***.com/a/36628583/5403632 【参考方案1】:

根据Apache Tika's site,所有新版本的 tika-server.jar 都需要 Java 8。

2018 年 4 月 24 日:Apache Tika 发布 Apache Tika 1.18 已经发布!此版本包括错误修复(例如从 PPT 中的分组形状中提取)、安全修复和对依赖项的升级。请注意:下一个版本将需要 Java 8。请参阅 CHANGES.txt 文件以获取版本中的完整更改列表,并查看下载页面以获取有关如何获取 Apache Tika 1.18 的更多信息。

tika Python 库的当前过时文档声称需要 Java 7,但现在必须安装 Java 8。这是因为如果在您的临时文件中找不到当前版本的 tika-server.jar,则会在运行时自动下载。

安装 Java 8 后,我的基本测试代码启动了服务器并正常运行。

【讨论】:

使用 Apachetika 时无需安装 java。 我遇到了同样的问题,我也发布了一个问题,请您查看this question。好像 tika 服务器没有启动,它返回 Not Found 404。【参考方案2】:

导入 Tika 后需要初始化 Java 服务器

import tika
tika.initVM()
from tika import parser
parsed = parser.from_file('') //file name should be here

【讨论】:

我也试过,导入后初始化。它返回 Not Founds 404。请检查this link。【参考方案3】:

下载 Java。如果您已经安装了 Java 版本,请尝试将其更新到最新版本。适合我的版本是 1.18。

【讨论】:

【参考方案4】:

你没有在你的行中传递一个参数(指定一个文件):

parsed = parser.from_file('')

给它一个文件来咀嚼,例如,

parsed = parser.from_file('myfile.txt')

服务器没有启动并且可能触发了这个无日志警告 - 请参阅源代码中的第 644 行 the Github

然后另一个错误消息告诉你它不会播放......

【讨论】:

【参考方案5】:

我遇到了类似的问题。尝试了这里提到的所有步骤,没有任何帮助。 我是如何解决的:

    检查了tika和tika-server的日志文件。 对于 Windows,您可以在 C:/Users/your_user_name/AppData/Local/Temp/ 中找到它 发现 tika-server 日志提到端口已在使用错误。

查看下面的日志 sn-p -

INFO: Setting the server's publish address to be http://localhost:9998/
WARNING: FAILED SelectChannelConnector@localhost:9998: java.net.BindException: Address already in use: bind
java.net.BindException: Address already in use: bind
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Unknown Source)
        at sun.nio.ch.Net.bind(Unknown Source)
        at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
        at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
        at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
        at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
        at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
        at org.eclipse.jetty.server.Server.doStart(Server.java:293)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
        at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.addServant(JettyHTTPServerEngine.java:417)
        at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.activate(JettyHTTPDestination.java:179)
        at org.apache.cxf.transport.AbstractObservable.setMessageObserver(AbstractObservable.java:49)
        at org.apache.cxf.binding.AbstractBindingFactory.addListener(AbstractBindingFactory.java:95)
        at org.apache.cxf.jaxrs.JAXRSBindingFactory.addListener(JAXRSBindingFactory.java:88)
        at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:123)
        at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:206)
        at org.apache.tika.server.TikaServerCli.main(TikaServerCli.java:213)
    这清楚地表明另一个进程已经在同一个端口上运行。所以我只需要杀死在port 9998 上运行的java 进程(我认为它可能已经失效) 在任务管理器中终止进程后,我尝试重新运行 python 脚本,它工作正常。 要进行交叉检查,您还可以运行同一路径中存在的 tika-server.jar 文件 - C:/Users/your_user_name/AppData/Local/Temp/ 使用以下命令并检查它是否失败或运行正确:java -jar tika-server.jar

希望这对将来的某人有所帮助。

【讨论】:

【参考方案6】:

如果您像我一样使用 Ubuntu 20.01(和 18.04),解决方案是安装 Oracle JDK 17。执行以下操作:

sudo add-apt-repository ppa:linuxuprising/java
sudo apt update
sudo apt install oracle-java17-installer

在终端上输入java -version。您应该会看到以下打印输出:

java version "17.0.1" 2021-10-19 LTS`
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)`
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)

tika 应该能够从python 中的 pdf 中提取文本。

parser.from_file(<your pdf file>)

【讨论】:

以上是关于将 tika 与 python 一起使用,运行时错误:无法启动 tika 服务器的主要内容,如果未能解决你的问题,请参考以下文章

空解析器 tika python

tika怎么玩

Python - Apache Tika 单页解析器

Python Tika 无法从 url 解析 pdf

tika的使用

Apache Tika 的进度报告?