我需要将PDF转换为普通文本(这是我们县注册商的"投票声明").文件很大(大约2000页),大多包含表格.一旦我把它写入文本,那么我将使用我正在编写的程序来解析它并将数据放入数据库中.我在Adobe Reader中尝试过"另存为文本"功能,但它并不像我想的那样精确,特别是在将表格数据划分为CSV时.那么,对工具或Java库的任何建议都可以做到这一点?
好吧,有iText.我只有有限的经验,但它似乎可以做你想要的.
Apache PDFBox肯定可以做到.它的网站提到"PDF to text extraction"作为其主要功能.有一个ExtractText命令行工具,专门用于此(源代码),基于其PDFTextStripper类.还有一个PDFBox 文本提取指南!
鉴于问题的标题:Apache Tika非常适合我从PDF中提取纯文本.我没有用它来从表中获取文本.
对于PDF,它实际上使用PDFBox.但是,除了PDF,它同样为其他格式,如Microsoft Word(DOC和DOCX),Excel和PowerPoint,OpenOffice.org/LibreOffice ODT,HTML,XML,以及更多.它的AutoDetectParser可以轻松地从任何输入中提取文本.
如果需要处理生成的文本(例如将其传递给Mahout进行分类),可以使用ParsingReader将结果导入Reader,同时后台进程将其提取出来.最后,在提取内容时,它还会填充它找到的元数据:
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) { ... } }