我正在使用Apache Tika 1.9
并且内容提取工作非常棒。
我面临的问题是页面问题。我可以从文档元数据中提取总页数。但我无法从文档中找到每页提取内容的任何方法。
我搜索了很多并尝试了一些用户建议的解决方案,但对我不起作用,可能是由于最新的Tika版本。
请为此建议任何解决方案或进一步的研究方向。
我会感激的。
注意:我使用JRuby实现
答案 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