翻譯|使用教程|編輯:吉煒煒|2025-07-04 09:59:48.253|閱讀 144 次
概述:本指南將介紹如何使用 Spire.PDF for Java 讀取 PDF 文檔 ,涵蓋從可搜索的 PDF 提取文本 、表格和 圖片 ,以及通過 OCR 技術(shù)從掃描版 PDF 中讀取文本。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在數(shù)據(jù)驅(qū)動的現(xiàn)代開發(fā)中,高效處理 PDF 文檔已成為 Java 開發(fā)者不可或缺的核心能力。無論是處理各類發(fā)票掃描件、業(yè)務分析報告,還是包含豐富圖表的技術(shù)文檔,掌握 Java 版的 PDF 解析技術(shù)都將大幅提升數(shù)據(jù)處理效率,充分釋放文檔中的商業(yè)價值。
E-iceblue旗下Spire系列產(chǎn)品,是文檔處理組件領(lǐng)域的佼佼者,支持國產(chǎn)化信創(chuàng)。本指南將介紹如何使用Spire.PDF for Java 讀取 PDF 文檔 ,涵蓋從可搜索的 PDF 提取文本 、表格和 圖片 ,以及通過 OCR 技術(shù)從掃描版 PDF 中讀取文本。
加入Spire技術(shù)交流QQ群(125237868),與更多開發(fā)者一起提升文檔開發(fā)技能。
選擇適合的庫是成功讀取 PDF 的關(guān)鍵。Spire.PDF 以其穩(wěn)定性和豐富功能脫穎而出,支持文本提取、圖片獲取、表格解析及 OCR 集成,其直觀 API 和完善的教程對新手和專家同樣友好。
開始前請從官網(wǎng)下載 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 以機器可讀的格式存儲文本,便于高效提取內(nèi)容。Spire.PDF 中的 PdfTextExtractor 類可直接獲取可搜索PDF的頁面文本,而 PdfTextExtractOptions 能靈活設(shè)置提取參數(shù),包括文本布局處理策略和指定提取區(qū)域。
以下示例展示如何使用 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 { // 創(chuàng)建一個 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); // 創(chuàng)建一個 PdfTextExtractor 對象 PdfTextExtractor textExtractor = new PdfTextExtractor(page); // 創(chuàng)建一個 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()); } // 關(guān)閉文檔 doc.close(); } }
效果圖:
對于包含圖形的 PDF,PdfImageHelper 類能精準提取所有嵌入式圖片。通過 PdfImageInfo 對象可將圖片保存為標準圖像文件,特別適用于產(chǎn)品圖冊等視覺內(nèi)容重要的文檔。
以下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 { // 創(chuàng)建一個 PdfDocument 對象 PdfDocument doc = new PdfDocument(); // 加載 PDF 文檔 doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf"); // 創(chuàng)建一個 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 對象保持原始結(jié)構(gòu),并支持使用 PdfTable.getText() 方法獲取具體單元格中的文本。該功能特別適用于從財務報表等結(jié)構(gòu)化文檔提取數(shù)據(jù)。
以下 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 { // 創(chuàng)建一個 PdfDocument 對象 PdfDocument doc = new PdfDocument(); // 加載 PDF 文檔 doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf"); // 創(chuàng)建一個 PdfTableExtractor 實例 PdfTableExtractor extractor = new PdfTableExtractor(doc); // 初始化表計數(shù)器 int tableCounter = 1; // 遍歷 PDF 中的頁面 for (int pageIndex = 0; pageIndex < doc.getPages().getCount(); pageIndex++) { // 從當前頁面提取表格到 PdfTable 數(shù)組 PdfTable[] tableLists = extractor.extractTable(pageIndex); // 如果找到任何表格 if (tableLists != null && tableLists.length > 0) { // 遍歷數(shù)組中的表格 for (PdfTable table : tableLists) { // 為當前表格創(chuàng)建一個 StringBuilder StringBuilder builder = new StringBuilder(); // 遍歷當前表格中的行 for (int i = 0; i < table.getRowCount(); i++) { // 遍歷當前表格中的列 for (int j = 0; j < table.getColumnCount(); j++) { // 從當前表格單元格中提取數(shù)據(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(); // 增加表計數(shù)器 tableCounter++; } } } // 清理資源 doc.dispose(); } }
效果圖:
從掃描版的 PDF 提取文本需要依賴 OCR 引擎,如Spire.OCR for Java。本解決方案首先使用 Spire.PDF 的渲染引擎將頁面轉(zhuǎn)換為圖片,然后通過 Spire.OCR 的 OcrScanner 類從圖片識別文字。通過這兩步法,可以有效地將實體文檔掃描轉(zhuǎn)換為可編輯文本,且支持多種語言。
步驟 1. 安裝Spire.OCR 并配置環(huán)境
OcrScanner scanner = new OcrScanner(); configureOptions.setModelPath("D:\\win-x64"); // 模型路徑
步驟 2. 將掃描的 PDF 轉(zhuǎn)換為文本
此代碼示例將掃描 PDF 的每一頁轉(zhuǎn)換為圖像文件,應用 OCR 提取文本,并將結(jié)果保存到文本文件中。
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 { // 創(chuàng)建 OcrScanner 類的實例 OcrScanner scanner = new OcrScanner(); // 配置掃描器 ConfigureOptions configureOptions = new ConfigureOptions(); configureOptions.setModelPath("D:\\win-x64"); // 設(shè)置模型路徑 configureOptions.setLanguage("Chinese"); // 設(shè)置語言 // 應用配置選項 scanner.ConfigureDependencies(configureOptions); // 加載 PDF 文檔 PdfDocument doc = new PdfDocument(); doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf"); // 準備臨時目錄 String tempDirPath = "temp"; new File(tempDirPath).mkdirs(); // 創(chuàng)建臨時目錄 StringBuilder allText = new StringBuilder(); // 遍歷所有頁面 for (int i = 0; i < doc.getPages().getCount(); i++) { // 將頁面轉(zhuǎn)換為圖像 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)); // 執(zhí)行 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()); // 關(guān)閉文檔 doc.close(); System.out.println("文本已提取到 " + outputTxtPath); } }
效果圖:
在數(shù)字化轉(zhuǎn)型的浪潮中,PDF 文檔作為企業(yè)信息的重要載體,其高效處理能力已成為現(xiàn)代開發(fā)者的核心競爭力。通過本指南介紹的 Spire.PDF for Java 技術(shù)方案,開發(fā)者可以輕松應對各類 PDF 數(shù)據(jù)提取需求,從簡單的文本和圖片提取 到復雜的 表格數(shù)據(jù)解析 ,再到 掃描文檔的智能識別 ,幫助企業(yè)更好地管理和利用文檔信息。
此外,Spire.PDF for Java 提供了一套全面的工具和功能,使開發(fā)者能夠構(gòu)建起完整的文檔自動化處理能力。無論是自動化生成報告、批量處理文檔,還是提取特定數(shù)據(jù)以供分析,開發(fā)者都能通過靈活的 API 和豐富的示例代碼,快速實現(xiàn)這些功能。這不僅提高了工作效率,也減少了人工操作的錯誤率,為企業(yè)帶來了更高的生產(chǎn)力和競爭優(yōu)勢。
結(jié)合 Spire.PDF for Java 和 Spire.OCR for Java 即可實現(xiàn):先將 PDF 頁面轉(zhuǎn)為圖片,再進行 OCR 識別。
強烈推薦 Spire.PDF for Java,因為它功能多樣且易于使用。它支持文本、圖像、表格的提取以及 OCR 集成。
是的, Spire.PDF支持提取:
該庫提供 PdfDocumentInformation 類獲取元數(shù)據(jù),以及用于獲取附件( PdfAttachmentCollection )和超鏈接( PdfUriAnnotation )的方法。
使用 Spire.PDF for Java,您可以從 PDF 中提取表格數(shù)據(jù),然后通過 Spire.XLS for Java 無縫導出到 Excel(XLSX)或 CSV 格式。
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是一家行業(yè)數(shù)字化解決方案公司,長期專注于軟件、油氣與制造行業(yè)。公司基于深入的業(yè)務理解與管理洞察,以系統(tǒng)化的業(yè)務建模驅(qū)動技術(shù)落地,幫助企業(yè)實現(xiàn)智能化運營與長期競爭優(yōu)勢。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購、技術(shù)選型、個性化維保等服務,幫助客戶實現(xiàn)技術(shù)合規(guī)、降本增效與風險可控。慧都科技E-iceblue的官方授權(quán)代理商,提供E-iceblue系列產(chǎn)品免費試用,咨詢,正版銷售等于一體的專業(yè)化服務。E-iceblue旗下Spire系列產(chǎn)品是國產(chǎn)文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,支持國產(chǎn)化信創(chuàng),幫助企業(yè)高效構(gòu)建文檔處理的應用程序。
歡迎下載|體驗更多E-iceblue產(chǎn)品
獲取更多信息請咨詢 ;技術(shù)交流Q群(125237868)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:慧都網(wǎng)