PDF到文本工具还是Java库?
我需要将PDF转换为普通文本(这是我们县登记处的“投票声明”)。这些文件很大(2000页左右),大部分包含表格。一旦我将它转换成文本,然后我将使用我正在编写的程序来解析它,并将数据放入数据库。 我在AdobeReader中尝试了“另存为文本”功能,但它没有我想要的那么精确,特别是在将表数据分隔为CSV时。 那么,有没有关于工具或Java库的建议可以做到这一点呢?有两个选项:PDF到文本工具还是Java库?,java,pdf,Java,Pdf,我需要将PDF转换为普通文本(这是我们县登记处的“投票声明”)。这些文件很大(2000页左右),大部分包含表格。一旦我将它转换成文本,然后我将使用我正在编写的程序来解析它,并将数据放入数据库。 我在AdobeReader中尝试了“另存为文本”功能,但它没有我想要的那么精确,特别是在将表数据分隔为CSV时。 那么,有没有关于工具或Java库的建议可以做到这一点呢?有两个选项: -看起来你可以做你想做的事 声称“PDF到文本提取”是其首要功能。基于它的特性,有一个专门针对this()的。还有一个P
我以前使用过xmlpdf,我认为iText的优越性要高得多。如果不知道PDF中页面的布局,很难说 我建议下载并尝试iText和PDBox。你会在他们的网站上找到这两种文本提取的例子——假设你熟悉Java,你应该在30分钟内运行一个提取程序 从PDFBox开始,因为它的文本提取能力比iText好
其他人提到了xpdf,这可能对您有用。它是一个C库,有一些围绕它构建的命令行工具。它有许多文本提取器,您可以很容易地格式化输出。同样,它确实取决于您的页面布局。是我们的Java+.NET库,用于从PDF文档中提取内容;您可以我可以试一试。此外,它确实提供了一些基本的功能,这些功能位于PDFTextStream的表检测功能之上。这决不是一个通用的解决方案(尽管我们也在研究其中的一个!),但是如果表格式数据被明确定义(例如,行和列以行为边界,等等),然后您可能会发现现在有一个合适的解决方案。给出了问题的标题:从PDF中提取纯文本对我来说非常有效。但我没有使用它从表中获取文本 对于PDF,它实际上使用的是PDF。但除了PDF之外,它对其他格式(如Microsoft Word(doc和docx)、Excel和PowerPoint、OpenOffice.org/LibreOffice ODT、HTML、XML和其他格式)也有同样的作用。它的AutoDetectParser使从任何输入中获取文本变得简单 如果需要处理生成的文本(如通过将其传递给进行分类),则可以在后台进程提取文本的同时将结果输入阅读器。最后,在提取内容的同时,还可以填充找到的元数据:
public Reader getPlainTextReader(final InputStream is) {
try {
Detector detector = new DefaultDetector();
Parser parser = new AutoDetectParser(detector);
ParseContext context = new ParseContext();
context.set(Parser.class, parser);
Metadata metadata = new Metadata();
Reader reader = new ParsingReader(parser, is, metadata, context);
for (String name : metadata.names()) {
for (String value : metadata.getValues(name)) {
logger.debug("Document {}: {}", name, value);
}
}
return reader;
} catch (IOException e) {
...
}
}
iText可以做一些阅读,但我认为可能有更好的工具(如您提到的PDFBox)为了实现这一点…好的,就尝试一下。它对表数据非常有效,但是,列标题被弄乱了,可能是因为它们是垂直对齐的文本。对PDFBox的引用,虽然现在位于不同的URL,但今晚对我来说仍然非常有用!:-)我感觉表数据可能会给你带来一些麻烦…是的。Also表格标题和页面标题。虽然在整个文档中保持一致,但在不同的文档之间并不一致。每次选择一个文档,似乎每次选择都会更改格式。这对我来说很有效,-layout标志有助于在文本文件中保持表格的可用格式。