翻譯|使用教程|編輯:吉煒煒|2025-07-04 09:59:48.253|閱讀 114 次
概述:本指南將介紹如何使用 Spire.PDF for Java 讀取 PDF 文檔 ,涵蓋從可搜索的 PDF 提取文本 、表格和 圖片 ,以及通過 OCR 技術從掃描版 PDF 中讀取文本。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
在數據驅動的現代開發中,高效處理 PDF 文檔已成為 Java 開發者不可或缺的核心能力。無論是處理各類發票掃描件、業務分析報告,還是包含豐富圖表的技術文檔,掌握 Java 版的 PDF 解析技術都將大幅提升數據處理效率,充分釋放文檔中的商業價值。
E-iceblue旗下Spire系列產品,是文檔處理組件領域的佼佼者,支持國產化信創。本指南將介紹如何使用Spire.PDF for Java 讀取 PDF 文檔 ,涵蓋從可搜索的 PDF 提取文本 、表格和 圖片 ,以及通過 OCR 技術從掃描版 PDF 中讀取文本。
加入Spire技術交流QQ群(125237868),與更多開發者一起提升文檔開發技能。
選擇適合的庫是成功讀取 PDF 的關鍵。Spire.PDF 以其穩定性和豐富功能脫穎而出,支持文本提取、圖片獲取、表格解析及 OCR 集成,其直觀 API 和完善的教程對新手和專家同樣友好。
開始前請從官網下載 Spire.PDF for Java 并添加至項目依賴。Maven 用戶請在 pom.xml 中添加:
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>//repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf</artifactId> <version>11.6.2</version> </dependency> </dependencies>
下文將演示如何運用 Spire.PDF 完成各類 PDF 讀取任務。
可搜索 PDF 以機器可讀的格式存儲文本,便于高效提取內容。Spire.PDF 中的 PdfTextExtractor 類可直接獲取可搜索PDF的頁面文本,而 PdfTextExtractOptions 能靈活設置提取參數,包括文本布局處理策略和指定提取區域。
以下示例展示如何使用 Java 提取 PDF 所有頁面的文本并輸出到TXT文件:
import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.texts.PdfTextExtractOptions; import com.spire.pdf.texts.PdfTextExtractor; import com.spire.pdf.texts.PdfTextStrategy; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class ExtractTextFromSearchablePdf { public static void main(String[] args) throws IOException { // 創建一個 PdfDocument 對象 PdfDocument doc = new PdfDocument(); // 加載 PDF 文件 doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf"); // 遍歷所有頁面 for (int i = 0; i < doc.getPages().getCount(); i++) { // 獲取當前頁面 PdfPageBase page = doc.getPages().get(i); // 創建一個 PdfTextExtractor 對象 PdfTextExtractor textExtractor = new PdfTextExtractor(page); // 創建一個 PdfTextExtractOptions 對象 PdfTextExtractOptions extractOptions = new PdfTextExtractOptions(); // 指定提取策略 extractOptions.setStrategy(PdfTextStrategy.None); // 從頁面中提取文本 String text = textExtractor.extract(extractOptions); // 定義輸出文件路徑 Path outputPath = Paths.get("output/Extracted_Page_" + (i + 1) + ".txt"); // 寫入 txt 文件 Files.write(outputPath, text.getBytes()); } // 關閉文檔 doc.close(); } }
效果圖:
對于包含圖形的 PDF,PdfImageHelper 類能精準提取所有嵌入式圖片。通過 PdfImageInfo 對象可將圖片保存為標準圖像文件,特別適用于產品圖冊等視覺內容重要的文檔。
以下Java示例將 PDF 文檔中的所有圖片提取為 PNG 文件:
import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.utilities.PdfImageHelper; import com.spire.pdf.utilities.PdfImageInfo; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ExtractAllImages { public static void main(String[] args) throws IOException { // 創建一個 PdfDocument 對象 PdfDocument doc = new PdfDocument(); // 加載 PDF 文檔 doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf"); // 創建一個 PdfImageHelper 對象 PdfImageHelper imageHelper = new PdfImageHelper(); // 聲明一個整型變量 int m = 0; // 遍歷頁面 for (int i = 0; i < doc.getPages().getCount(); i++) { // 獲取特定頁面 PdfPageBase page = doc.getPages().get(i); // 獲取頁面中的所有圖像信息 PdfImageInfo[] imageInfos = imageHelper.getImagesInfo(page); // 遍歷圖像信息 for (int j = 0; j < imageInfos.length; j++) { // 獲取特定圖像信息 PdfImageInfo imageInfo = imageInfos[j]; // 獲取圖像 BufferedImage image = imageInfo.getImage(); File file = new File(String.format("output/Image-%d.png",m)); m++; // 以 PNG 格式保存圖像文件 ImageIO.write(image, "PNG", file); } } // 清理資源 doc.dispose(); } }
效果圖:
Spire.PDF 提供的 PdfTableExtractor 類能智能識別表格邊界,生成的 PdfTable 對象保持原始結構,并支持使用 PdfTable.getText() 方法獲取具體單元格中的文本。該功能特別適用于從財務報表等結構化文檔提取數據。
以下 Java 代碼將 PDF 中的每一個表格導出為單獨的TXT文件:
import com.spire.pdf.PdfDocument; import com.spire.pdf.utilities.PdfTable; import com.spire.pdf.utilities.PdfTableExtractor; import java.io.FileWriter; public class ExtractTableData { public static void main(String[] args) throws Exception { // 創建一個 PdfDocument 對象 PdfDocument doc = new PdfDocument(); // 加載 PDF 文檔 doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf"); // 創建一個 PdfTableExtractor 實例 PdfTableExtractor extractor = new PdfTableExtractor(doc); // 初始化表計數器 int tableCounter = 1; // 遍歷 PDF 中的頁面 for (int pageIndex = 0; pageIndex < doc.getPages().getCount(); pageIndex++) { // 從當前頁面提取表格到 PdfTable 數組 PdfTable[] tableLists = extractor.extractTable(pageIndex); // 如果找到任何表格 if (tableLists != null && tableLists.length > 0) { // 遍歷數組中的表格 for (PdfTable table : tableLists) { // 為當前表格創建一個 StringBuilder StringBuilder builder = new StringBuilder(); // 遍歷當前表格中的行 for (int i = 0; i < table.getRowCount(); i++) { // 遍歷當前表格中的列 for (int j = 0; j < table.getColumnCount(); j++) { // 從當前表格單元格中提取數據并附加到 StringBuilder String text = table.getText(i, j); builder.append(text).append(" | "); } builder.append("\r\n"); } // 為每個表格寫入一個單獨的 .txt 文檔 FileWriter fw = new FileWriter("output/Table_" + tableCounter + ".txt"); fw.write(builder.toString()); fw.flush(); fw.close(); // 增加表計數器 tableCounter++; } } } // 清理資源 doc.dispose(); } }
效果圖:
從掃描版的 PDF 提取文本需要依賴 OCR 引擎,如Spire.OCR for Java。本解決方案首先使用 Spire.PDF 的渲染引擎將頁面轉換為圖片,然后通過 Spire.OCR 的 OcrScanner 類從圖片識別文字。通過這兩步法,可以有效地將實體文檔掃描轉換為可編輯文本,且支持多種語言。
步驟 1. 安裝Spire.OCR 并配置環境
OcrScanner scanner = new OcrScanner(); configureOptions.setModelPath("D:\\win-x64"); // 模型路徑
步驟 2. 將掃描的 PDF 轉換為文本
此代碼示例將掃描 PDF 的每一頁轉換為圖像文件,應用 OCR 提取文本,并將結果保存到文本文件中。
import com.spire.ocr.OcrException; import com.spire.ocr.OcrScanner; import com.spire.ocr.ConfigureOptions; import com.spire.pdf.PdfDocument; import com.spire.pdf.graphics.PdfImageType; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class ExtractTextFromScannedPdf { public static void main(String[] args) throws IOException, OcrException { // 創建 OcrScanner 類的實例 OcrScanner scanner = new OcrScanner(); // 配置掃描器 ConfigureOptions configureOptions = new ConfigureOptions(); configureOptions.setModelPath("D:\\win-x64"); // 設置模型路徑 configureOptions.setLanguage("Chinese"); // 設置語言 // 應用配置選項 scanner.ConfigureDependencies(configureOptions); // 加載 PDF 文檔 PdfDocument doc = new PdfDocument(); doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf"); // 準備臨時目錄 String tempDirPath = "temp"; new File(tempDirPath).mkdirs(); // 創建臨時目錄 StringBuilder allText = new StringBuilder(); // 遍歷所有頁面 for (int i = 0; i < doc.getPages().getCount(); i++) { // 將頁面轉換為圖像 BufferedImage bufferedImage = doc.saveAsImage(i, PdfImageType.Bitmap); String imagePath = tempDirPath + File.separator + String.format("page_%d.png", i); ImageIO.write(bufferedImage, "PNG", new File(imagePath)); // 執行 OCR scanner.scan(imagePath); String pageText = scanner.getText().toString(); allText.append(String.format("\n--- PAGE %d ---\n%s\n", i + 1, pageText)); // 清理臨時圖像 new File(imagePath).delete(); } // 將所有提取的文本保存到文件 Path outputTxtPath = Paths.get("output", "extracted_text.txt"); Files.write(outputTxtPath, allText.toString().getBytes()); // 關閉文檔 doc.close(); System.out.println("文本已提取到 " + outputTxtPath); } }
效果圖:
在數字化轉型的浪潮中,PDF 文檔作為企業信息的重要載體,其高效處理能力已成為現代開發者的核心競爭力。通過本指南介紹的 Spire.PDF for Java 技術方案,開發者可以輕松應對各類 PDF 數據提取需求,從簡單的文本和圖片提取 到復雜的 表格數據解析 ,再到 掃描文檔的智能識別 ,幫助企業更好地管理和利用文檔信息。
此外,Spire.PDF for Java 提供了一套全面的工具和功能,使開發者能夠構建起完整的文檔自動化處理能力。無論是自動化生成報告、批量處理文檔,還是提取特定數據以供分析,開發者都能通過靈活的 API 和豐富的示例代碼,快速實現這些功能。這不僅提高了工作效率,也減少了人工操作的錯誤率,為企業帶來了更高的生產力和競爭優勢。
結合 Spire.PDF for Java 和 Spire.OCR for Java 即可實現:先將 PDF 頁面轉為圖片,再進行 OCR 識別。
強烈推薦 Spire.PDF for Java,因為它功能多樣且易于使用。它支持文本、圖像、表格的提取以及 OCR 集成。
是的, Spire.PDF支持提取:
該庫提供 PdfDocumentInformation 類獲取元數據,以及用于獲取附件( PdfAttachmentCollection )和超鏈接( PdfUriAnnotation )的方法。
使用 Spire.PDF for Java,您可以從 PDF 中提取表格數據,然后通過 Spire.XLS for Java 無縫導出到 Excel(XLSX)或 CSV 格式。
————————————————————————————————————————
關于慧都科技:
慧都科技是一家行業數字化解決方案公司,長期專注于軟件、油氣與制造行業。公司基于深入的業務理解與管理洞察,以系統化的業務建模驅動技術落地,幫助企業實現智能化運營與長期競爭優勢。在軟件工程領域,我們提供開發控件、研發管理、代碼開發、部署運維等軟件開發全鏈路所需的產品,提供正版授權采購、技術選型、個性化維保等服務,幫助客戶實現技術合規、降本增效與風險可控。慧都科技E-iceblue的官方授權代理商,提供E-iceblue系列產品免費試用,咨詢,正版銷售等于一體的專業化服務。E-iceblue旗下Spire系列產品是國產文檔處理領域的優秀產品,支持國產化信創,幫助企業高效構建文檔處理的應用程序。
歡迎下載|體驗更多E-iceblue產品
獲取更多信息請咨詢 ;技術交流Q群(125237868)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網