每页Apache Tika文档内容提取

时间:2015-07-15 06:21:06

标签: jruby apache-tika

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

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

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

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

我会感激的。

注意:我使用JRuby实现

1 个答案:

答案 0 :(得分:2)

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

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