如何在 C# | IronOcr 中讀取多 FramePage GIF 和 TIFFs

如何在 C# 中讀取多幀/多頁 TIFF 和 GIF 圖片

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

IronOCR能夠使用 C# 中的 OcrImageInput 類別和單一 Read 方法呼叫從多幀 TIFF 和 GIF 檔案中讀取文本,無需複雜的配置即可支援單頁和多頁文件。

TIFF(標籤影像檔案格式)是一種高品質影像格式。 它支援無損壓縮,因此適用於掃描文件和專業攝影。

GIF(圖形交換格式)用於簡單的網頁圖像和動畫。 它支援無損壓縮和有損壓縮,並且可以在單一檔案中包含動畫。

快速入門:使用多幀 TIFF 或 GIF 檔案進行 OCR 識別

使用IronOCR ,透過 OcrImageInputRead 調用,從多頁 TIFF 或動畫 GIF 中讀取文字。

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

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

    using IronOcr;
    var result = new IronTesseract().Read(new OcrImageInput("Potter.tiff"));
  3. 部署到您的生產環境進行測試

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

    arrow pointer


如何讀取單幀或多幀TIFF檔?

若要執行 OCR,請實例化 IronTesseract 類別。 使用 using 語句建立 OcrImageInput 物件。 此建構函數支援單幀和多幀 TIFF 和 TIF 格式。 使用 Read 方法對導入的 TIFF 檔案執行 OCR。

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-read-tiff.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Import TIFF/TIF
using var imageInput = new OcrImageInput("Potter.tiff");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel
Windows 相片檢視器和 Visual Studio 顯示文件內容 - 非 TIFF 處理示範

IronOCR為何能自動處理多幀TIFF檔?

IronOCR會自動偵測並處理 TIFF 檔案中的所有訊框。載入多頁 TIFF 文件時,該程式庫會遍歷每一幀,對每一頁套用 OCR,並將結果合併到一個 OcrResult 物件中。 這種自動處理方式省去了複雜的逐幀處理邏輯。 有關多頁 TIFF 範例,請參閱我們的多頁 TIFF OCR 教學

對於效能需求極高的應用,實施快速 OCR 配置以優化處理速度。 此函式庫的 多執行緒 Tesseract OCR功能可確保高效的批次處理。

讀取多頁 TIFF 文件時會發生什麼?

處理多頁 TIFF 文件時, IronOCR:

  1. 有效率地將所有影格載入到記憶體中。
  2. 如果已配置,則對每一幀套用預處理。
  3. 依序對頁面執行OCR識別
    4.匯總結果並保持頁面順序

查看單一頁面結果:

using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

// Import multi-page TIFF
using var imageInput = new OcrImageInput("multipage-document.tiff");

// Perform OCR
OcrResult result = ocrTesseract.Read(imageInput);

// Access results by page
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}:");
    Console.WriteLine(page.Text);
    Console.WriteLine("---");
}
using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

// Import multi-page TIFF
using var imageInput = new OcrImageInput("multipage-document.tiff");

// Perform OCR
OcrResult result = ocrTesseract.Read(imageInput);

// Access results by page
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}:");
    Console.WriteLine(page.Text);
    Console.WriteLine("---");
}
$vbLabelText   $csharpLabel

對於長時間運行的操作,實作中止令牌以支援取消功能。

如何分別處理單一TIFF幀?

由於記憶體限制,需要單獨處理幀,或對特定頁面套用不同的影像校正濾鏡

using IronOcr;
using System.Drawing;

// Configure OCR for individual frame processing
IronTesseract ocrTesseract = new IronTesseract();

// Load and split TIFF frames
using var multiFrameInput = new OcrImageInput("document.tiff");

// Process specific pages (0-indexed)
var pageIndices = new[] { 0, 2, 4 }; // Process pages 1, 3, and 5 only

foreach (int pageIndex in pageIndices)
{
    using var pageInput = new OcrImageInput("document.tiff", PageIndices: new[] { pageIndex });

    // Apply page-specific preprocessing if needed
    pageInput.DeNoise();
    pageInput.Deskew();

    var pageResult = ocrTesseract.Read(pageInput);
    Console.WriteLine($"Page {pageIndex + 1} text: {pageResult.Text}");
}
using IronOcr;
using System.Drawing;

// Configure OCR for individual frame processing
IronTesseract ocrTesseract = new IronTesseract();

// Load and split TIFF frames
using var multiFrameInput = new OcrImageInput("document.tiff");

// Process specific pages (0-indexed)
var pageIndices = new[] { 0, 2, 4 }; // Process pages 1, 3, and 5 only

foreach (int pageIndex in pageIndices)
{
    using var pageInput = new OcrImageInput("document.tiff", PageIndices: new[] { pageIndex });

    // Apply page-specific preprocessing if needed
    pageInput.DeNoise();
    pageInput.Deskew();

    var pageResult = ocrTesseract.Read(pageInput);
    Console.WriteLine($"Page {pageIndex + 1} text: {pageResult.Text}");
}
$vbLabelText   $csharpLabel

有關進階配置,請參閱Tesseract 詳細配置指南

