從 PDF 中提取文字(使用 GroupDocs.Parser InputStream(Java))

在現代的 Java 應用程式中,直接從 InputStreamextracting text from PDF 檔案可以大幅簡化文件流程——尤其是當檔案存放於雲端儲存桶、透過 HTTP 接收,或在記憶體中處理而不需觸及檔案系統時。本指南將逐步說明如何使用 GroupDocs.Parser 從串流讀取 PDF、此方法的好處,以及如何避免常見的陷阱。

快速解答

  • 「extract text from PDF」是什麼意思? 它表示以程式方式讀取 PDF 檔案的文字內容,而不需要手動複製貼上。
  • 我可以在沒有實體檔案的情況下讀取 PDF 嗎? 可以——透過使用 InputStream,您可以直接從記憶體或網路來源載入文件。
  • 哪個函式庫支援在 Java 中以串流方式讀取 PDF? GroupDocs.Parser 提供了乾淨的 API 以滿足此需求。
  • 我需要授權嗎? 免費試用授權可用於評估;正式環境需要付費授權。
  • 需要哪個 Java 版本? JDK 8 或以上。

「extract text from PDF」是什麼?

從 PDF 中提取文字指的是以程式方式抽取文件中嵌入的可讀字元。這對於建立索引、搜尋、資料探勘,或將內容輸入後續業務邏輯都相當重要。

為什麼要從串流而非檔案讀取 PDF?

streamread pdf from stream)讀取 PDF 可省去暫存檔的需求、降低 I/O 開銷,並在處理機密文件時提升安全性。它同時讓您能處理位於雲端儲存、電子郵件附件或即時產生的 PDF。

前置條件

  • Java Development Kit (JDK) 8+
  • 如 IntelliJ IDEA、Eclipse 或 NetBeans 等 IDE
  • 具備 Java I/O 串流的基本概念

必要的函式庫、版本與相依性

您需要使用 GroupDocs.Parser 函式庫(版本 25.5)。可透過 Maven 加入或直接下載。

Maven:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

直接下載:
或者,從 GroupDocs.Parser for Java releases 下載最新版本。

取得授權步驟

從 GroupDocs 官方網站取得免費試用授權,或購買正式授權以供生產環境使用。

設定 GroupDocs.Parser(Java)

加入相依性後,匯入所需的類別:

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.TextReader;
import java.io.FileInputStream;
import java.io.InputStream;

如何使用 GroupDocs.Parser 從 PDF 提取文字

以下是一個逐步說明,示範如何從 InputStream 載入 PDF 並輸出其文字內容。

步驟 1:定義 Input Stream

建立指向 PDF 檔案的 InputStream。將 YOUR_DOCUMENT_DIRECTORY 替換為實際的資料夾路徑。

String filePath = "YOUR_DOCUMENT_DIRECTORY" + "/SamplePdf.pdf";
try (InputStream stream = new FileInputStream(filePath)) {

步驟 2:使用串流初始化 Parser

InputStream 傳入 Parser 建構子。這讓 GroupDocs.Parser 能直接處理記憶體中的資料。

    try (Parser parser = new Parser(stream)) {

步驟 3:提取文字內容

呼叫 getText() 取得 TextReader。若格式不受支援,會回傳 null,以便優雅地處理。

        try (TextReader reader = parser.getText()) {
            String extractedText = reader == null ? "Text extraction isn't supported" : reader.readToEnd();
            System.out.println(extractedText);
        }
    }
}
  • Parameters(參數): 提供給 ParserInputStream
  • Return Values(回傳值): 用於讀取文件文字的 TextReader
  • Purpose(目的): getText() 抽象化特定格式的解析,提供純文字。

常見陷阱與除錯

  • Incorrect file path(檔案路徑錯誤): 請確認路徑與檔名。
  • Unsupported format(不支援的格式): getText() 會對僅含影像的 PDF 回傳 null;請依範例處理此情況。
  • Memory leaks(記憶體洩漏): 請始終使用 try‑with‑resources(如範例所示)即時關閉串流與 parser 物件。

實務應用案例

  1. Invoice Processing(發票處理): 從電子郵件接收的 PDF 中抽取項目文字。
  2. Data Migration(資料遷移): 透過串流方式將 PDF 內容直接匯入新資料庫,以取代舊系統。
  3. Legal Review(法律審查): 快速掃描合約關鍵條款,無需手動開啟檔案。

大型 PDF 的效能建議

  • FileInputStream 外層使用 BufferedInputStream 以提升讀取速度。
  • 抽取完成後立即關閉所有資源,以釋放記憶體。
  • 保持 GroupDocs.Parser 為最新版本,以獲得效能改進。

如何在沒有檔案的情況下讀取 PDF(read pdf without file)——替代方法

若 PDF 來源於 Web 服務,您可以將回應的位元組陣列包裝成 ByteArrayInputStream,再傳入相同的 Parser 建構子。程式碼保持不變,僅串流來源不同。

在 Java 中從 PDF 提取影像(extract images pdf java)

雖然本教學聚焦於文字,GroupDocs.Parser 亦支援透過 parser.getImages() 提取影像。將 getText() 區塊改為 getImages() 即可取得影像串流。

解析 PDF InputStream(Java)(parse pdf inputstream java)

上述模式——建立 InputStream、初始化 Parser,再呼叫所需 API——可涵蓋所有解析情境(文字、影像、metadata)。

資源

常見問題

Q1: 我可以使用 GroupDocs.Parser 從 Word 文件提取文字嗎?
A1: 可以,GroupDocs.Parser 支援 DOCX、PPTX 以及許多其他格式。完整清單請參閱 API Reference

Q2: 我該如何處理 GroupDocs.Parser 不支援的文件格式?
A2: 當不支援抽取時,getText() 會回傳 null,您可以依此實備援邏輯。

Q3: 能否使用 GroupDocs.Parser 提取影像?
A3: 可以,使用 getImages() 方法即可從支援的文件取得影像串流。

Q4: 我該如何排除文件載入的常見問題?
A4: 請確認檔案路徑、使用正確的 JDK 版本,並確保 PDF 未被密碼保護。如需進一步協助,請前往 GroupDocs Support 論壇。

Q5: 使用 GroupDocs.Parser 時,記憶體管理的最佳實踐是什麼?
A5: 請始終使用 try‑with‑resources(如範例所示),自動關閉串流與 parser 實例,以防止記憶體洩漏。


最後更新: 2025-12-24
測試環境: GroupDocs.Parser 25.5(Java)
作者: GroupDocs