如何從 PDF 中提取嵌入的文本和圖像

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

查克尼思·賓

提取嵌入的文本和圖片涉及檢索文檔中的文字內容和圖形元素。此過程允許用戶存取和重新利用內容進行編輯、搜索或將文本轉換為其他格式以及保存圖片以供重用或分析。

若要從 PDF 提取文本和圖片,請使用 IronPdf。提取的圖片可以保存到磁碟,或者轉換成另一種圖片格式並嵌入新渲染的文檔中。


C# NuGet 程式庫用于 PDF

安裝與 NuGet

Install-Package IronPdf
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于 PDF

安裝與 NuGet

Install-Package IronPdf
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronPDFNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變PDF。

C# NuGet 程式庫用于 PDF nuget.org/packages/IronPdf/
Install-Package IronPdf

請考慮安裝 IronPDF DLL 直接下載並手動安裝到您的專案或GAC表單: IronPdf.zip

手動安裝到您的項目中

下載DLL

提取文字範例

文字提取可以在新渲染和現有的 PDF 文件上進行。使用 ExtractAllText 方法從文件中提取嵌入的文字。該方法將返回一個包含所給 PDF 所有文字的字串。頁面之間用四個連續的 Environment.NewLinesPages 分隔。我們來使用一個 範例 PDF 從維基百科網站上渲染的內容。

: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);
Imports IronPdf
Imports System.IO

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text
Private text As String = pdf.ExtractAllText()

' Export the extracted text to a text file
File.WriteAllText("extractedText.txt", text)
VB   C#
提取的文字

按行和字符提取文本

在每個 PDF 頁面內,可以檢索文本行和字符的坐標。首先,從 PDF 中選擇一個頁面並訪問 LinesCharacters 屬性。這些坐標以上、右、下、左的值表示文本的位置。

: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}"));
Imports IronPdf
Imports System.IO
Imports System.Linq

' Open PDF from file
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text by lines
Private lines = pdf.Pages(0).Lines

' Extract text by characters
Private characters = pdf.Pages(0).Characters

File.WriteAllLines("lines.txt", lines.Select(Function(l) $"at Y={l.BoundingBox.Bottom:F2}: {l.Contents}"))
VB   C#
按行和字符提取的文本

提取圖片範例

使用 ExtractAllImages 方法來提取文檔中嵌入的所有圖片。該方法會將圖片以 AnyBitmap 對象列表的形式返回。使用我們上一個範例中的同一個文檔,我們提取了圖片並將它們導出到 'images' 文件夾中。

: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");
}
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract images
Private images = pdf.ExtractAllImages()

For i As Integer = 0 To images.Count - 1
	' Export the extracted images
	images(i).SaveAs($"images/image{i}.png")
Next i
VB   C#
提取的圖像

除了上述的 ExtractAllImages 方法,使用者還可以使用 ExtractAllBitmapsExtractAllRawImages 方法從文件中提取圖片信息。雖然 ExtractAllBitmaps 方法會返回一個 AnyBitmap 的列表,如程式碼範例所示,但 ExtractAllRawImages 方法則會從 PDF 文件中提取所有圖片,並以位元組數組的形式返回原始數據。 (位元組 []).


在特定頁面提取文本和圖像

文本和圖像提取都可以在單個或多個指定頁面上進行。使用 ExtractTextFromPageExtractTextFromPages 方法來從單個頁面或多個頁面提取文本。要提取圖像,請使用 ExtractImagesFromPageExtractImagesFromPages 方法。

: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);
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text from page 1
Private textFromPage1 As String = pdf.ExtractTextFromPage(0)

Private pages() As Integer = { 0, 2 }

' Extract text from pages 1 & 3
Private textFromPage1_3 As String = pdf.ExtractTextFromPages(pages)
VB   C#

查克尼思·賓

軟體工程師

Chaknith 是開發者界的夏洛克福爾摩斯。他第一次意識到自己可能有個軟體工程的未來,是在他為了娛樂而參加程式挑戰的時候。他的重點是 IronXL 和 IronBarcode,但他也引以為豪的是,他幫助客戶解決所有產品的問題。Chaknith 利用他與客戶直接對話中獲得的知識,以進一步改進產品。他的實際反饋超越了 Jira 工單,並支持產品開發、文件撰寫和行銷,以提升客戶的整體體驗。不在公司時,他通常在學習機器學習、寫程式和徒步旅行。