如何讀取GIF檔進行OCR辨識?

建構 OcrImageInput 時,請指定 GIF 檔案路徑。 構造函數導入影像。 對於動畫 GIF, IronOCR會提取所有影格並將它們作為單獨的圖像進行處理。

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-read-gif.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Import GIF
using var imageInput = new OcrImageInput("Potter.gif");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel

對於初學者來說,我們簡單的 C# OCR Tesseract 教程涵蓋了基本的 OCR 操作。

為什麼 OCR 可以辨識動態 GIF 圖片?

動畫 GIF 包含多個圖像影格。 IronOCR會擷取每一幀並分別處理。 這適用於: -螢幕錄製內容儲存為 GIF 格式

  • 帶有文字說明的動畫教學
  • GIF格式的多步驟文檔
    -舊系統將報表匯出為 GIF 格式

每一幀的文字都被提取出來,並按時間順序排列。 對於存在方向問題的影像, IronOCR可以自動修復影像方向

何時應該使用 GIF 格式進行 OCR 辨識?

GIF 的調色板顏色有限(256 色),但在以下領域很常見:

1.網路內容:線上教學與文檔
2.舊版匯出:使用 GIF 格式的舊版應用程式
3.螢幕截圖:螢幕截圖工具預設使用 GIF 格式。
4.檔案體積小:當儲存空間有限時

為了獲得最佳效果,請使用IronOCR 的 DPI 設定來優化 GIF。 應用OCR影像優化濾波器以提高辨識率。

GIF OCR 常見問題有哪些?

GIF 檔案存在一些挑戰:

1.顏色限制:256色限制會影響文字清晰度
2.壓縮偽影:抖動會幹擾識別
3.低解析度:通常以 72-96 DPI 保存

應用預處理過濾器:

using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

// Import GIF with preprocessing
using var imageInput = new OcrImageInput("low-quality.gif");

// Apply filters to improve quality
imageInput.ToGrayScale();      // Convert to grayscale
imageInput.Contrast(1.5);       // Increase contrast
imageInput.DeNoise();           // Remove noise
imageInput.EnhanceResolution(); // Upscale for better OCR

// Perform OCR with enhanced image
OcrResult result = ocrTesseract.Read(imageInput);
using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

// Import GIF with preprocessing
using var imageInput = new OcrImageInput("low-quality.gif");

// Apply filters to improve quality
imageInput.ToGrayScale();      // Convert to grayscale
imageInput.Contrast(1.5);       // Increase contrast
imageInput.DeNoise();           // Remove noise
imageInput.EnhanceResolution(); // Upscale for better OCR

// Perform OCR with enhanced image
OcrResult result = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel

對於具有挑戰性的影像,請參閱使用 Tesseract 修復低品質掃描

如何指定掃描區域以獲得更好的效能?

在建構 OcrImageInput 時,請新增 CropRectangle 以定義 OCR 的特定區域。 這樣可以提高處理大型文件的效能。 請參閱我們的OCR 區域指南

:path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

