📜  从 PDF 中提取内容的Java程序(1)

📅  最后修改于: 2023-12-03 15:06:32.042000             🧑  作者: Mango

从 PDF 中提取内容的 Java 程序

在许多情况下,我们需要从 PDF 文件中提取出其中的文本信息,例如在机器学习模型中处理文本数据。

Java 作为一种成熟的编程语言,提供了许多用于 PDF 文件操作的库,使得从 PDF 文件中提取信息变得十分容易。

以下是一个简单的 Java 程序,用于从 PDF 文件中提取文本信息,并将其打印到控制台上。

使用 iText7 库提取 PDF 中的文本信息

iText 是一个功能强大的 PDF 操作库,它提供了从 PDF 中提取文本信息的方法。以下是使用 iText7 库提取 PDF 中文本信息的 Java 代码:

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import java.io.IOException;

public class PdfTextExtractorExample {

    public static void main(String[] args) throws IOException {
        String filePath = "example.pdf";
        PdfDocument pdfDoc = new PdfDocument(new PdfReader(filePath));
        int numPages = pdfDoc.getNumberOfPages();

        for (int i = 1; i <= numPages; i++) {
            System.out.println("Extracting text from page " + i + "...");
            String pageText = PdfTextExtractor.getTextFromPage(pdfDoc.getPage(i));
            System.out.println(pageText);
        }

        pdfDoc.close();
    }
}
iText7 库的使用说明
  • 导入 maven 依赖:
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>7.1.9</version>
</dependency>
  • iText7 库中的 PdfReader 类用于读取 PDF 文件,PdfDocument 类用于操作 PDF 文档,PdfTextExtractor 类用于提取 PDF 中的文本信息。

  • 使用 PdfDocument.getNumberOfPages() 可以获取 PDF 的总页数,使用 PdfDocument.getPage(int) 获取指定页数的页面对象。

  • 使用 PdfTextExtractor.getTextFromPage(PdfPage) 可以提取 PDF 页面中的文本信息,返回一个字符串。

使用 PDFBox 库提取 PDF 中的文本信息

PDFBox 是另一个强大的 PDF 操作库,它也提供了从 PDF 中提取文本信息的方法。以下是使用 PDFBox 库提取 PDF 中文本信息的 Java 代码:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.File;
import java.io.IOException;

public class PdfTextExtractorExample {

    public static void main(String[] args) throws IOException {
        String filePath = "example.pdf";
        PDDocument pdfDoc = PDDocument.load(new File(filePath));
        int numPages = pdfDoc.getNumberOfPages();
        PDFTextStripper stripper = new PDFTextStripper();

        for (int i = 1; i <= numPages; i++) {
            System.out.println("Extracting text from page " + i + "...");
            stripper.setStartPage(i);
            stripper.setEndPage(i);
            String pageText = stripper.getText(pdfDoc);
            System.out.println(pageText);
        }

        pdfDoc.close();
    }
}
PDFBox 库的使用说明
  • 导入 maven 依赖:
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.23</version>
</dependency>
  • PDFBox 库中的 PDDocument 类用于操作 PDF 文档,PDFTextStripper 类用于提取 PDF 中的文本信息。

  • 使用 PDDocument.load(File) 可以读取并加载指定的 PDF 文件。

  • 使用 PDDocument.getNumberOfPages() 可以获取 PDF 的总页数,使用 PDFTextStripper.setStartPage(int)PDFTextStripper.setEndPage(int) 可以设置需要提取文本的页面范围。

  • 使用 PDFTextStripper.getText(PDDocument) 可以提取 PDF 页面中的文本信息,返回一个字符串。

总的来说,无论是使用 iText7 库还是 PDFBox 库,都是非常方便地从 PDF 文件中提取文本信息的工具。开发者可以根据自己的需要选择适合自己的库来使用。