我使用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中的每个级别实际上可以表示一个句子或段落。
尝试这样的事情:
// 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>"
之后另外加上""。如果需要,您还可以一一输出所有s
字符串。
我希望这是有帮助的。祝你好运。