我正在尝试使用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行
然后另一个错误消息告诉你它不会播放。。。
我遇到了类似的问题。尝试了这里提到的所有步骤,都无济于事。我是如何解决的:
- 检查了tika和tika服务器的日志文件。对于windows,您可以在
C:/Users/your_user_name/AppData/Local/Temp/
中找到它 - 发现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)
- 这清楚地表明另一个进程已经在同一端口中运行。所以我只需要杀死运行在
port 9998
上的java进程(我认为它可能已经失效( - 一旦我在任务管理器中杀死了这个进程,我就尝试重新运行python脚本,它运行正常
- 要进行交叉检查,您还可以使用以下命令运行同一路径中的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>)
我得到了相同的错误,并使用以下步骤解决:
-
检查我的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接收启动确认。
-
怀疑没有安装Java。因此,请检查是否使用安装Java
java-版本
-
如果未安装,您可以在此处下载:https://www.java.com/en/download/.
-
如果仍然有错误,请尝试手动启动Tika服务器,使用:
java-jar tika server.jar
- 记住在jar文件所在的位置运行它。现在它应该起作用了