首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python2.7中使用Tika package(https://github.com/chrismattmann/tika-python)来解析PDF文件?

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

Stack Overflow用户
提问于 2015-10-12 13:39:22
回答 5查看 18.5K关注 0票数 3

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

使用TIKA包,我可以传递文件并解析它们,但Python只能提取元数据,当被要求解析内容时,Python返回输出"none“。它能够完美地解析.txt文件,但无法提取PDF的内容。下面是代码

代码语言:javascript
运行
复制
import tika
tika.initVM()
from tika import parser
parsed = parser.from_file('/path/to/file')
print parsed["metadata"]
print parsed["content"]

我是否需要额外的包/代码行才能提取数据?

EN

回答 5

Stack Overflow用户

发布于 2016-04-15 00:16:07

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

  1. 下载Jar
  2. 将其存储在某个地方,并将其作为代码运行您现在不需要执行tika.initVM()添加tika.TikaClientOnly = True而不是将tika.initVM()
  3. Change parsed = parser.from_file('/path/to/file')添加到parsed = parser.from_file('/path/to/file', '/path/to/server'),您将在步骤2中获得服务器路径。当tika服务器启动时-只需将其插入此处

<代码>G216

祝好运!

票数 20
EN

Stack Overflow用户

发布于 2015-10-13 08:11:51

你能分享一下你正在看的文件吗?最简单的方法可能是将它附加到我的存储库中的Github问题上,等等。

也就是说,如果您正在尝试使用OCR和Tika,您需要运行Tika OCR指南(http://wiki.apache.org/tika/TikaOCR)并安装Tesseract。一旦安装了Tesseract,您就需要仔细检查是否有tika-server实例在运行(例如,ps | grep tika)。如果您这样做了,请终止它( Tika -python在后台运行Tika REST服务器作为其到Tika的主接口;在安装Tesseract OCR之后拥有一个新的运行版本有助于消除任何奇怪的可能性)。

安装了Tesseract OCR后,不运行tika-server,启动python2.7解释器(或脚本),然后执行以下操作:

代码语言:javascript
运行
复制
from tika import parser
parsed = parser.from_file('/path/to/file')
print parsed["content"] # should be the text returned from OCR

哈哈!--克里斯

票数 6
EN

Stack Overflow用户

发布于 2016-01-26 17:37:07

我从来没有尝试过python tikq,但是pyjnius对我来说工作得很好。下面是我的代码:

代码语言:javascript
运行
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33073972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档