如何在 C# 中從 PDF 中提取嵌入文本和圖像

Extract Embedded Text and Images from PDFs in C

This article was translated from English: Does it need improvement?
Translated
View the article in English

使用 C# 中的簡單方法調用,即可從 PDF 文件中提取文字內容和圖像。 檢索嵌入內容,以便在其他應用程式中進行編輯、分析或重複使用。

文字和圖像提取功能可以從 PDF 文件中提取文字內容和圖形元素。 存取和重複使用內容,進行編輯、搜尋、將文字轉換為其他格式或儲存圖像以供重複使用。 無論您是需要使用 C# 解析 PDF進行資料分析、將內容轉換為可搜尋格式,還是擷取視覺元素進行存檔, IronPDF都提供了全面的擷取工​​具。

使用IronPDF提取文字和圖像。 將提取的影像儲存到磁碟或將其轉換為其他格式,然後再嵌入到新文件中。 這種靈活性支援需要內容轉換的工作流程,例如將 PDF 轉換為 HTML或重新利用提取的圖像。

快速入門:使用IronPDF擷取文字與影像

只需幾行程式碼即可從 PDF 中提取文字和圖像。 本快速入門指南示範如何從 PDF 文件中擷取嵌入內容,以便進行內容再利用和分析。 使用 IronPDF 的簡化解決方案,提取文字進行編輯或儲存圖像以供進一步使用。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 複製並運行這段程式碼。

    var pdf = new IronPdf.PdfDocument("sample.pdf");  
    string text = pdf.ExtractAllText();  
    var images = pdf.ExtractAllImages();
  3. 部署到您的生產環境進行測試

    今天就在您的專案中開始使用免費試用IronPDF

    arrow pointer


如何從PDF文件中提取文字?

從新渲染的和已有的PDF文件中提取文字。 使用 ExtractAllText 方法從文件中擷取嵌入文字。 該方法傳回一個包含 PDF 中所有文字的字串。 頁面之間以四個連續的換行符號分隔。 本範例使用從維基百科網站渲染的範例 PDF 檔案

處理包含國際語言和 UTF-8 字元的PDF 檔案時, IronPDF能夠保持正確的編碼和字元表示。 這樣可以確保正確顯示非拉丁文字和特殊字元。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text.cs
using IronPdf;
using System.IO;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text
string text = pdf.ExtractAllText();

// Export the extracted text to a text file
File.WriteAllText("extractedText.txt", text);
$vbLabelText   $csharpLabel
維基百科頁面與提取的純文字並排顯示,展示了文字擷取過程。

如何提取帶有精確座標的文字?

取得每個 PDF 頁面中文字行和字元的座標。 從 PDF 中選擇一頁,並存取 LinesCharacters 屬性。 座標包括 BottomLeft 值,表示文字位置。 此功能可保留空間佈局並進行文字位置分析。

對於需要在 C# 中讀取具有位置感知能力的 PDF 文件的開發人員來說,坐標提取提供了維護文件結構和實現高級文字分析所需的資料。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text-by-line-character.cs
using IronPdf;
using System.IO;
using System.Linq;

// Open PDF from file
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text by lines
var lines = pdf.Pages[0].Lines;

// Extract text by characters
var characters = pdf.Pages[0].Characters;

File.WriteAllLines("lines.txt", lines.Select(l => $"at Y={l.BoundingBox.Bottom:F2}: {l.Contents}"));
$vbLabelText   $csharpLabel
分割畫面顯示維基百科主頁和擷取的文字文件,Y 座標顯示解析後的內容。

如何從PDF文件中提取圖像?

使用 ExtractAllImages 方法從文件中提取所有嵌入的圖像。 此方法傳回影像,作為 AnyBitmap 物件清單。 我們使用同一文件提取圖像,並將它們匯出到"images"資料夾。 此功能支援影像歸檔、內容遷移以及將 PDF 頁面柵格化為圖像以進行進一步處理。

提取的影像可保持原始質量,並可儲存為多種格式,包括 PNG、JPEG 和 BMP。對於雲端儲存工作流程,可將此功能與Azure Blob 儲存集成,以進行影像管理

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-image.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract images
var images = pdf.ExtractAllImages();

