当前位置: 首页 > 知识库问答 >
问题:

如何在python(2.7)中使用Tika包(https://github.com/chrismattmann/tika-python)来解析PDF文件?

堵鸿光
2023-03-14

我正在尝试解析一些包含工程图纸的PDF文件以获取文件中的文本数据。我尝试将TIKA用作python的jar,并将其与jnius包一起使用(在此处使用本教程:http://www.hackzine.org/using-apache-tika-from-python-with-jnius.html),但代码引发错误。

然而,使用TIKA包,我能够传递文件并解析它们,但是Python只能提取元数据,当要求解析内容时,Python返回输出“none”。它能够完美地解析。txt文件,但无法提取pdf的内容。这是代码

import tika
tika.initVM()
from tika import parser
parsed = parser.from_file('/path/to/file')
print parsed["metadata"]
print parsed["content"]

我是否需要其他包/代码行才能提取数据?

共有3个答案

乐正嘉瑞
2023-03-14

我从未尝试过python tikq,但pyjnius对我来说很好。下面是我的代码:

def parse_file(filename):
   """
   Import TIKA classes and parse input filename
   """

   import os
   os.environ['CLASSPATH'] = "/path/to/tika-app.jar"
   from jnius import autoclass
   from jnius import JavaException

   # Import the Java classes 
   Tika = autoclass('org.apache.tika.Tika')
   Metadata = autoclass('org.apache.tika.metadata.Metadata')
   FileInputStream = autoclass('java.io.FileInputStream')

   tika = Tika()
   tika.setMaxStringLength(10*1024*1024);
   meta = Metadata()

   # Raise an exception and continue if parsing fails
   try:
       text = tika.parseToString(FileInputStream(filename), meta)
       return text
   except (JavaException,UnicodeDecodeError), e:
       print "ERROR: %s" % (e)
   return None
闾丘冠玉
2023-03-14

您能分享您正在查看的文件吗?最简单的方法是将其附加到我的存储库中的Github问题等。

也就是说,如果您尝试使用 OCR 和 Tika,则需要通读 Tika OCR 指南(http://wiki.apache.org/tika/TikaOCR)并安装 Tesseract。一旦安装了Tesseract,那么你需要仔细检查你是否有一个正在运行的tika-server实例(例如,ps aux | grep tika)。如果你这样做了,就杀死它(tika-python在后台运行Tika REST服务器作为它与Tika的主界面;在安装Tesseract OCR后有一个全新的运行版本有助于消除任何奇怪的可能性)。

安装了Tesseract OCR之后,在没有tika-server运行的情况下,启动python2.7解释器(或脚本),然后执行如下操作:

from tika import parser
parsed = parser.from_file('/path/to/file')
print parsed["content"] # should be the text returned from OCR

HTH!克里斯

姜彬郁
2023-03-14

您需要下载Tika Server Jar并首先运行它。检查此链接:http://wiki.apache.org/tika/TikaJAXRS

  1. 下载罐
  2. 将其存储在某个地方并作为java -jar tika-server-x.x运行.jar--port xxxx
  3. 在你的代码中,你现在不需要做tika.initVM()添加tika。TikaClientOnly = True 而不是 tika.initVM()
  4. 将解析 = parser.from_file('/路径/到/文件')
  5. 更改为解析 = parser.from_file('/路径/到/文件', '/路径/到/服务器') 您将在步骤 2 中获取服务器路径。 当 Tika 服务器启动时 - 只需将其插入此处

祝你好运

 类似资料:
  • tika-python A Python port of the Apache Tikalibrary that makes Tika available using theTika REST Server. This makes Apache Tika available as a Python library,installable via Setuptools, Pip and Easy I

  • 我想知道是否有任何方法使用Tika/Python只解析第一页或从第一页提取元数据?现在,当我传递pdf时,它正在解析每一个页面。我查看了这个链接:使用Apache Tika可以按页面提取Word/PDF文件的文本吗?但是,这个链接在java中解释得更多,我对java并不熟悉。我希望能有一个python解决方案?谢了!

  • 学习如何在Java编程中使用Tika。 以下是示例 - 如何使用java从PDF中提取内容。 如何使用java从ODF中提取内容。 如何使用java从Excel工作表中提取内容。 如何使用java从文本文档中提取内容。 如何使用java从XML文档中提取内容。 如何使用java从HTML文档中提取内容。 如何使用java从java .class文件中提取内容。

  • 我正在尝试使用tika包来解析文件。Tika已成功安装,使用cmd中的代码运行 我在Jupyter中的代码是: 然而,我收到以下错误: 2018-07-25 10:20:13,325[MainThread][WARNI]无法看到启动日志消息;正在重试...2018-07-25 10:20:18,329[MainThread][WARNI]无法看到启动日志消息;正在重试...2018-07-25 1

  • 没有Docker,脚本可以使用Tika解析pdf文件。 但是,当我尝试使用Docker时…我得到以下错误,因为tika服务器没有运行:通过阅读,我尝试了以下错误-但是错误仍然存在。 能帮点忙吗? 我在最后附加了Dockerfile并列出了正在运行的docker容器- > Docker拉Apache/Tika Docker run-d-p 9998:9998 Apache/Tika cat Dock

  • 本教程提供了对 Apache Tika 库的基本了解,它支持的文件格式,以及使用 Apache Tika 的内容和元数据提取。