Обнаружить изображение с помощью apache Tika в любом документе? - PullRequest
0 голосов
/ 02 мая 2020

Я использую 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

Есть ли лучшее решение для достижения этой цели? Я использую Scala.

1 Ответ

0 голосов
/ 05 мая 2020

Если кто-то ищет решение, вы можете использовать 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)
...