跳至頁尾內容
產品對比

使用 iTextSharp 和 IronPDF 在 C# 中從 PDF 中提取文本

從 PDF 文件中提取文字是現代軟體專案中的常見需求——從處理發票到為搜尋引擎挖掘內容。 開發人員需要可靠的函式庫,這些函式庫不僅能提供準確的結果,還能在 C# .NET 應用程式中提供高效的整合體驗。 有些開發人員使用 OCR(光學字元辨識)工具從掃描的文件和影像中提取數據,但有時這項工作需要強大的文字擷取工具。

但是市面上有許多 PDF 庫,選擇合適的工具可能會讓人不知所措。 在討論中常提到的兩個函式庫是iTextSharpIronPDF 。 兩者都可以從 PDF 中提取文本,但在可用性、支援、效能和定價方面存在顯著差異。 本文將對這兩個庫進行比較,透過不同的程式碼範例來示範它們如何處理文字擷取,以幫助您決定哪個庫最適合您的專案。

IronPDF 和 iTextSharp 庫概述

iTextSharp長期以來一直是 .NET 平台流行的開源 PDF 程式庫,提供強大的工具來產生、操作和提取內容。 作為基於 Java 的 iText 的 C# 移植版,它提供了對 PDF 結構的深度控制——非常適合高級用戶。 然而,這種靈活性也伴隨著陡峭的學習曲線和授權限制; 商業用途通常需要付費許可才能避免承擔 AGPL 協議的義務。

IronPDF是一款現代化的、對開發者友善的 PDF 程式庫,專為 .NET 而建置。 它透過直覺的 API、清晰的文件和快速回應的支持,簡化了文字擷取等常見任務。 借助此工具,開發人員可以輕鬆地從 PDF 文件中提取圖像和文本,創建新的 PDF 文件,實現 PDF 安全性等等。

與 iTextSharp 不同,IronPDF 避免了複雜的底層結構,讓您更快、更有效率地工作。 無論你是處理單頁文件還是數百個 PDF 文件,它都能讓事情變得簡單。

它還得到了積極的維護,定期更新,並採用簡單的許可模式,包括免費試用和團隊和個人開發者的經濟實惠的計劃。

安裝並使用 IronPDF

可以透過在 NuGet 套件管理器控制台中執行以下命令,使用 NuGet 安裝IronPDF:

Install-Package IronPdf

或者,您也可以透過解決方案畫面的 NuGet 套件管理器進行安裝。 為此,請導覽至"工具 > NuGet 套件管理員 > 管理解決方案的 NuGet 套件"。 然後,搜尋 IronPDF,點擊"安裝"。

使用 IronPDF 從 PDF 文件中提取文本

安裝完成後,提取文字非常簡單:

using IronPdf;

// Load the PDF document
var pdf = PdfDocument.FromFile("invoice.pdf");

// Extract text from the PDF
string extractedText = pdf.ExtractAllText();

// Output the extracted text
Console.WriteLine(extractedText);
using IronPdf;

// Load the PDF document
var pdf = PdfDocument.FromFile("invoice.pdf");

// Extract text from the PDF
string extractedText = pdf.ExtractAllText();

// Output the extracted text
Console.WriteLine(extractedText);
$vbLabelText   $csharpLabel

注意:此方法讀取整個 PDF 文件並按閱讀順序返回文本,與傳統庫相比,可節省數小時的解析時間。

無需處理編碼、內容流或手動解析。 IronPDF 會在內部處理所有這些操作,只需極少的設定即可提供清晰準確的輸出。之後,您可以輕鬆地將提取的文字儲存到新的文字檔案中,以便進行進一步的處理或使用。

安裝 iTextSharp PDF 函式庫

若要下載 iTextSharp 的 PDF 產生核心包,請使用下列命令:

Install-Package iTextSharp

您也可以透過"解決方案的套件管理器"畫面安裝 iTextSharp。 為此,您首先需要前往"工具"下拉式選單,然後找到"NuGet 套件管理員 > 管理解決方案的 NuGet 套件"。 然後,只需搜尋 iTextSharp,然後點擊"安裝"即可。

