为什么Tika 2.1 app会忽略.txt文件中的文本?



我正在使用Ubuntu 20.04下的命令行使用Tika 2.1处理一个文件,使用以下命令:

java -jar tika-app-2.1.0.jar -t test.txt

该文件是一个纯文本ANSI文件(所有字符都是0x0到0x7f)。尽管这很难让人相信,Tika 2.1应用程序在文本文件中出现特定字符串时忽略所有字符。

文本文件如下:

From:
Sent:
text
this is a test
testing 
next
last

输出如下:

this is a test
testing
next
last

为了显示这是一个纯ANSI文本文件,没有格式化,没有Unicode 2字节序列,等等,下面是'od'命令的输出:

0000000 7246 6d6f 0d3a 530a 6e65 3a74 0a0d 6574
0000020 7478 0a0d 0a0d 6874 7369 6920 2073 2061
0000040 6574 7473 0a0d 6574 7473 6e69 2067 0a0d
0000060 0a0d 656e 7478 0a0d 616c 7473

但是,如果我只是改变"Sent:"派:";输出为:

From:
sent:
text
this is a test
testing
next
last

我一直在排除这个问题,但没有看到连接。如果我加上"Sent:"到第一行:

From: Sent:
Sent:
text
this is a test
testing 
next
last

结果如下:

this is a test
testing
next
last

但是如果我修改"Sent:"被"发送";在第二行,我得到这样的输出:

From: Sent:
Sent:
text
this is a test
testing
next
last

和这个文件:

From: Sent:
Sent:
Sent:
text
this is a test
testing 
next
last

结果如下:

this is a test
testing
next
last

但是如果我输入"Sent:"在第一行或一个简单的(0d 0a)作为前两个字节,输出是好的。为什么第二行开头似乎很重要,大写或小写都可以,但"Sent:"却不行?为什么前面的"送"?加上""让它成功?我也在不同的机器上试过——一台运行Ubuntu 18.04,另一台在Windows 10系统上运行jar——结果都是一样的。

对一个非常简单的文本文件的基本Tika响应发生了什么?我没有以任何方式改变这个罐子。这是从Apache Tika站点下载的jar文件。我错过了什么?

如能提供任何信息,不胜感激。

Tika将文本解释为电子邮件。这个具体的例子是一封电子邮件的文本提取,包括某些关键字(例如"From:"one_answers":";在特定的位置)。这就是为什么当在文件开头添加其他字符时,它默认将其解释为纯文本文件。

我原以为解释的顺序是先根据"。txt"扩展,然后分析内容(在本例中,该文本文件没有任何元数据)。但这里的情况似乎并非如此。在考虑"。txt"之前,分析似乎是第一阶的。扩展。

该示例作为服务器通过Tika运行。接下来,我将使用Tika API,并遵循评论者(@Gagravarr)提供的建议,跳过对AutoDetectParser的调用,在元数据上设置内容类型属性,并通过API调用DefaultParser。

感谢@Gagravarr找到解决方案。

相关内容

  • 没有找到相关文章

最新更新