将tika与python一起使用,runtimeerror:无法启动tika服务器



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

我在Jupyter的代码是:

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

然而,我收到以下错误:

2018-07-25 10:20:13325[MainThread][WARNI]无法看到启动日志消息;正在重试。。。2018-07-25 10:20:18329〔主线〕[WARNI]未能看到启动日志消息;正在重试。。。2018年07月25日10:20:23332[MainThread][WARNI]查看启动日志失败消息正在重试。。。2018-07-25 10:20:28340〔主线程〕〔错误〕3次尝试后未收到Tika启动日志消息。2018年07月25日10:20:28340[MainThread][ERROR]无法接收启动来自startServer的确认。

RuntimeError:无法启动Tika服务器。

根据Apache Tika的网站,所有新版本的Tika-server.jar都需要Java 8。

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

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

在安装Java 8之后,我的基本测试代码启动了服务器,并且工作正常。

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

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

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

您的行中没有传递参数(指定了一个文件(:

parser.from_file(''(

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

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

服务器没有启动&据推测,这个无日志警告被触发了-请参阅Github 源代码中的第644行

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

我遇到了类似的问题。尝试了这里提到的所有步骤,都无济于事。我是如何解决的:

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

检查下面的日志片段-

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)
  1. 这清楚地表明另一个进程已经在同一端口中运行。所以我只需要杀死运行在port 9998上的java进程(我认为它可能已经失效(
  2. 一旦我在任务管理器中杀死了这个进程,我就尝试重新运行python脚本,它运行正常
  3. 要进行交叉检查,您还可以使用以下命令运行同一路径中的tika-server.jar文件-C:/Users/your_user_name/AppData/Local/Temp/,并检查它是否失败或运行正确:java -jar tika-server.jar

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

如果你像我一样使用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>)

我得到了相同的错误,并使用以下步骤解决:

  1. 检查我的tika服务器日志文件(通常位于C:\Users/your_user_name/AppData/Local/Temp/(

    2023-04-02 08:06:47277[Thread-1(pr][ERROR]无法运行java;是否已安装?2023-04-02 08:06:47278[Thread-1(pr][ERROR]无法从startServer接收启动确认。

  2. 怀疑没有安装Java。因此,请检查是否使用安装Java

    java-版本

  3. 如果未安装,您可以在此处下载:https://www.java.com/en/download/.

  4. 如果仍然有错误,请尝试手动启动Tika服务器,使用:

    java-jar tika server.jar

  • 记住在jar文件所在的位置运行它。现在它应该起作用了

最新更新