使用 iTextSharp 從 PDF 文件中提取文本

以下是從單一 PDF 頁面中提取文字的範例:

using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

// Define the path to your PDF
string path = "sample.pdf";

// Open the PDF reader and document
using (PdfReader reader = new PdfReader(path))
using (PdfDocument pdf = new PdfDocument(reader))
{
    // Use a simple text extraction strategy
    var strategy = new SimpleTextExtractionStrategy();

    // Extract text from the first page
    string pageText = PdfTextExtractor.GetTextFromPage(pdf.GetPage(1), strategy);

    // Output the extracted text
    Console.WriteLine(pageText);
}
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

// Define the path to your PDF
string path = "sample.pdf";

// Open the PDF reader and document
using (PdfReader reader = new PdfReader(path))
using (PdfDocument pdf = new PdfDocument(reader))
{
    // Use a simple text extraction strategy
    var strategy = new SimpleTextExtractionStrategy();

    // Extract text from the first page
    string pageText = PdfTextExtractor.GetTextFromPage(pdf.GetPage(1), strategy);

    // Output the extracted text
    Console.WriteLine(pageText);
}
$vbLabelText   $csharpLabel

這個範例展示了 iTextSharp 的功能,但請注意,執行一個簡單的任務需要冗長的語句和額外的物件。

詳細比較

現在我們已經介紹了安裝和基本用法,接下來讓我們更深入地比較一下這兩個庫如何處理文字提取,方法是讓它們從多頁 PDF 文件中提取文字。

進階範例:使用 IronPDF 從頁面範圍中提取文本

IronPDF 支援對頁面選擇進行精細控制,並支援佈局感知文字擷取。

using IronPdf;

// Load the PDF document
var pdf = PdfDocument.FromFile("longPdf.pdf");

// Define the page numbers to extract text from
int[] pages = new[] { 2, 3, 4 };

// Extract text from the specified pages
var text = pdf.ExtractTextFromPages(pages);

// Output the extracted text
Console.WriteLine("Extracted text from pages 2, 3, and 4:\n" + text);
using IronPdf;

// Load the PDF document
var pdf = PdfDocument.FromFile("longPdf.pdf");

// Define the page numbers to extract text from
int[] pages = new[] { 2, 3, 4 };

// Extract text from the specified pages
var text = pdf.ExtractTextFromPages(pages);

// Output the extracted text
Console.WriteLine("Extracted text from pages 2, 3, and 4:\n" + text);
$vbLabelText   $csharpLabel

進階範例:使用 iTextSharp 從頁面範圍中提取文本

在 iTextSharp 中,您需要手動指定頁面範圍並使用 PdfTextExtractor 擷取文字:

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
using System.Text;

// Load the PDF document
PdfReader reader = new PdfReader("longPdf.pdf");
StringBuilder textBuilder = new StringBuilder();

// Extract text from pages 2–4
for (int i = 2; i <= 4; i++)
{
    string pageText = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());
    textBuilder.AppendLine(pageText);
}

// Output the extracted text
Console.WriteLine(textBuilder.ToString());

// Close the PDF reader
reader.Close();
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
using System.Text;

// Load the PDF document
PdfReader reader = new PdfReader("longPdf.pdf");
StringBuilder textBuilder = new StringBuilder();

// Extract text from pages 2–4
for (int i = 2; i <= 4; i++)
{
    string pageText = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());
    textBuilder.AppendLine(pageText);
}

// Output the extracted text
Console.WriteLine(textBuilder.ToString());

// Close the PDF reader
reader.Close();
$vbLabelText   $csharpLabel

代碼比較摘要

IronPDF 和 iTextSharp 都能夠進行進階 PDF 文字擷取,但它們的方法在複雜性和清晰度方面存在顯著差異:

IronPDF讓內容簡潔易用。 其高級方法(例如 PdfDocument.ExtractAllText())允許您以最少的設定提取結構化內容。程式碼簡潔明了,即使是 PDF 處理新手也能輕鬆實現。

