【问题标题】:python how to use tika with existing jar file without downloading againpython如何将tika与现有的jar文件一起使用而无需再次下载
【发布时间】:2019-10-26 19:54:03
【问题描述】:

我正在使用 Tika,我意识到每次下载 jar 文件并将其放置在 Temp 文件夹中

Retrieving http://search.maven.org/remotecontent?filepath=org/apache/tika/tika-server/1.19/tika-server-1.19.jar to C:\Users\asus\AppData\Local\Temp\tika-server.jar.
Retrieving http://search.maven.org/remotecontent?filepath=org/apache/tika/tika-server/1.19/tika-server-1.19.jar.md5 to C:\Users\asus\AppData\Local\Temp\tika-server.jar.md5.

问题是jar文件大小在60MB左右,下载需要一些时间。

这是我正在使用的代码:

from tika import parser

def get_pdf_text(path):
    parsed = parser.from_file(path):
    return parsed['content']

我发现的唯一解决方法是:

1 - 使用java -jar tika-server-x.x.jar --port xxxx手动运行jar

2 - 使用tika.TikaClientOnly = True

3 - 将 parser.from_file(path) 替换为 parser.from_file(path, '/path/to/server')

但我不想手动运行 jar 文件。如果我可以使用 Python 自动运行 jar 文件并使用它设置 tika 而无需重新下载,那就更好了。

【问题讨论】:

    标签: python apache-tika


    【解决方案1】:

    要解决此问题,您应该将环境变量添加到 tika 服务器 jar 并指定包含 tika jar 文件的路径文件夹。

    TIKA_SERVER_JAR = 'PATH_OF_FOLDER_CONTAINING_TIKA_SERVER_JAR'。

    【讨论】:

      【解决方案2】:

      如果你不想添加环境变量,你可以改变tika寻找tika-server.jar文件的目录,代码如下。

      from tika import tika
      tika.TikaJarPath = r'TIKA_SERVER_PATH'
      

      在 TIKA_SERVER_PATH 中,jar 文件名应为 tika-server.jar(名称不应包含版本),并且 .md5 文件必须存在。如果 .md5 文件不是 tika-server.jar 的正确版本,则此方法不起作用,tika 将删除您的文件并下载默认版本。

      【讨论】:

        【解决方案3】:

        在尝试了几乎所有方法并调试了 tika.py 库代码后,我发现您必须设置这两个变量才能使这个 hack 起作用。

        TIKA_SERVER_JAR="/path_to_tika_server/tika-server.jar"
        TIKA_SERVER_JAR="/path_to_tika_server"
        

        您还需要提供 .md5 签名文件,因为由于未提供 Tika 1.18 版 .md5 文件(而是提供了 sha512 签名,请参阅https://archive.apache.org/dist/tika/)。所以你需要欺骗库来接受你下载的文件。

        或者有人可以修补 python 库:)

        【讨论】:

          【解决方案4】:

          我想知道如何获取 tika-server.jar 的 .md5 文件,因为没有提供 .md5 文件,而是提供了 sha512 签名

          【讨论】:

          【解决方案5】:

          这就是这里的工作:

          os.environ['TIKA_SERVER_JAR'] = "<path_to_jar_and_md5>/tika-server.jar"
          os.environ['TIKA_PATH'] = "<path_to_jar_and_md5_again>"
          

          这些是在库导入时读取的,因此请在之后导入解析器,如果您更改它们,请重新导入。

          【讨论】:

            猜你喜欢
            • 2019-12-09
            • 2014-09-10
            • 1970-01-01
            • 1970-01-01
            • 2015-08-06
            • 1970-01-01
            • 2019-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多