我正在尝试解析几个包含工程图的PDF文件,以获取这些文件中的文本数据。我尝试将TIKA作为jar与python一起使用,并将其与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"]
我是否需要额外的包/代码行才能提取数据?
发布于 2016-04-15 00:16:07
您需要先下载Tika Server Jar并运行它。请查看此链接:http://wiki.apache.org/tika/TikaJAXRS
tika.initVM()
添加tika.TikaClientOnly = True
而不是将tika.initVM()
parsed = parser.from_file('/path/to/file')
添加到parsed = parser.from_file('/path/to/file', '/path/to/server')
,您将在步骤2中获得服务器路径。当tika服务器启动时-只需将其插入此处<代码>G216
祝好运!
发布于 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解释器(或脚本),然后执行以下操作:
from tika import parser
parsed = parser.from_file('/path/to/file')
print parsed["content"] # should be the text returned from OCR
哈哈!--克里斯
发布于 2016-01-26 17:37:07
我从来没有尝试过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
https://stackoverflow.com/questions/33073972
复制相似问题