为什么Tika 2.1工具会忽略纯TXT文本文件中的部分文本内容?
问题成因
Apache Tika默认开启文件类型自动检测机制,你提供的纯文本文件开头包含From:、Sent:等符合RFC822邮件格式的标准头字段,Tika会误将该纯文本文件识别为EML邮件格式文件。处理邮件格式文件时,Tika默认会剥离邮件头字段,仅输出邮件正文内容,因此开头的3行内容会被当作邮件头直接丢弃。
测试现象对应解释
- 将
Sent:改为小写sent::RFC822邮件头标准字段为首字母大写格式,小写字段无法匹配邮件头规则,Tika不会判定为邮件格式,会按纯文本正常输出全部内容 - 将
Sent:追加到第一行:只要文件开头范围内存在符合规则的连续邮件头字段,Tika就会将字段所在及之前的内容判定为邮件头,因此依然会忽略前3行 - 将
Sent:修改为\Sent::修改后无法匹配标准邮件头字段格式,不会触发邮件格式识别,内容正常输出 - 开头新增多行
Sent::所有符合邮件头规则的连续行都会被判定为邮件头部分,因此Sent:之前的内容都会被丢弃 - 把
Sent:放在第一行或开头添加换行符:邮件头识别要求字段从文件起始位置连续排列,开头有空行或Sent:单独在第一行后无其他匹配头字段时,无法触发邮件格式的判定逻辑,因此内容正常输出
解决方案
执行命令时强制指定使用纯文本解析器,无需修改原文件即可输出全部内容,命令如下:
java -jar tika-app-2.1.0.jar -t --parser=org.apache.tika.parser.txt.TXTParser test.txt
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