另一方面, iTextSharp需要對 PDF 結構有更深入的了解。 擷取文字需要設定自訂渲染監聽器、手動管理頁面並逐行解析佈局資料。雖然功能強大,但程式碼更冗長且不夠直觀,因此對於大多數 .NET 專案而言,IronPDF 是一個更快、更容易維護的選擇。

但我們的比較並未就此結束。 接下來,我們來看看這兩個函式庫在其他方面的比較情況。

詳細比較:IronPDF 與 iTextSharp

在評估 .NET 的 PDF 文字擷取程式庫時,開發人員通常會權衡簡單性、效能和長期支援之間的平衡。 讓我們來分析一下IronPDFiTextSharp在實際使用上的比較情況,特別是從 C# 中的 PDF 中提取文字的情況。

1.易用性

IronPDF:簡潔現代的 API

IronPDF 注重開發者體驗。 透過 NuGet 安裝非常方便,語法也很直覺:

using IronPdf;

// Load the PDF
var pdf = PdfDocument.FromFile("sample.pdf");

// Extract all text from every page
string extractedText = pdf.ExtractAllText();

// Output the extracted text
Console.WriteLine(extractedText);
using IronPdf;

// Load the PDF
var pdf = PdfDocument.FromFile("sample.pdf");

// Extract all text from every page
string extractedText = pdf.ExtractAllText();

// Output the extracted text
Console.WriteLine(extractedText);
$vbLabelText   $csharpLabel

IronPDF 對 ExtractAllText() 等簡單方法呼叫背後的複雜性進行了抽象,而無需樣板程式碼或解析邏輯。

iTextSharp:更詳細、更低級

iTextSharp 需要手動解析每一頁,並且需要花費更多精力來提取純文字。

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
using System.Text;

// Load the PDF
var reader = new PdfReader("sample.pdf");
StringBuilder text = new StringBuilder();

for (int i = 1; i <= reader.NumberOfPages; i++)
{
    text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
}

// Output the extracted text
Console.WriteLine(text.ToString());
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
using System.Text;

// Load the PDF
var reader = new PdfReader("sample.pdf");
StringBuilder text = new StringBuilder();

for (int i = 1; i <= reader.NumberOfPages; i++)
{
    text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
}

// Output the extracted text
Console.WriteLine(text.ToString());
$vbLabelText   $csharpLabel

開發人員需要手動遍歷頁面,這會增加程式碼量,如果出現特殊情況,可能會發生錯誤。

2.性能和可靠性

  • IronPDF基於現代渲染引擎(Chromium)構建,因此非常適合現代 PDF,即使是那些嵌入字體、旋轉文字和多種佈局的 PDF 也能輕鬆應對。 文字擷取能夠感知佈局,並更自然地保留間距。

  • iTextSharp雖然功能強大,但在處理複雜的格式時可能會遇到困難。 混合方向或非標準編碼的 PDF 檔案可能會產生亂碼或順序錯誤的文字。

3.成本和許可

特徵IronPDFiTextSharp
許可證類型商業版(提供免費試用)AGPL(免費)/ 商業版(付費)
定價透明度公開定價和永久許可複雜的層級和重新分配規則
支援專屬支援團隊社區支持(除非獲得許可)
在閉源應用程式中使用是的(持有駕照)不適用於 AGPL

請注意如果您正在建立商業或專有軟體, iTextSharp AGPL將強制您開源您的程式碼或支付商業許可證費用。 IronPDF為閉源專案提供更靈活的許可模式。

4.開發者支援和文檔

  • IronPDF:提供現代化的文件、影片教學和快速的工單支援。

  • iTextSharp:文檔齊全,但除非你是付費用戶,否則免費支援有限。

5.跨館匯總

標準IronPDFiTextSharp
簡單高 - 單行文字擷取中等難度 – 手動頁面迭代
表現快速現代的解析處理複雜或掃描的PDF檔案速度較慢
商業友善是的,沒有AGPL限制AGPL限制了其在閉源應用程式中的使用。
支援與文檔敬業、反應迅速社區依賴
.NET Core 支援Full滿的

結論

