使用 ruby 解析 PDF 文档
Posted
技术标签:
【中文标题】使用 ruby 解析 PDF 文档【英文标题】:Parse a PDF document with ruby 【发布时间】:2015-03-23 11:10:53 【问题描述】:我在一个文件夹中有多个具有特定结构的 PDF 文档:
现在我希望能够解析 PDF 中的信息。请注意,这些段落有不同的长度。
显然我并不是要你为我解决问题,但我确实需要一些关于如何实现这一点的指示。
我以前使用过 nokogiri,从技术上讲,我需要类似的东西,但用于 PDF。
所以我的示例的伪结果如下所示:
- ItemA
- Title: ItemA
- File: 123456789.pdf
- Image: ImageA.png (the image was stored on disk)
- Subtitle1: Content for subtitle 1
- Subtitle2: Content for subtitle 2
- Subtitle3: Content for subtitle 3
- TitleB
- [...]
【问题讨论】:
尽管您已经仔细措辞,但我认为您最好直接在 beta 站点 softwarerecs.stackexchange.com 上提出软件推荐问题 - 那里有一些 PDF 操作库,它看起来你想要一些可以很好地解析成数据结构的东西。询问“解析 PDF 的最佳 Ruby 库”并在此处使用您的问题中的内容,我认为这是该 SE 网站上一个非常可接受的问题。该库可能会包含示例代码。 @NeilSlater 嘿,尼尔,感谢您的评论。我知道我的问题的风格有点棘手。我确实认为这是一个特定的软件软件工程问题,并且我确实已经发布了自己的答案,以便其他人仍然可以从中受益。 好的,我不认为这是题外话,只是你可能会在另一个网站上得到不同的焦点(工作的最佳工具)答案。如果您要自我回答,那么我认为其他人在 SO 上找到它会非常有用。 “相关”下的最佳链接显然已过时,现在将被视为离题 【参考方案1】:pdf-reader
是解决方案之一。但它有时会出现问题,它不会以正确的格式提供文本。我已经用过了。
我会建议使用 docsplit 。您将在 this blog post 中找到有关“pdf-reader”和“docsplit”的更多信息。
希望这会有所帮助。如果需要任何澄清,请随时发表评论。
【讨论】:
我现在正在使用 pdf 阅读器。刚刚遇到一个问题,它在处理上标方面做得不好。 IE。如果有50个上标100,则读作“50100” 是的,docsplit 没有帮助。经过一番努力,我得到了它的工作。 pdf-reader 具有此回调函数,您可以在其库处理之前访问 PDF 中的每一小段数据。所以我使用回调并自己解析它,然后将它与 pdf-reader 中未损坏的其他数据结合起来【参考方案2】:获取文本
文本可以很容易地解析成这样:
# gem install pdf-reader
require 'pdf-reader'
reader = PDF::Reader.new('my.pdf')
reader.pages.each do |page|
puts page.text
end
保存图片
这可以通过同一个库来完成。请参阅示例脚本examples/extract_images.rb。
然而
这是(尚未)完整的答案。 接下来的步骤是:
-
解析文本并查找标题
裁剪图像,可以使用 RMagick 或 Mini Magick 等库来实现。
【讨论】:
以上是关于使用 ruby 解析 PDF 文档的主要内容,如果未能解决你的问题,请参考以下文章