有人可以建议一个命令行工具(例如pdf转txt)或库来完成这个任务吗?
语言选项:
- C#(首选) - Java(如果必须)
我在这里找到了一些想法,但我认为那个人更多地谈论了一次性的情况,而我则更多地讨论了每天的导入。
https://stackoverflow.com/questions/488089/extracting-tables-from-pdf-files
https://stackoverflow.com/questions/488089/extracting-tables-from-pdf-files
pdftotext
看起来可以很好地完成任务。
pdftotext file.pdf [textfile.txt]
编辑: 我不确定您想要如何保留有关表格的信息。最好的输出结果(至少对于我的人眼而言)是由以下方式产生的:
pdftotext -layout file.pdf [textfile.txt]
此选项尽可能保持文档的原始布局。特别是,在文本输出中表格仍然看起来很好。默认情况下,将表格的列解释为文本列(非常糟糕)。另一个选项是-raw
,这个选项可能不如之前的好看,但仍然有用。
xpdf
确实有一个pdftotext
的实现。我使用的是poppler-utils
包中的版本。我似乎找不到一个带有表格的PDF文件来测试输出结果。您想要什么样的输出呢? - Anton GeraschenkoPDF中的表格数据通常很难正确提取,因为大多数PDF文件都不包含结构化内容元数据。没有这些元数据,PDF文件只是一堆文本和其他操作。大多数情况下,只有人类才能判断文档中是否有表格。
几乎任何足够先进的工具和库都会尝试使用启发式方法对从PDF中提取的文本进行结构化处理。当然,不同的工具和库的结果会有所不同。
您可以尝试使用Docotic.Pdf库(免责声明:我在Bit Miracle工作)来提取PDF文件中的文本。我认为该库应该能够以足够的质量提取文本以供进一步处理。
请查看一个示例,展示了如何从PDF中提取文本。
在Java上还有PdfBox和JPedal。PDF文件格式中不存在表格,因此任何软件都将对其进行“猜测”。
Apache Tika 是一款开源的 Java 工具包,专门用于提取各种文档(包括 PDF)中的结构化内容,正是您所需要的。
它确实使用了 PDFBox 来处理 PDF 文件格式,但提供了一定程度的抽象,非常适合提取结构化内容。
它还包含命令行实用程序 - 请参见此处。