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は、OcrImageInputクラスと単一のReadメソッド呼び出しにより、C#でマルチフレームTIFFやGIFファイルからテキストを読み取ることを可能にし、複雑な設定なしに単一および複数ページのドキュメントをサポートします。

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

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

クイックスタート: マルチフレーム TIFF または GIF ファイルを使用した OCR

IronOCRでOcrImageInputReadコールを使って複数ページの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で](/static-assets/images/TODO/how-do-i-read-single-or-multi-frame-tiff-files-step_screenshot.webp)-->。 <!ステップバイステップのプロセスを示すスクリーンショット -->。

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 設定を実装して処理速度を最適化してください。 ライブラリの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.ウェブコンテンツ:オンラインチュートリアルとドキュメント 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で低画質スキャンを修正するをご覧ください。

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

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 のパフォーマンスが向上するのですか?

完了したOCR処理の実行を示すデバッグコンソールを備えたフォトビューアのTIFFドキュメント

クロッピングにより、パフォーマンスが向上します:

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処理を画像の特定の部分に集中させることができ、特定の領域のテキストのみが必要な場合に精度とパフォーマンスを向上させることができます。

カーティス・チャウ
テクニカルライター

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

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

準備はできましたか?
Nuget ダウンロード 5,384,824 | バージョン: 2026.2 リリース