【问题标题】:Extracting Tables from PDF files in Ruby在 Ruby 中从 PDF 文件中提取表格
【发布时间】:2017-01-28 19:16:04
【问题描述】:

提取嵌入在 PDF 文档中的表格的最佳方法是什么?

我对仅适用于 JRuby 或使用第三方 API 或网站的解决方案不感兴趣。

你能分享一些关于如何提取表的 Ruby 代码吗? 哪些宝石最适合这项工作?

我敢肯定之前有人遇到过同样的问题 :) 感谢您的帮助!

【问题讨论】:

  • 从 PDF 文件中提取以结构化布局组织的数据比您预期的要困难得多,而且您不太可能获得适用于任意 PDF 文件的非常可靠的解决方案。
  • 我有一家公司生成的 PDF 文件,所以我希望他们不要更改他们的 PDF 生成工具,并且始终使用相同的格式
  • 你想用这些表做什么?你想要它们为 html 格式吗?文本格式?
  • 我想从表格中提取文本并将数据作为每列/行的字符串获取
  • @ZachTuttle 的answermine 都可以解决这个问题。

标签: ruby-on-rails ruby


【解决方案1】:

您可能想看看这个答案 (How to convert PDF to Excel or CSV in Rails 4)。它解决了您尝试解决的相同问题。

【讨论】:

  • 感谢您的回答,但很遗憾我无法使用第三方 API/站点来处理 PDF,因为它们包含机密数据
  • @Tilo:AFAIK,这个 gem 在本地提取表格,不需要任何第三方来处理 PDF。当然,您需要信任代码,但您可以在启动之前对其进行审核。
【解决方案2】:

查看这颗宝石,我认为这就是您要寻找的东西:pdf-readergem

【讨论】:

  • 这看起来不错,但我没有看到对表格的任何特殊处理
【解决方案3】:

您可以使用poppler 从 pdf 中提取数据。根据您的具体要求,这可能就足够了。

def extract_to_text(pdf_path)
  command = ['pdftotext', Shellwords.escape(pdf_path)].join(' ')
  `#{command}`
end

def extract_to_html(pdf_path)
  command = ['pdftohtml', Shellwords.escape(pdf_path)].join(' ')
  `#{command}`
end

这些命令会将 pdf 分别提取为 html 文件和文本文件,并保存在您的 pdf 所在的同一位置。

您可以使用 homebrew 在 Mac 上安装 poppler:

brew install poppler

【讨论】:

  • 这可能是一个有趣的链接github.com/ashima/pdf-table-extract 来进行实际的表提取
  • @Tilo 是的,看起来很有希望。它在 Python 中,但你可以模仿逻辑。
【解决方案4】:

有一个名为 Iguvium 的 gem 正是这样做的。这是一个例子

pages = Iguvium.read('filename.pdf')
tables = pages.first.extract_tables!
csv = tables.first.to_a.map(&:to_csv).join 

【讨论】:

    猜你喜欢
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多