我正在尝试使用Apache Tika从PPT中提取文本。下面的代码允许我这样做。
val pptInputStream = new FileInputStream(pptFile)
val autoDetectParser = new AutoDetectParser()
val metadata = new Metadata()
val stringWriter = new StringWriter()
val handlerBody = new BodyContentHandler(-1) //takes whole text (-1 == all)
val pC = new ParseContext
autoDetectParser.parse(pptInputStream, handlerBody, metadata, pC)
val allSlideText = handlerWrite.toString
但是,我希望通过幻灯片分隔提取的文本。它可以通过幻灯片或作为一个整体在幻灯片中流式传输(我使用的文件根本不大),但重要的是我可以确定幻灯片#1上的文本,幻灯片#2上的文本等等。
我认为可能会有一些元数据可以帮助解决这个问题,但我没有这方面的经验。
提前感谢任何指导。
答案 0 :(得分:2)
宣传回答评论......
它无法在纯文本级别完成,因为页面周围的语义信息已被丢弃
您需要做的是将PowerPoint文件解压缩为XHTML examples on how to do that from Java here on the Tika website。然后,一旦你知道了,你就会发现HTML的结构如下:
<body>
<div class="slideShow">
<div class="slide">
<div class="slide-master-content">
</div>
<div class="slide-content">
</div>
</div>
<div class="slide">
<div class="slide-content">
</div>
</div>
</div>
<div class="slide-notes">
</div>
</body>
因此,您将为每张幻灯片找到一个div,在其中您可以看到幻灯片本身的内容以及幻灯片母版(如果有)的内容。通过幻灯片拆分,然后抓出文本,你就在那里!