在这篇文章中,您将学习如何使用 Java 无缝地从 PDF 文件中提取文本。文本提取可用于各种场景,例如文本分析、信息检索、文档解析等。由于 PDF 是使用最广泛的数字文档之一,因此从 PDF 文档中提取文本的用例数量较多。因此,让我们开始检查如何从 Java 应用程序中执行 PDF 文本提取。
从 PDF 中提取文本的 Java API - 免费下载
Aspose.PDF for Java 是一个著名的 PDF 文件操作 API,它提供了广泛的功能来创建和处理 PDF 文件。该 API 包含一个强大的文本提取器,它提供了在几行代码内从 PDF 文档中提取文本的各种方法。您可以下载 API 的 JAR 或使用以下配置将其安装在基于 Maven 的应用程序中。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>20.11</version>
</dependency>
使用 Java 从 PDF 中提取文本
以下是使用 Aspose.PDF for Java 从 PDF 文档中提取文本的步骤。
- 使用 Document 类加载 PDF 文件。
- 创建一个 TextAbsorber 类的对象。
- 使用 Document.getPages().accept(TextAbsorber) 方法接受 PDF 的所有页面的 TextAbsorber。
- 使用 TextAbsorber.getText() 方法从 PDF 中获取所有文本。
- 将文本保存到 TXT 文件中(可选)。
以下代码示例展示了如何使用 Java 从 PDF 中提取文本。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document pdfDocument = new Document("input.pdf");
// 创建 TextAbsorber 对象以提取文本
TextAbsorber textAbsorber = new TextAbsorber();
// 接受所有页面的吸收器
pdfDocument.getPages().accept(textAbsorber);
// 获取提取的文本
String extractedText = textAbsorber.getText();
// 创建作家并打开文件
java.io.FileWriter writer = new java.io.FileWriter(new java.io.File("Extracted_text.txt"));
writer.write(extractedText);
// 将一行文本写入文件 tw.WriteLine(extractedText);
// 关闭流
writer.close();
从 PDF 中的特定页面提取文本
您还可以使用以下步骤从 PDF 文档的特定页面中提取文本。
- 使用 Document 类加载 PDF 文件。
- 创建 TextDevice 类的实例。
- 使用 TextExtractionOptions 类定义附加选项。
- 使用 TextDevice.setExtractionOptions(TextExtractionOptions) 方法设置选项。
- 使用 TextDevice.Process(Page, String) 从指定页面中提取文本。
以下代码示例展示了如何使用 Java 从 PDF 的特定页面中提取文本。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document pdfDocument = new Document("input.pdf");
// 创建文本设备
TextDevice textDevice = new TextDevice();
// 设置文本提取选项 - 设置文本提取模式(原始或纯)
TextExtractionOptions textExtOptions = new TextExtractionOptions(TextExtractionOptions.TextFormattingMode.Raw);
textDevice.setExtractionOptions(textExtOptions);
// 从 PDF 的第一页获取文本并将其保存为文件格式
textDevice.process(pdfDocument.getPages().get_Item(1), "ExtractedText.txt");
从 PDF 中的页面区域提取文本
您还可以从 PDF 页面的特定区域提取文本。为此,您可以定义一个矩形来覆盖需要从中提取文本的区域。以下是从页面区域中提取文本的步骤。
- 使用 Document 类加载 PDF 文件。
- 创建一个 TextAbsorber 类的对象。
- 使用 TextAbsorber.getTextSearchOptions().setLimitToPageBounds(true) 和 TextAbsorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350)) 设置页面边界限制并创建一个矩形] 方法。
- 接受特定页面的吸收器。
- 使用 TextAbsorber.getText() 方法提取文本。
以下代码示例展示了如何从 Java 中的特定页面区域提取文本。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document doc = new Document("page_0001.pdf");
// 创建 TextAbsorber 对象以提取文本
TextAbsorber absorber = new TextAbsorber();
absorber.getTextSearchOptions().setLimitToPageBounds(true);
absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
// 接受第一页的吸收器
doc.getPages().get_Item(1).accept(absorber);
// 获取提取的文本
String extractedText = absorber.getText();
// 创建作家并打开文件
BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("ExtractedText.txt")));
// 写入提取的内容
writer.write(extractedText);
// 关闭作家
writer.close();
结论
在本文中,您学习了如何使用 Java 从 PDF 中提取文本。您已经看到了各种文本提取方法,例如从整个 PDF、特定页面或特定页面区域中提取文本。您可以使用 documentation 了解有关 Java PDF API 的更多信息。
也可以看看
信息:Aspose 最近开发了一项免费的在线 Text to GIF 服务,允许您为文本制作动画或从简单文本生成 GIF。