首页 > 解决方案 > 在任何文档中使用 apache Tika 检测图像?

问题描述

我正在使用Apache Tika提取上传文件的内容,我不想解析嵌入图像的文件。截至目前,我正在使用 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

有没有更好的解决方案来实现这一目标?我正在使用斯卡拉。

标签: apache-tika

解决方案


如果有人正在寻找解决方案,您可以使用EmbeddedDocumentExtractor类。

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)

推荐阅读