我的目标是在解析其结构时从PDF文件中提取文本和图像。解析结构的范围并非详尽无遗;我只需要能够识别标题和段落。
我尝试了一些不同的东西,但我没有在其中任何一个方面走得太远:
有人对如何解决这个问题有任何建议吗?
答案 0 :(得分:10)
基本上没有简单的剪切和粘贴解决方案,因为PDF对结构并不是很感兴趣。这个网站上有许多其他答案会更详细地告诉你这些事情,但是这个答案应该给你一些要点:
If identifying text structure in PDF documents is so difficult, how do PDF readers do it so well?
如果你想在PDF本身(你可以对这个过程进行大部分控制)中这样做,你必须遍历页面上的所有文本并通过查看它们的文本属性来识别标题(使用的字体,相对于页面上的其他文本的大小等...)。
除此之外,您还必须通过查看文本片段的位置,页面上的空白区域,某些字母,单词和行的接近程度来识别段落... PDF本身甚至没有“单词”的概念,更不用说“行”或“段落”。
为了使事情复杂化,在页面上绘制文本的方式(以及它在PDF文件本身中出现的顺序)甚至不必是正确的阅读顺序(或者我们人类会考虑的内容)要正确的阅读顺序)。
答案 1 :(得分:2)
您可以使用以下方法使用iTextSharp或其他开源库:
或者您可以使用能够完成此操作的ByteScout PDF Extractor SDK之类的商业工具:
免责声明:我隶属于ByteScout
答案 2 :(得分:0)
除非它是标记内容,否则PDF没有结构......你必须“猜测”它是各种工具正在做什么。在http://blog.idrsolutions.com/2010/09/the-easy-way-to-discover-if-a-pdf-file-contains-structured-content/
上有一篇很好的博客文章解释了这些问题答案 3 :(得分:0)
标题及其子内容的PDF解析非常困难(它并不意味着它是不可能的),因为PDF有各种格式。但是我最近遇到了名为 GROBID 的工具,它可以在这种情况下提供帮助。我知道它并不完美但如果我们提供适当的培训,它可以实现我们的目标。
Grobid在github上作为开源提供。
答案 4 :(得分:0)
可以使用tabula-py或tabula-java解析PDF文件。
我制作了完整的教程,介绍如何在this article上使用tabula-py。只要安装了Java,您就可以在网络浏览器中建立表格。
答案 5 :(得分:0)
正如上面的答案中提到的,PDF 不是很容易解析。但是,如果您有关于要解析的文本的某些附加信息,则可以将其关闭。
如果您的标题位于页面的特定部分,您可以解析 PDF 文件并按坐标对解析的输出进行排序。
如果您事先了解标题和段落之间的间距,也可以利用此信息来解析文件。
PDFBox 是一种 PDF 解析工具,可用于提取文本和图像,您可以在其上定义自定义解析规则。
但是,要解析 PDF,您需要先了解 PDF 文件的一般格式。您可以查看以下博文 Document parsing,了解有关文档解析的更多信息。
免责声明:我参与了这篇博文的撰写。
答案 6 :(得分:-4)
iText api: PdfReader pr = new PdfReader(" C:\ test.pdf");
参考文献: PDFReader