C#でマルチフレーム/ページTIFFとGIFからテキスト抽出・文字認識を行う方法
IronOCR は、OcrImageInput クラスと単一の Read メソッド呼び出しを使用して、C# でマルチフレーム TIFF および GIF ファイルからのテキスト抽出・文字認識を可能にし、複雑な構成なしで単一ページと複数ページの両方のドキュメントをサポートします。
TIFF(Tagged Image File Format)は、高画質画像のフォーマットです。 可逆圧縮に対応しているため、スキャン文書やプロの写真撮影に適しています。
GIF(Graphics Interchange Format)は、単純なウェブ画像やアニメーションに使用されます。 可逆圧縮と非可逆圧縮の両方をサポートし、1つのファイルにアニメーションを含めることができます。
クイックスタート: マルチフレーム TIFF または GIF ファイルを使用した OCR
OcrImageInput と Read 呼び出しを使用して、 IronOCRで複数ページの TIFF またはアニメーション GIF からテキストを読み取ります。
最小限のワークフロー(5ステップ)
- マルチフレームGIFやTIFFを読み込むためのC#ライブラリをダウンロードする。
- シングル/マルチフレームTIFFをインポートするには、**OcrImageInput**を使用してください。
- OCRを実行するために`Read`メソッドを呼び出します。
- 同じクラスを使ってGIF画像をインポートする
- クロップ領域を指定し、読み取り領域を定義する
シングルまたはマルチフレームの 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)
なぜ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
長い操作の場合は、中止トークンを実装して、キャンセルできるようにしてください。
個々の 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
高度な設定については、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)
初心者向けには、シンプルな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
難しい画像については、Tesseractで低画質スキャンを修正するをご覧ください。
より良いパフォーマンスのためにスキャン領域を指定するにはどうすればよいですか?
OCR の特定の領域を定義するには、OcrImageInput を構築するときに 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)
なぜトリミングすると 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
正しい切り抜き矩形を計算するにはどうすればよいですか?
クロップ長方形を計算します:
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
複雑な文書の場合は、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処理を画像の特定の部分に集中させることができ、特定の領域のテキストのみが必要な場合に精度とパフォーマンスを向上させることができます。