// Add image
using var imageInput = new OcrImageInput("Potter.tiff", ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output the result to console
Console.WriteLine(ocrResult.Text);
$vbLabelText   $csharpLabel

為什麼裁切可以提高OCR辨識效能?

在照片檢視器中開啟的 TIFF 文件附有偵錯控制台,顯示 OCR 過程已完成。

作物透過以下方式提高產量:

1.處理區域縮小:像素越少,執行速度越快
2.聚焦檢測:OCR 針對特定區域進行最佳化
3.記憶體效率:較小的工作集可減少 RAM 使用量
4.消除噪音:排除無關區域

處理特定區域的速度比處理整個頁面快 5-10 倍。 為了進行即時監控,實施進度追蹤

何時應該使用區域特定 OCR?

使用特定區域的OCR功能:

-表單處理:提取特定字段
-頁首/頁尾:存取文件元數據
-表格:重點放在數據表
-批次處理:類似文件工作流程

表單欄位範例:

using IronOcr;
using IronSoftware.Drawing;

// Define regions for form fields
var nameFieldRegion = new Rectangle(100, 50, 300, 40);
var dateFieldRegion = new Rectangle(100, 100, 200, 40);
var amountFieldRegion = new Rectangle(100, 150, 150, 40);

// Create OCR instance
IronTesseract ocr = new IronTesseract();

// Extract from each region
using var tiffInput = new OcrImageInput("form.tiff");

// Process each field
var name = ocr.Read(new OcrImageInput("form.tiff", ContentArea: nameFieldRegion)).Text.Trim();
var date = ocr.Read(new OcrImageInput("form.tiff", ContentArea: dateFieldRegion)).Text.Trim();
var amount = ocr.Read(new OcrImageInput("form.tiff", ContentArea: amountFieldRegion)).Text.Trim();

Console.WriteLine($"Name: {name}");
Console.WriteLine($"Date: {date}");
Console.WriteLine($"Amount: {amount}");
using IronOcr;
using IronSoftware.Drawing;

// Define regions for form fields
var nameFieldRegion = new Rectangle(100, 50, 300, 40);
var dateFieldRegion = new Rectangle(100, 100, 200, 40);
var amountFieldRegion = new Rectangle(100, 150, 150, 40);

// Create OCR instance
IronTesseract ocr = new IronTesseract();

// Extract from each region
using var tiffInput = new OcrImageInput("form.tiff");

// Process each field
var name = ocr.Read(new OcrImageInput("form.tiff", ContentArea: nameFieldRegion)).Text.Trim();
var date = ocr.Read(new OcrImageInput("form.tiff", ContentArea: dateFieldRegion)).Text.Trim();
var amount = ocr.Read(new OcrImageInput("form.tiff", ContentArea: amountFieldRegion)).Text.Trim();

Console.WriteLine($"Name: {name}");
Console.WriteLine($"Date: {date}");
Console.WriteLine($"Amount: {amount}");
$vbLabelText   $csharpLabel

如何計算正確的裁剪矩形?

使用以下公式計算作物矩形:

1.目視檢查:使用影像編輯器取得座標
2.程序化檢測:利用 IronOCR 的視覺功能
3.範本:為類似文件定義一次區域

使用文字高亮功能進行調試和視覺化:

using IronOcr;
using IronSoftware.Drawing;

// Test different regions to find optimal coordinates
var testRegions = new[] 
{ 
    new Rectangle(100, 100, 200, 50), 
    new Rectangle(100, 160, 200, 50), 
    new Rectangle(100, 220, 200, 50) 
};

IronTesseract ocr = new IronTesseract();

foreach (var region in testRegions)
{
    using var input = new OcrImageInput("document.tiff", ContentArea: region);
    var result = ocr.Read(input);

    // Save highlighted region for visual verification
    result.SaveAsHighlightedImage($"region_{region.X}_{region.Y}.png");
}
using IronOcr;
using IronSoftware.Drawing;

// Test different regions to find optimal coordinates
var testRegions = new[] 
{ 
    new Rectangle(100, 100, 200, 50), 
    new Rectangle(100, 160, 200, 50), 
    new Rectangle(100, 220, 200, 50) 
};

IronTesseract ocr = new IronTesseract();

foreach (var region in testRegions)
{
    using var input = new OcrImageInput("document.tiff", ContentArea: region);
    var result = ocr.Read(input);

    // Save highlighted region for visual verification
    result.SaveAsHighlightedImage($"region_{region.X}_{region.Y}.png");
}
$vbLabelText   $csharpLabel

對於複雜文檔,使用IronOCR 的結果物件來識別文字位置並建立動態裁切區域。 對於具有挑戰性的影像, OCR 影像 DPI 優化指南可協助實現最佳解析度。

IronOCR提供了一個簡化的 API,可以自動處理幀提取和處理。 無論是處理單頁文件或複雜的多幀文件,企業文件工作流程都適用同樣的簡單語法。

常見問題解答

如何使用 C# 從多畫面 TIFF 檔案中擷取文字?

IronOCR 為使用 OcrImageInput 類讀取多畫面 TIFF 檔案提供了簡單的解決方案。只需實體化 IronTesseract,並透過您的 TIFF 檔案路徑,呼叫 OcrImageInput 的讀取方法。函式庫會自動偵測並處理 TIFF 檔案中的所有畫格,並將結果整合為單一的 OcrResult 物件。

OCR 函式庫是否同時支援單頁和多頁 TIFF 文件?

是的,IronOCR 可透過相同的 OcrImageInput 構建器,無縫處理單格與多格 TIFF 格式。這個函式庫會自動迭代多頁文件中的每一格,將 OCR 應用於每一頁,而不需要複雜的逐格處理邏輯。

我可以在動畫 GIF 檔案上執行 OCR 嗎?

IronOCR 支援使用與 TIFF 檔案相同的 OcrImageInput 類別,從 GIF 檔案(包括動畫 GIF)讀取文字。該函式庫只需呼叫一次 Read 方法即可處理 GIF 影像,因此可輕鬆地從靜態與動態 GIF 格式中擷取文字。

TIFF 和 GIF OCR 支援哪些壓縮格式?

IronOCR 可處理支援無損壓縮的 TIFF 檔案,是掃描文件和專業攝影的理想選擇。對於 GIF 檔案,該函式庫可處理無損和有損的壓縮格式,包括那些將動畫儲存在單一檔案中的格式。

如何優化大型多頁 TIFF 文件的 OCR 效能?

IronOCR 提供快速的 OCR 配置選項和多執行緒 Tesseract OCR 功能,適用於效能要求嚴苛的應用程式。這些功能可確保在處理大型多頁 TIFF 文件時進行有效率的批次處理,大幅縮短處理時間。

我可以在 TIFF 或 GIF 影像中定義特定的閱讀區域嗎?

是的,IronOCR 允許您在 TIFF 或 GIF 影像中指定裁切區域,以定義讀取區域。此功能有助於將 OCR 處理集中在影像的特定部分,當您只需要特定區域的文字時,可提高精確度和效能。

Curtis Chau
技術作家

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

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

準備好開始了嗎?
Nuget 下載 5,556,263 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronOcr
執行範例 觀看您的圖片變成可搜尋的文字。