在本文中,您將學習如何使用 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、特定頁面或特定頁面區域中提取文本。您可以使用 文檔 了解有關 Java PDF API 的更多信息。
也可以看看
信息:Aspose 最近開發了一項免費的在線 Text to GIF 服務,允許您將文本動畫化或從簡單文本生成 GIF。