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

如何在 C# 中讀取多格/頁 TIFF 和 GIFs

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

IronOCR 可使用 OcrImageInput 類和單一 Read 方法呼叫,在 C# 中從多格 TIFF 和 GIF 檔案讀取文字,支援單頁和多頁文件,無需複雜的設定。

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

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

as-heading:2(快速入門:使用多格 TIFF 或 GIF 檔案進行 OCR)

使用 OcrImageInputRead 呼叫,使用 IronOCR 從多頁 TIFF 或動畫 GIF 中讀取文字。

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

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

    PM > Install-Package IronOcr

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

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

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


我該如何讀取單格或多格 TIFF 檔案?

<! -- 螢幕截圖示範如何讀取單一或多格的 tiff 檔案? 在 IronPDF --> <!--說明:顯示逐步過程的截圖 -->

若要執行 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);
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Import TIFF/TIF
Private imageInput = New OcrImageInput("Potter.tiff")
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel
Windows Photo Viewer 與 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("---");
}
Imports IronOcr

Dim ocrTesseract As New IronTesseract()

' Import multi-page TIFF
Using imageInput As New OcrImageInput("multipage-document.tiff")

    ' Perform OCR
    Dim result As OcrResult = ocrTesseract.Read(imageInput)

    ' Access results by page
    For Each page In result.Pages
        Console.WriteLine($"Page {page.PageNumber}:")
        Console.WriteLine(page.Text)
        Console.WriteLine("---")
    Next
End Using
$vbLabelText   $csharpLabel

對於長時間的作業,實施 abort token 以取得取消功能。

如何分開處理個別的 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}");
}
Imports IronOcr
Imports System.Drawing

' Configure OCR for individual frame processing
Dim ocrTesseract As New IronTesseract()

' Load and split TIFF frames
Using multiFrameInput As New OcrImageInput("document.tiff")

    ' Process specific pages (0-indexed)
    Dim pageIndices As Integer() = {0, 2, 4} ' Process pages 1, 3, and 5 only

    For Each pageIndex As Integer In pageIndices
        Using pageInput As New OcrImageInput("document.tiff", PageIndices:=New Integer() {pageIndex})

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

            Dim pageResult = ocrTesseract.Read(pageInput)
            Console.WriteLine($"Page {pageIndex + 1} text: {pageResult.Text}")
        End Using
    Next
End Using
$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);
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Import GIF
Private imageInput = New OcrImageInput("Potter.gif")
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

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

為什麼 OCR 可以在動畫 GIF 上運作?

動畫 GIF 包含多個圖像框架。 IronOCR 擷取每一格的內容並分別處理。 這對於

  • 螢幕錄製儲存為 GIF
  • 附有文字說明的動畫教學
  • GIF格式的多步說明文件
  • Legacy 系統以 GIF 形式匯出報告

我們會擷取每一格的文字,並按時間順序整理。 對於有方向問題的圖片,IronOCR 可以 自動修正圖片方向

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

GIF 的調色板顏色有限(256 色),但在下列情況中很常見:

1.網路內容:線上教學與文件 2.Legacy 匯出:使用 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);
Imports IronOcr

Dim ocrTesseract As New IronTesseract()

' Import GIF with preprocessing
Using imageInput As 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
    Dim result As OcrResult = ocrTesseract.Read(imageInput)
End Using
$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);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Specify crop region
Private scanRegion As New Rectangle(800, 200, 900, 400)

' Add image
Private imageInput = New OcrImageInput("Potter.tiff", ContentArea:= scanRegion)
' Perform OCR
Private ocrResult As 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}");
Imports IronOcr
Imports IronSoftware.Drawing

' Define regions for form fields
Dim nameFieldRegion As New Rectangle(100, 50, 300, 40)
Dim dateFieldRegion As New Rectangle(100, 100, 200, 40)
Dim amountFieldRegion As New Rectangle(100, 150, 150, 40)

' Create OCR instance
Dim ocr As New IronTesseract()

' Extract from each region
Using tiffInput As New OcrImageInput("form.tiff")
    ' Process each field
    Dim name As String = ocr.Read(New OcrImageInput("form.tiff", ContentArea:=nameFieldRegion)).Text.Trim()
    Dim date As String = ocr.Read(New OcrImageInput("form.tiff", ContentArea:=dateFieldRegion)).Text.Trim()
    Dim amount As String = ocr.Read(New OcrImageInput("form.tiff", ContentArea:=amountFieldRegion)).Text.Trim()

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

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

使用裁剪矩形計算:

1.視覺檢驗:使用影像編輯器進行座標 2.程式偵測:使用 IronOCR 的視覺功能 3.範本:為類似文件定義一次區域

使用 highlight texts 功能進行調試和可視化:

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");
}
Imports IronOcr
Imports IronSoftware.Drawing

' Test different regions to find optimal coordinates
Dim testRegions = {
    New Rectangle(100, 100, 200, 50),
    New Rectangle(100, 160, 200, 50),
    New Rectangle(100, 220, 200, 50)
}

Dim ocr As New IronTesseract()

For Each region In testRegions
    Using input As New OcrImageInput("document.tiff", ContentArea:=region)
        Dim result = ocr.Read(input)

        ' Save highlighted region for visual verification
        result.SaveAsHighlightedImage($"region_{region.X}_{region.Y}.png")
    End Using
Next
$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 bots,將他對技術的熱愛與創意結合。

準備好開始了嗎?
Nuget 下載 5,384,824 | 版本: 2026.2 剛剛發布