35

我正在寻找一种快速可靠的方法来读取/解析 Ruby 中的大型 PDF 文件(在 Linux 和 OSX 上)。

到目前为止,我发现了相当古老且简单的 PDF-toolkit(一个pdftotext -wrapper)和PDF-reader,它们无法读取我的大部分文件。尽管这两个库提供了我正在寻找的功能。

我的问题:我错过了什么吗?有没有更适合(更快、更可靠)解决我的问题的工具?

4

6 回答 6

25

您可能会发现Docsplit很有用:

Docsplit 是一个命令行实用程序和 Ruby 库,用于将文档拆分为其组成部分:可搜索的 UTF-8 纯文本、任何格式的页面图像或缩略图、PDF、单页和文档元数据(标题、作者、页数...)

于 2010-03-03T13:49:19.403 回答
2

在尝试了不同的方法之后,我现在正在使用PDF-Toolkit。它已经很老了,但它快速、稳定且可靠。此外,它真的不需要是新的,因为它只是包装了xpdf 命令行实用程序

于 2009-04-27T12:47:27.057 回答
1

您可以使用 JRuby 和 Java PDF 库解析器,例如 ApachePDFBox ( https://www.ohloh.net/p/pdfbox )。另请参阅http://java-source.net/open-source/pdf-libraries

于 2009-04-21T21:19:36.607 回答
1

看过 CombinePDF库吗?

这是一个纯 ruby​​ 解决方案,允许进行一些 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 模板而不是从头开始编写整个内容。

于 2015-05-25T12:56:45.333 回答
0

这里有一些选项:

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

通过该链接并搜索 sourceforge,有几个命令行实用程序可以满足您的需求,例如: http: //pdftohtml.sourceforge.net/

根据您的要求和 PDF 的外观,您可以考虑使用 Google Docs API(上传 PDF,然后将其作为文本下载),或者也可以尝试类似gocr的方法。过去我很幸运地用 gocr 解析图像文本,你只需要跳到 shell 就可以了,就像gocr -i whatever.pdf(我认为它适用于 PDF)。

所有这些的缺点是它们不是纯 Ruby 实现,但许多好的(和免费的)OCR 项目似乎都是以这种方式完成的。

于 2009-04-21T19:14:09.513 回答
0

如果您只需要从 pdf 文件中获取文本内容,sourceforge 上的 pdftohtml 非常有效。它不适合处理图像。

于 2010-02-12T10:16:22.187 回答