從 PDF 中提取文字(使用 GroupDocs.Parser InputStream(Java))
在現代的 Java 應用程式中,直接從 InputStream 中 extracting 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?
從 stream(read 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(參數): 提供給
Parser的InputStream。 - Return Values(回傳值): 用於讀取文件文字的
TextReader。 - Purpose(目的):
getText()抽象化特定格式的解析,提供純文字。
常見陷阱與除錯
- Incorrect file path(檔案路徑錯誤): 請確認路徑與檔名。
- Unsupported format(不支援的格式):
getText()會對僅含影像的 PDF 回傳null;請依範例處理此情況。 - Memory leaks(記憶體洩漏): 請始終使用 try‑with‑resources(如範例所示)即時關閉串流與 parser 物件。
實務應用案例
- Invoice Processing(發票處理): 從電子郵件接收的 PDF 中抽取項目文字。
- Data Migration(資料遷移): 透過串流方式將 PDF 內容直接匯入新資料庫,以取代舊系統。
- 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)。
資源
- Documentation(文件): GroupDocs Parser Documentation
- API Reference(API 參考): API Reference
- Download(下載): Latest Releases
- GitHub(原始碼): Source Code on GitHub
- Free Support(免費支援): Support Forum
- Temporary License(臨時授權): Request a Temporary License
常見問題
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