在 C# 中從 PDF 中提取文字時,IronPDF 和 iTextSharp 都是功能強大的工具,但它們服務於不同類型的開發人員。 如果您正在尋找一款現代化、易於整合、擁有出色支援、積極維護的功能和無縫佈局保留的解決方案,那麼IronPDF無疑是最佳選擇。 它縮短了開發時間,提供了直覺的 API,並且在 .NET 框架內的各種應用程式中都能很好地運行,從 Web 應用程式到企業系統。

另一方面,對於已經融入其生態系統的開發者或需要對文字擷取策略進行精細控制的開發者來說, iTextSharp仍然是一個強而有力的選擇。 然而,其較陡峭的學習曲線和缺乏商業支援可能會減慢需要快速擴展或維護乾淨程式碼庫的專案。

對於重視速度、清晰度和可靠結果的 .NET 開發人員來說, IronPDF 提供了一條面向未來的發展道路。 無論您是建立文件自動化工具、搜尋引擎或內部儀表板,IronPDF 的強大功能和效能都將幫助您更快、更聰明地交付成果。

立即下載 IronPDF免費試用版,親身體驗它的不同之處。 透過免費試用版和對開發者友善的 API,您可以在幾分鐘內上手。

請注意iTextSharp 是其各自所有者的註冊商標。 本網站與iTextSharp無任何關聯,亦未獲得其認可或贊助。所有產品名稱、標誌和品牌均為其各自所有者的財產。 文中比較僅供參考,反映的是撰寫本文時可公開取得的資訊。

常見問題解答

如何使用現代函式庫在 C# 中從 PDF 中提取文字?

您可以使用 IronPDF 透過其PdfDocument.ExtractAllText()等方法從 PDF 中提取文本,這簡化了過程,即使對於複雜的文檔佈局也能確保準確的結果。

IronPDF 和 iTextSharp 在文字擷取上有哪些主要差異?

與 iTextSharp 相比,IronPDF 提供更直覺的 API 和更快的效能。它旨在高效處理複雜的佈局,並提供了一個現代化的渲染引擎,簡化了文字擷取;而 iTextSharp 則需要更多的手動編碼和對 PDF 結構的理解。

IronPDF如何處理從掃描文件中提取文字的問題?

IronPDF 支援從標準 PDF 文件中提取文字。對於掃描文檔,可以整合 IronOCR 等 OCR 工具,從 PDF 中的圖像中提取文字。

將 IronPDF 用於商業項目有哪些許可優勢?

IronPDF 提供清晰的商業許可模式,不受 AGPL 限制,因此非常適合閉源應用程式。它為個人開發者和團隊都提供價格合理的方案。

IronPDF 是否適合從佈局複雜的 PDF 檔案中提取文字?

是的,IronPDF 具有佈局感知文本提取功能,非常適合從具有複雜佈局的 PDF 文件中提取文本,確保格式和間距得到準確保留。

如何將PDF處理庫整合到我的C#專案中?

您可以透過 NuGet 安裝 IronPDF,將其整合到您的 C# 專案中。在 NuGet 套件管理器控制台中執行命令Install-Package IronPdf即可將其新增至您的專案。

使用 IronPDF 的開發人員可以獲得哪些支援和資源?

IronPDF 透過現代化的文件、影片教學和快速的工單式協助提供全面的支持,使其成為對開發人員友善的工具,可整合到 .NET 專案中。

IronPDF 能否從 PDF 文件中的特定頁面提取文字?

是的,IronPDF 允許您使用PdfDocument.ExtractTextFromPages()等方法從特定頁面提取文本,從而對文本提取過程進行精細控制。

為什麼IronPDF推薦給PDF文字提取新手開發者?

IronPDF 易於使用,整合流程簡單明了,並提供詳細的支援資源,因此推薦給新開發人員使用,即使是不熟悉 PDF 處理的人也能輕鬆上手。

IronPDF 相較於其他函式庫有哪些效能優勢?

IronPDF 採用現代渲染引擎,優化了文字擷取速度,並能高效處理複雜的 PDF 佈局,因此效能更佳,比許多其他程式庫都要快。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。