Подтвердить что ты не робот

Ruby: чтение файлов PDF

Я ищу быстрый и надежный способ читать/разбирать большие PDF файлы в Ruby (на Linux и OSX).

До сих пор я нашел довольно старый и простой PDF-toolkit (a pdftotext -wrapper) и PDF-reader, который не смог прочитать большинство моих файлов. Хотя две библиотеки предоставляют именно ту функциональность, которую я искал.

Мой вопрос: я что-то пропустил? Есть ли инструмент, который лучше подходит (быстрее и надежнее) для решения моей проблемы?

4b9b3361

Ответ 1

Вы можете найти Docsplit полезный:

Docsplit - это утилита командной строки и библиотека Ruby для разделения документов на свои составные части: открытый текст UTF-8, изображения страниц или миниатюры в любом формате, PDF файлы, отдельные страницы и метаданные документа (название, автор, количество страниц...)

Ответ 2

После использования разных методов я теперь PDF-Toolkit. Это довольно старый, но быстрый, стабильный и надежный. Кроме того, он действительно не должен быть новым, потому что он просто обертывает утилиты xpdf командной строки.

Ответ 4

Вот несколько вариантов:

http://en.wikipedia.org/wiki/List_of_PDF_software

Из этой ссылки и поиска в sourceforge есть несколько утилит командной строки, которые могут делать то, что вам нужно, например: http://pdftohtml.sourceforge.net/

В зависимости от ваших требований и того, как выглядят PDF файлы, вы можете ознакомиться с API-интерфейсом Google Docs (загрузить PDF файл, а затем загрузить его в виде текста), а также попробовать что-то вроде gocr. Мне пришлось много раз анализировать текст изображения с помощью gocr в прошлом, и вам просто нужно отскакивать от оболочки, чтобы сделать это, например gocr -i whatever.pdf (я думаю, что это работает с PDF файлами).

Недостатком всего этого является то, что они не являются реализациями pure-Ruby, но многие хорошие (и бесплатные) проекты OCR, похоже, выполняются именно так.

Ответ 5

Если вам просто нужно получить текстовый контент из pdf файла, pdftohtml в sourceforge эффективен. он не подходит для работы с изображениями.

Ответ 6

Вы просмотрели библиотеку CombinePDF?

Это чисто рубиновое решение, которое позволяет обрабатывать PDF файлы, такие как извлечение страниц, наложение одной страницы PDF поверх другой, нумерация страниц, написание основного текста и таблиц и т.д.

Здесь приведен пример для вытеснения существующего файла PDF с логотипом. В этом примере читается файл PDF, извлекается одна страница для использования в качестве штампа и штампы другого файла PDF.

require 'combine_pdf'
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
pdf = CombinePDF.load "content_file.pdf"
pdf.pages.each {|page| page << company_logo}
pdf.save "content_with_logo.pdf"

Вы также можете штамповать текст, числовые страницы или использовать:

require 'combine_pdf'

pdf = CombinePDF.load "content_file.pdf"

pdf.number_pages #adds page numbers. you can add formatting and placement options.

pdf.pages.each {|page| page.textbox "One Way To Stamp"}

#you can a shortcut method to stamp pages
pdf.stamp_pages "Another way to stamp"

#you can use the shortcut method for both text and PDF stamps
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
pdf.stamp_pages company_logo

# you can use write simple tables
pdf.pages[0].write_table headers: ['first name', 'surname'], table_data: [['John', 'Doe'], ['Mr.', 'Smith']]

pdf.save "content_with_logo.pdf"

Он не предназначен для сложных операций, но он дополняет большинство библиотек разработки PDF и позволяет вам использовать PDF-шаблоны вместо того, чтобы писать все с нуля.