PDF到文本工具还是Java库?

PDF到文本工具还是Java库?,java,pdf,Java,Pdf,我需要将PDF转换为普通文本(这是我们县登记处的“投票声明”)。这些文件很大(2000页左右),大部分包含表格。一旦我将它转换成文本,然后我将使用我正在编写的程序来解析它,并将数据放入数据库。 我在AdobeReader中尝试了“另存为文本”功能,但它没有我想要的那么精确,特别是在将表数据分隔为CSV时。 那么,有没有关于工具或Java库的建议可以做到这一点呢?有两个选项: -看起来你可以做你想做的事 声称“PDF到文本提取”是其首要功能。基于它的特性,有一个专门针对this()的。还有一个P

我需要将PDF转换为普通文本(这是我们县登记处的“投票声明”)。这些文件很大(2000页左右),大部分包含表格。一旦我将它转换成文本,然后我将使用我正在编写的程序来解析它,并将数据放入数据库。 我在AdobeReader中尝试了“另存为文本”功能,但它没有我想要的那么精确,特别是在将表数据分隔为CSV时。 那么,有没有关于工具或Java库的建议可以做到这一点呢?

有两个选项:

  • -看起来你可以做你想做的事

  • 声称“PDF到文本提取”是其首要功能。基于它的特性,有一个专门针对this()的。还有一个PDFBox

  • 使用文本(行)打印机打印到文件。

    我一直觉得这些工具非常有用

    我们成功地使用pdf到文本的转换来转换pdf业务文档,以便在EDI中使用。保留布局的选项可以很好地保持程序中解析的位置。

    我使用iText,我对它非常满意。
    我以前使用过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标志有助于在文本文件中保持表格的可用格式。