Я пробовал простую программу Ruby для анализа простого файла PDF и извлечения интересующих меня текстов. Я обнаружил, что pdf-reader — неплохой инструмент для разбора pdf-файлов. Я прочитал примеры, приведенные в этом геме, и некоторые учебники вокруг этого.
Я попробовал метод обратного вызова и смог получить весь текст из моего файла PDF. Но я не понял концепции аргументов для некоторых обратных вызовов.
Например, если в моем pdf есть простая таблица с 3 столбцами и 2 строками. (Значения строки заголовка — это имя, адрес, возраст), а значения первой строки — (Арун, Хоскоте, 22), и когда U запускает скрипт 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? Если я хочу извлечь только значение имени, которое является «Арун» (сюда может прийти что угодно) здесь, или значение возраста i, e «25» (здесь может быть любое значение) здесь, в этом примере, как я могу сделать это в программе ruby? Есть ли какой-либо API-интерфейс pdf-parser или API Ruby для получения только одного «заинтересованного» значения из файла PDF?
Как я могу написать программу Ruby для доступа к конкретному обратному вызову, который меня интересует, который дает мне текст, который я хотел?