for(int i = 0; i < images.Count; i++)
{
    // Export the extracted images
    images[i].SaveAs($"images/image{i}.png");
}
$vbLabelText   $csharpLabel
執行影像擷取工具後,檔案總管以縮圖檢視顯示擷取的 19 張 PNG 影像。

影像擷取有哪些不同的方法?

除了 ExtractAllImages 方法之外,還可以使用 ExtractAllBitmapsExtractAllRawImages 方法來擷取影像資訊。 ExtractAllBitmaps 傳回一個 AnyBitmap 的列表,而 ExtractAllRawImages 擷取所有影像並將其作為原始位元組數組傳回 (byte[])。

當在記憶體中處理影像資料或與需要位元組數組輸入的系統整合時,ExtractAllRawImages 方法效果很好。 對於將 PDF 匯出到記憶體流的場景,原始位元組數組格式提供了最佳的靈活性。


如何從特定的PDF頁面中擷取內容?

從單一或多個指定頁面中提取文字和圖像。 使用 ExtractTextFromPageExtractTextFromPages 方法從一個或多個頁面中提取文字。 對於圖像,請使用 ExtractImagesFromPageExtractImagesFromPages 方法。

這種精細的控制有助於處理大型文檔,其中只有特定部分包含相關內容。 它還支援分割 PDF 並提取單個頁面進行單獨處理的功能。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text-single-multiple.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text from page 1
string textFromPage1 = pdf.ExtractTextFromPage(0);

int[] pages = new[] { 0, 2 };

// Extract text from pages 1 & 3
string textFromPage1_3 = pdf.ExtractTextFromPages(pages);
$vbLabelText   $csharpLabel

何時應該從特定頁面而不是所有頁面提取資料?

從特定頁面提取資訊的情況:

  • 處理包含特定部分相關數據的大型 PDF 文件
  • 實現能夠獨立處理頁面的工作流程
  • 建立需要增量內容顯示或處理的應用程式
  • 透過僅處理所需頁面來優化記憶體使用
  • 建立頁面特定的搜尋或索引功能

我應該了解哪些性能方面的注意事項?

擷取PDF內容時,請考慮以下效能因素:
-記憶體使用:從大型文件中逐頁提取頁面,以最大限度地減少記憶體消耗
-處理時間:在適當情況下,對多頁擷取作業使用並行處理。
檔案大小:包含高解析度影像的大型 PDF 檔案需要更長的處理時間
-儲存:規劃足夠的磁碟空間,用於提取大量高解析度影像。
-多執行緒: IronPDF支援多執行緒操作,以提高多核心系統的效能。

為了獲得最佳的記憶體 PDF 效能,請使用記憶體流操作來減少磁碟 I/O 開銷。

常見問題解答

如何用 C# 從 PDF 文件中提取文字?

使用 IronPDF 的 ExtractAllText 方法從 PDF 文件中提取內嵌文字。該方法會返回一個包含 PDF 中所有文字的字串,其中的頁面以四個連續的換行符分開。IronPDF 對國際語言和 UTF-8 字元保持適當的編碼。

我可以程式化地從 PDF 檔案中擷取影像嗎?

是的,IronPDF 提供 ExtractAllImages 方法來擷取 PDF 文件中的圖形元素。您可以將擷取的圖片儲存至磁碟,或在嵌入新文件前將其轉換為其他格式。

PDF 內容萃取的主要用途為何?

IronPDF 的擷取工具支援各種工作流程,包括解析 PDF 以進行資料分析、將內容轉換為可搜尋格式、擷取視覺元素以進行歸檔,以及重新利用內容進行編輯或轉換為 HTML 等其他格式。

提取 PDF 內容需要多少行代碼?

使用 IronPDF,您只需幾行代碼就能提取文字和圖像。只需載入 PDF 文件,並呼叫 ExtractAllText() 進行文字萃取,或呼叫 ExtractAllImages() 進行影像萃取。

我可以從特定頁面擷取內容,而非整個文件嗎?

是的,IronPDF 允許您指定要從中提取文字和圖像的特定頁面,讓您精確控制從 PDF 文件中檢索哪些內容。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 17,803,474 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在滾動嗎?

想快速取得證據? PM > Install-Package IronPdf
運行範例看著你的HTML程式碼變成PDF檔。