如何在 OCR C# 中閱讀 PDFS

如何使用 IronOCR 用 C# 閱讀 PDF。

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

IronOCR 只需一行代碼即可讓您使用 C# 從 PDF 檔案中擷取文字,支援所有 PDF 版本,並透過其基於 Tesseract 的引擎提供精確的 OCR 結果。

PDF 是 "Portable Document Format" 的縮寫。它是由 Adobe 開發的一種檔案格式,可保留任何來源文件的字型、影像、圖形和排版,而不受用來建立這些文件的應用程式和平台所影響。 PDF 文件通常用於以一致的格式共用和檢視文檔,而無需考慮開啟它們的軟體或硬體。 IronOCR 可處理各種版本的 PDF 文件,從較舊的 PDF 1.0 規格到最新的 PDF 2.0 標準。

快速入門:幾秒鐘內完成 PDF 檔案的 OCR 識別

使用 IronOCR 快速配置 OCR,方法是建構一個 OcrPdfInput 指向您的 PDF,然後呼出 Read 。 本範例示範使用 IronOCR 從 PDF 擷取文字。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronOCR

    PM > Install-Package IronOcr

  2. 複製並運行這段程式碼。

    using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronOCR,免費試用!
    arrow pointer


如何閱讀整個 PDF 檔案? 首先實體化 `IronTesseract` 類別以執行 OCR。 然後,使用"using"語句建立一個`OcrPdfInput`對象,並將PDF檔案路徑傳遞給它。 最後,使用`Read`方法執行 OCR。 此方法同時適用於掃描的 PDF (以影像為基礎) 和可搜尋的 PDF (以文字為基礎),適合 [ 從各種 PDF 類型擷取文字](https://ironsoftware.com/csharp/ocr/examples/csharp-pdf-ocr/)。 ```csharp /* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */ using IronOcr; // Instantiate IronTesseract IronTesseract ocrTesseract = new IronTesseract(); // Add PDF using var pdfInput = new OcrPdfInput("Potter.pdf"); // Perform OCR OcrResult ocrResult = ocrTesseract.Read(pdfInput); // Access the extracted text string extractedText = ocrResult.Text; System.Console.WriteLine(extractedText); ```
分割視圖顯示格式化的哈利波特文字 vs 擷取的純文字輸出,示範 PDF 文字擷取
大多數情況下,無需指定 DPI 屬性。 但是,在建構`OcrPdfInput`時提供較高的 DPI 值可以提高讀取精度。 預設 DPI 設定通常足以處理大多數標準 PDF 文件,但專業文件可能需要調整。

何時應該調整 DPI 設定? 在處理低解析度掃描文件或包含小文字的 PDF 時,DPI(每英吋點數)設定變得至關重要。 為達到最佳效果,請考慮[調整 DPI 設定](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/): - 處理低於 200 DPI 的掃描文件 - 處理歷史或檔案 PDF - 處理複雜的版面或小字體 - 遇到預設設定的精確度問題 對於大多數的 OCR 作業,建議使用 300 的 DPI,而對於具有非常小的文字或複雜細節的文件,則可能需要使用 600 DPI。

除了 PDF 之外,IronOCR 還支援哪些檔案格式? IronOCR 為 PDF 以外的眾多檔案格式提供全面支援。 您可以[處理各種格式的影像](https://ironsoftware.com/csharp/ocr/how-to/input-images/),包括: - JPEG/JPG 適用於標準照片 - PNG 適用於具有透明度的影像 - TIFF 適用於多頁文件 - BMP 用於未壓縮的影像 - 簡單圖形的 GIF 此外,IronOCR 可以直接從記憶體處理 [ PDF 串流](https://ironsoftware.com/csharp/ocr/examples/ocr-for-pdf-stream/),適用於網路應用程式和雲端服務。 ### 使用 PDF 內容類型 在處理 PDF 時,您可以透過指定內容類型來優化效能。 `PdfContents` 枚舉允許您針對特定內容: ```csharp // For text-only PDFs (faster processing) var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text); // For image-only PDFs (scanned documents) var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images); // For mixed content (default) var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages); ```

如何閱讀 PDF 中的特定頁面? 從 PDF 文件讀取特定頁面時,請指定要匯入的頁面索引編號。 要做到這一點,在構建 `OcrPdfInput` 時,將頁面索引清單傳給 `PageIndices` 參數。 請注意,頁面索引採用從零開始的編號。 在處理只有特定頁面包含相關資訊的大型文件時,此功能尤其有用。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf-pages.cs ```

為什麼頁碼從零開始? 零基索引是 C# 和大多數程式語言的標準慣例。 這表示第一頁是索引 0,第二頁是索引 1,以此類推。 這種與陣列索引的一致性使開發人員更容易以程式化的方式處理頁面集合。 從人類可讀的頁碼 (1, 2, 3...) 轉換為索引時,只需從頁碼中減去 1 即可。

如何閱讀非連續頁面? 使用 IronOCR 可以直接閱讀非連續頁面。 只需將所需的頁面索引以任何順序加入您的清單即可。 舉例來說 ```csharp // Read pages 1, 3, 5, and 10 (using zero-based indices) List pageIndices = new List() { 0, 2, 4, 9 }; // Or use LINQ for range-based selection var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList(); ``` OCR 引擎將只處理指定的頁面,大幅提升大型文件的效能。

如果我指定了無效的頁碼會怎樣? 如果您指定的頁面索引超過文件的頁數,IronOCR 將會產生異常。 在處理前實施錯誤處理或驗證頁數。 您可以在執行 OCR 之前檢查 PDF 的總頁數,以確保您的索引有效。

如何 OCR PDF 的特定區域? <!--說明:顯示逐步過程的截圖 --> 透過縮小閱讀範圍,可以顯著提高閱讀效率。 為了達到此目的,請指定需要閱讀的匯入 PDF 的精確區域。 在下面的程式碼範例中,IronOCR 只專注於擷取章節編號和標題。 此技術類似於[定義圖像的 OCR 區域](https://ironsoftware.com/csharp/ocr/how-to/ocr-region-of-an-image/),可同時提昇速度與精確度。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-specific-region.cs ```

如何確定正確的矩形座標?
PDF,紅色矩形選擇章節標題進行 OCR 處理,Visual Studio 主控台顯示執行完成
尋找正確的座標需要瞭解 PDF 的座標系統。 `Rectangle` 建構器會接受四個參數:`X`(水平位置)、`Y`(垂直位置)、`Width` 和 `Height`。 所有測量單位均為像素。 具有尺規功能的 PDF 檢視器或除錯工具等工具可協助辨識精確的座標。 另外,也可以使用小幅度調整的試誤法來完善您的選擇範圍。 如需更精確的區域定義,您可以利用 [highlight texts for debugging](https://ironsoftware.com/csharp/ocr/examples/highlight-texts-for-debugging/) 功能來直觀顯示正在處理的區域。

我可以在一次操作中指定多個區域嗎? 是的,IronOCR 在單一 OCR 作業中支援多個區域。 只需在陣列中加入多個 `Rectangle` 物件: ```csharp Rectangle[] scanRegions = { new Rectangle(50, 50, 200, 100), // Header region new Rectangle(50, 200, 500, 300), // Main content region new Rectangle(50, 550, 200, 50) // Footer region }; ``` 每個區域將單獨處理,並按指定的順序合併結果。

為什麼要使用特定區域的 OCR 而不是全頁? 特定區域的 OCR 具備多項優點: - **效能**:處理較小區域的速度明顯較快 - **準確性**:專注於特定區域,可減少無關內容的雜訊 - **結構**:更可靠地從表單和表格中萃取資料 - **成本效益**:更少的處理時間意味著更低的計算成本 這種方法在處理結構化文件(如發票、表單或報告等資料出現在可預測位置的文件)時特別有價值。 對於複雜的文件結構,請探索[讀取文件中的表格](https://ironsoftware.com/csharp/ocr/how-to/read-table-in-document/)的專門表格擷取技術。

有哪些先進的 PDF OCR 功能? IronOCR 提供 PDF 處理的其他功能,這些功能超越了基本的文字擷取。 您可以 [從掃描的文件中建立可搜尋的 PDF 文件](https://ironsoftware.com/csharp/ocr/how-to/searchable-pdf/),在保留原始版面的同時加入文字層,以便搜尋和複製。 該函式庫也支援 [多執行緒,以加快處理大型 PDF 資料集的速度](https://ironsoftware.com/csharp/ocr/how-to/async/)。 對於希望在 .NET 應用程式中開始使用 OCR 的開發人員而言,探索 [ 簡單 OCR 實例](https://ironsoftware.com/csharp/ocr/examples/simple-csharp-ocr-tesseract/)可為瞭解 IronOCR 的功能和最佳實作打下堅實的基礎。 ### 處理複雜的 PDF 情境 在處理具有挑戰性的 PDF 文件時,IronOCR 提供了多種進階功能: 1.**影像預處理**:套用 [ 影像篩選器](https://ironsoftware.com/csharp/ocr/how-to/image-quality-correction/),以提高文字的清晰度 2.**多種語言**:同時處理包含 [ 多種語言](https://ironsoftware.com/csharp/ocr/how-to/ocr-multiple-languages/)的文件 3.**自訂組態**:針對特定文件類型微調 OCR 設定 4.**匯出選項**:以各種格式儲存結果,包括可搜尋的 PDF 和 [hOCR HTML](https://ironsoftware.com/csharp/ocr/how-to/html-hocr-export/) 這些功能使 IronOCR 成為滿足企業級 PDF 處理需求的全面解決方案。

常見問題解答

如何用 C# 從 PDF 檔案中萃取文字?

只需一行代碼,您就可以使用 IronOCR 從 PDF 檔案中提取文字。只要建立一個 IronTesseract 範例,並使用 OcrPdfInput 的 Read 方法即可:`using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));`.IronOCR 可處理掃描的 PDF (以影像為基礎) 和可搜尋的 PDF (以文字為基礎)。

哪些 PDF 版本支援文字擷取?

IronOCR 支援所有 PDF 版本,從較舊的 PDF 1.0 規格到最新的 PDF 2.0 標準。OCR 引擎以 Tesseract 技術為基礎,無論您使用的 PDF 版本為何,都能確保文字擷取的精確度。

我可以只閱讀 PDF 中的特定頁面,而非整個文件嗎?

是的,IronOCR 透過提供頁面索引,可讓您讀取 PDF 中的特定頁面。您可以使用 OcrPdfInput 物件指定要從哪些頁面提取文字,而不是處理整個文件,這使得 OCR 處理大型文件的效率更高。

在 PDF 檔案上進行 OCR 的最基本工作流程是什麼?

IronOCR 的最小工作流程包括 5 個步驟:1) 下載 C# 函式庫;2) 準備您的 PDF 文件;3) 使用 PDF 檔案路徑建立 OcrPdfInput 物件;4) 使用讀取方法執行 OCR;5) 可選擇指定頁面索引以進行選擇性讀取。

我應該在何時調整 PDF OCR 的 DPI 設定?

雖然 IronOCR 的預設 DPI 設定對大多數標準 PDF 都很有效,但在處理低解析度掃描文件(低於 200 DPI)或包含小文字的 PDF 時,您應該考慮調整 DPI。在 OcrPdfInput 結構中,較高的 DPI 設定可大幅提升特殊文件的閱讀精確度。

OCR 引擎是否能同時處理掃描和可搜尋的 PDF?

是的,IronOCR 可有效處理掃描的 PDF 檔案(以影像為基礎)和可搜尋的 PDF 檔案(以文字為基礎)。基於 Tesseract 的引擎可自動處理不同的 PDF 類型,使其成為從各種 PDF 格式中萃取文字的多功能工具,而無需採用不同的方法。

柯蒂斯·週
技術撰稿人

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

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

經審核
傑夫·弗里茨
傑弗裡·T·弗里茨
.NET 社群團隊首席專案經理
Jeff 同時也是 .NET 和 Visual Studio 團隊的首席專案經理。他是 .NET Conf 虛擬會議系列的執行製片人,並主持每週兩次的開發者直播節目“Fritz and Friends”,在節目中他會與觀眾一起探討技術並編寫程式碼。 Jeff 也為包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit 在內的微軟大型開發者活動撰寫研討會、簡報並策劃內容。
準備好開始了嗎?
Nuget 下載 5,299,091 | 版本: 2025.12 剛剛發布