如何讀取多幀頁GIF和TIFF | IronOCR

如何在C#中讀取多幀/頁的TIFF與GIF

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

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

TIFF(標記影像文件格式)是一種高品質影像的格式。 它支援無損壓縮,非常適合掃描文件和專業攝影。

GIF(圖形交換格式)用於簡單的網頁影像和動畫。 它同時支援無損和有損壓縮,可以包含單一文件中的多幅動畫。

快速入門:使用多幀TIFF或GIF文件進行OCR

使用IronOCR的Read呼叫讀取多頁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類別。 使用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圖片檢視器和Visual Studio顯示文件內容 - 非TIFF處理展示

IronOCR為何自動處理多幀TIFF?

IronOCR自動檢測並處理TIFF文件中的所有幀。當載入多頁TIFF文件時,該程式庫遍歷每一幀,在每頁上應用OCR,並將結果整合成一個OcrResult物件。 這種自動處理消除了複雜的逐幀處理邏輯。 有關多頁TIFF的範例,請參閱我們的多頁TIFF OCR教學

對於性能關鍵的應用,實施快速OCR設定以優化處理速度。 該程式庫的多執行緒Tesseract OCR功能確保了高效的批量處理。

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

在處理多頁TIFF文件時,IronOCR:

  1. 高效載入所有幀到記憶體中
  2. 應用預處理到每一幀(如果已設定)
  3. 依次進行OCR在每頁上
  4. 聚合結果保持頁面順序

存取個別頁面的結果:

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-3.cs
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

對於長時間操作,實施停止token以實現取消功能。

如何單獨處理TIFF幀?

單獨處理幀以便受記憶體限制或對特定頁面應用不同的影像校正濾鏡

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-4.cs
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", 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", 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格式製作多步驟文件
  • 舊系統匯出報告為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保存

應用預處理濾鏡:

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-6.cs
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修復低品質掃描

如何指定掃描區域以提高效能?

在構造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:

  • 表單處理:提取特定欄位
  • 標題/頁尾:存取文件中繼資料
  • 表格:專注於資料表
  • 批量處理:相似文件工作流程

表單字段範例:

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-8.cs
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. 模板:對相似文件定義一次區域

使用強調文字功能進行除錯和可視化:

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-9.cs
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);

    // Save highlighted region for visual verification
    input.HighlightTextAndSaveAsImages(ocr, $"region_{region.X}_{region.Y}.png", ResultHighlightType.Word);
}
Imports IronOcr
Imports IronSoftware.Drawing

' Test different regions to find optimal coordinates
Dim testRegions = New Rectangle() { 
    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)
        ' Save highlighted region for visual verification
        input.HighlightTextAndSaveAsImages(ocr, $"region_{region.X}_{region.Y}.png", ResultHighlightType.Word)
    End Using
Next
$vbLabelText   $csharpLabel

對於複雜文件,使用IronOCR的結果物件辨識文字位置並建立動態裁剪區域。 對於有挑戰性的影像,OCR影像DPI最佳化指南有助於達到最佳解析度。

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

常見問題

如何在C#中從多幀TIFF檔案中提取文字?

IronOCR提供了一個簡單的解決方案,用於使用OcrImageInput類讀取多幀TIFF檔案。只需實例化IronTesseract並呼叫Read方法,傳入您的TIFF檔案路徑。該程式庫會自動檢測並處理TIFF檔案中的所有幀,將結果合併到一個OcrResult物件中。

OCR程式庫是否支援單頁和多頁TIFF文件?

是的,IronOCR無縫處理單幀和多幀TIFF格式,使用相同的OcrImageInput建構函式。該程式庫自動迭代多頁文件中的每個幀,對每頁應用OCR,並消除了複雜的逐幀處理邏輯的需求。

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

IronOCR支持從GIF檔案中讀取文字,包括動畫GIF,使用與TIFF檔案相同的OcrImageInput類別。該程式庫只需調用一次Read方法即可處理GIF圖像,輕鬆從靜態和動畫GIF格式中提取文字。

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

IronOCR可以處理支持無損壓縮的TIFF檔案,這使得它非常適合用於掃描文件和專業攝影。對於GIF檔案,該程式庫處理無損和有損壓縮格式,包括那些在一個檔案中儲存動畫的格式。

如何優化大型多頁TIFF檔案的OCR性能?

IronOCR提供快速OCR配置選項和多執行緒Tesseract OCR功能,適用於性能關鍵的應用。這些功能確保在處理大型多頁TIFF檔案時的有效批次處理,大大縮短處理時間。

我可以在TIFF或GIF圖片中定義特定的讀取區域嗎?

是的,IronOCR允許您通過指定裁剪區域來定義TIFF或GIF圖片中的讀取區域。此功能有助於將OCR處理集中於圖片的特定部分,提高當您只需要特定區域的文字時的準確性與性能。

IronOCR能整合到現有的應用程式中嗎?

IronOCR被設計成可以輕鬆地整合到現有應用程式中,使用C#允許開發人員以最小的努力為其軟體新增OCR功能。

使用IronOCR進行文件管理的好處是什麼?

使用IronOCR進行文件管理通過將掃描的文件轉換為可搜索和可編輯的文字來簡化工作流程,減少手動資料輸入的需求並提高文件的可存取性。

IronOCR如何提高資料精確性?

IronOCR通過其先進的識別算法和影像校正功能提高資料精確性,確保文字提取過程既可靠又精確。

IronOCR有免費試用版嗎?

有的,Iron Software提供IronOCR的免費試用版,允許使用者在做出購買決定前測試其功能和能力。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備開始了嗎?
Nuget 下載 6,136,090 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在滾動?

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