将 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 服务器的主要内容,如果未能解决你的问题,请参考以下文章