在任何文档中使用 apache Tika 检测图像?
Detect an Image using apache Tika in any document?
我正在使用 Apache Tika 提取上传文件的内容,我不想解析嵌入 image/s 的文件。截至目前,我正在使用 ToXMLContentHandler 并尝试查找 <img>
标签。
val parser = new AutoDetectParser()
val handler = new ToXMLContentHandler()
val metaData = new Metadata
parser.parse(stream, handler, metaData, getParseContext)
val xmlFileContent = XML.loadString(handler.toString)
val isDocHasImg = (xmlFileContent \ "body" \ "img").toList.nonEmpty
是否有更好的解决方案来实现这一点?我正在使用 Scala。
如果有人正在寻找解决方案,您可以使用 EmbeddedDocumentExtractor class.
class EmbeddedImageFinder() extends EmbeddedDocumentExtractor {
override def shouldParseEmbedded(metadata: Metadata): Boolean = {
if(metadata.get("Content-Type").contains("image/")) {
isImageExists = true
}
false
}
override def parseEmbedded(stream: InputStream, handler: ContentHandler,
metadata: Metadata, outputHtml: Boolean): Unit = {}
}
然后将其添加到 ParserContext
context.set(classOf[EmbeddedDocumentExtractor], new EmbeddedImageFinder)
我正在使用 Apache Tika 提取上传文件的内容,我不想解析嵌入 image/s 的文件。截至目前,我正在使用 ToXMLContentHandler 并尝试查找 <img>
标签。
val parser = new AutoDetectParser()
val handler = new ToXMLContentHandler()
val metaData = new Metadata
parser.parse(stream, handler, metaData, getParseContext)
val xmlFileContent = XML.loadString(handler.toString)
val isDocHasImg = (xmlFileContent \ "body" \ "img").toList.nonEmpty
是否有更好的解决方案来实现这一点?我正在使用 Scala。
如果有人正在寻找解决方案,您可以使用 EmbeddedDocumentExtractor class.
class EmbeddedImageFinder() extends EmbeddedDocumentExtractor {
override def shouldParseEmbedded(metadata: Metadata): Boolean = {
if(metadata.get("Content-Type").contains("image/")) {
isImageExists = true
}
false
}
override def parseEmbedded(stream: InputStream, handler: ContentHandler,
metadata: Metadata, outputHtml: Boolean): Unit = {}
}
然后将其添加到 ParserContext
context.set(classOf[EmbeddedDocumentExtractor], new EmbeddedImageFinder)