在任何文档中使用 apache Tika 检测图像?

Detect an Image using apache Tika in any document?

我正在使用 A​​pache 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)