C#でマルチフレームページGIFとTIFFを読む方法|IronOCR

C#でマルチフレーム/ページTIFFとGIFを読む方法</#35;

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

IronOCR を使用すると、C# において OcrImageInput クラスと単一の Read メソッド呼び出しにより、マルチフレームの TIFF および GIF ファイルからテキストを読み取ることができます。複雑な設定を必要とせず、単一ページおよび複数ページのドキュメントの両方をサポートしています。

TIFF(Tagged Image File Format)は、高画質画像のフォーマットです。 可逆圧縮に対応しているため、スキャン文書やプロの写真撮影に適しています。

GIF(Graphics Interchange Format)は、単純なウェブ画像やアニメーションに使用されます。 可逆圧縮と非可逆圧縮の両方をサポートし、1つのファイルにアニメーションを含めることができます。

クイックスタート: マルチフレームTIFFまたはGIFファイルでのOCR

OcrImageInput および Read 呼び出しを使用して、IronOCR で複数ページの TIFF ファイルやアニメーション GIF からテキストを読み取ります。

  1. IronOCR をNuGetパッケージマネージャでインストール

    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 形式をサポートします。 インポートした TIFF ファイルに対して OCR 処理を行うには、Read メソッドを適用してください。

: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ドキュメントを読み込む際、このIronOCRライブラリは各フレームを順次処理し、すべてのページにOCRを適用して、結果を単一のOcrResultオブジェクトに統合します。 この自動処理により、複雑なフレームごとの処理ロジックが不要になります。 マルチページTIFFの例については、マルチページTIFF OCRチュートリアルをご覧ください。

パフォーマンスが重要なアプリケーションでは、高速 OCR 設定を実装して処理速度を最適化してください。 ライブラリのmultithreaded 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

長い操作の場合は、中止トークンを実装して、キャンセルできるようにしてください。

個々の 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詳細設定ガイドをご参照ください。

OCRのためにGIFファイルを読み取るにはどうすればよいですか?

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は画像の向きを自動的に修正します

OCRにGIF形式を使用するのはいつですか?

GIFのカラーパレットは限られていますが(256色)、一般的です:

  1. Webコンテンツ: オンラインチュートリアルおよびドキュメント
  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);
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で低画質スキャンを修正するをご覧ください。

より良いパフォーマンスのためにスキャン領域を指定するにはどうすればよいですか?

OCRの対象領域を定義するために、CropRectangleを含めてください。 これにより、大規模な文書のパフォーマンスが向上します。 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 のパフォーマンスが向上するのですか?

Photo Viewerの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. テンプレート: 同様の文書のために領域を一度定義する

ハイライトテキスト機能でデバッグと視覚化を行います:

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をインスタンス化し、OcrImageInputでReadメソッドを呼び出し、TIFFファイルのパスを渡すだけです。ライブラリーは自動的にTIFFファイル内の全てのフレームを検出し処理し、結果を一つのOcrResultオブジェクトにまとめます。

OCRライブラリは、単一ページと複数ページの両方のTIFFドキュメントをサポートしていますか?

はい、IronOCRは同じOcrImageInputコンストラクタを通してシングルフレームとマルチフレームのTIFFフォーマットをシームレスに扱います。このライブラリは自動的に複数ページのドキュメント内の各フレームを繰り返し処理し、すべてのページにOCRを適用し、フレームごとの複雑な処理ロジックを不要にします。

アニメーションGIFファイルでOCRを実行できますか?

IronOCRは、TIFFファイルに使用されるOcrImageInputクラスを使用して、アニメーションGIFを含むGIFファイルからのテキスト読み込みをサポートします。このライブラリは単一のReadメソッド呼び出しでGIF画像を処理するので、静的GIF形式とアニメーションGIF形式の両方からテキストを簡単に抽出できます。

TIFF および GIF OCR でサポートされている圧縮形式は何ですか?

IronOcrはロスレス圧縮をサポートするTIFFファイルで動作し、スキャン文書やプロフェッショナルな写真に最適です。GIFファイルについては、このライブラリは可逆圧縮と非可逆圧縮の両方の形式を扱い、1つのファイルに保存されたアニメーションを含みます。

大きな複数ページの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は、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 5,896,332 | バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronOcr
サンプルを実行 あなたの画像が検索可能なテキストになるのをご覧ください。