Apache Tika 文档内容提取每页

Apache Tika Document Content Extraction Per Page

我正在使用 Apache Tika 1.9 并且内容提取非常棒。

我面临的问题是页面。我可以从文档元数据中提取总页数。但是我找不到任何方法从文档中提取每页的内容

我进行了很多搜索并尝试了用户建议的一些解决方案,但对我没有用,可能是由于最新的 Tika 版本。

请为此提出任何解决方案或进一步的研究方向。

我会感激的。

注意:我使用 JRuby 来实现

这是我创建的自定义内容处理程序 class,它解决了我的问题。

class PageContentHandler < ToXMLContentHandler
        attr_accessor :page_tag
        attr_accessor :page_number
        attr_accessor :page_class
        attr_accessor :page_map

        def initialize
          @page_number = 0
          @page_tag = 'div'
          @page_class = 'page'
          @page_map = Hash.new
        end

        def startElement(uri, local_name, q_name, atts)
          start_page() if @page_tag == q_name and atts.getValue('class') == @page_class
        end

        def endElement(uri, local_name, q_name)
          end_page() if @page_tag == q_name
        end

        def characters(ch, start, length)
          if length > 0
            builder = StringBuilder.new(length)
            builder.append(ch)
            @page_map[@page_number] << builder.to_s if @page_number > 0
          end
        end

        def start_page
          @page_number = @page_number + 1
          @page_map[@page_number] = String.new
        end

        def end_page
          return
        end
      end

要使用此内容处理程序,代码如下:

parser = AutoDetectParser.new
handler = PageContentHandler.new
parser.parse(input_stream, handler, @metadata_java, ParseContext.new)
puts handler.page_map