如何更改从apache tika中提取的文本的输出格式?

时间:2017-11-01 07:32:08

标签: java pdf apache-tika text-extraction

我使用apache tika使用代码从pdf中提取文本:

`

Parser parser = new AutoDetectParser();
ContentHandler handler = new ToXMLContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
parser.parse(inputstream, handler, metadata, context);

`

输出如下:

`

<p>Level 1 

Level 2 

Level 3 

 Level 4 

 Level 5 

 Level 6 

  Level 7 

  Level 8 

  Level 9 

 Level 10 

 Level 11 

Level 12 

Level 13    </p>

`

有什么方法可以通过配置pdf解析器来获得输出,以便在输出中每个级别#包含在单个段落标记内? 例如:

<p>Level 1</p>
<p>Level 2</p>

pdf中的每个级别实际上可以代表一个句子或段落。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

// Get string data
String data = handler.toString();
// Remove tags or other things (depends on your needs)
data = data.replace("<p>","");
data = data.replace("</p>","");
// Now it looks like: String data ="Level 1 Level 2 Level 3 Level 4 Level 5 Level 6 ... ";
String newdata = "";
// Split string in all places contain [number]+[blank space]
for (String s: data.split("(?<=[0-9])(?=" ")")) {
    // append with desired strings
    s =  "<p>"+s+"</p>";
    // and store modified data
    newdata += s;
}

因此,如果需要,可以在标记"</p>"之后另外添加“\ n”。 如果需要,您也可以逐个输出所有s字符串。

我希望这很有帮助。祝你好运。