我一直在尝试一个简单的 Ruby 程序来解析一个简单的 pdf 文件并提取我感兴趣的文本。我发现pdf-reader是一个非常好的 pdf 文件解析 gem。我已经阅读了该 gem 中给出的示例以及一些相关的教程。
我已经尝试了回调方法,并且能够从我的 pdf 文件中获取所有文本。但我不明白某些回调参数背后的概念。
例如,如果我的 pdf 有一个包含 3 列和 2 行的简单表格。(标题行值为姓名、地址、年龄),第一行值为(Arun,Hoskote,22),当你运行 ruby 后的 ruby 脚本时
receiver = PDF::Reader::RegisterReceiver.new
reader = PDF::Reader.new("Arun.pdf")
reader.pages.each do |page|
page.walk(receiver)
receiver.callbacks.each do |cb|
puts cb.inspect
end
end
它打印一系列回调,其中一些有趣的回调show_text_with_positioning如下所示
{:name=>:show_text_with_positioning, :args=>[["N", 5, "am", -4, "e"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["Ad", 6, "d", 3, "ress"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["Age"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["Ar", 4, "u", 3, "n"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["H", 3, "o", -5, "sk", 9, "o", -5, "te"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["22"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
从上面的回调中,args 相对于 pdf 文件代表什么?如果我只想在此示例中提取名称值“Arun”(任何东西都可以来这里)或年龄值 i,即“25”(任何值都可以来这里),我该如何在 ruby 程序中做到这一点?是否有任何 pdf-parser API 或 Ruby API 仅从 pdf 文件中获取单个“感兴趣”值?
如何编写一个 Ruby 程序来访问我感兴趣的特定回调,它给了我想要的文本?