Jak odczytywać pliki TIFF i GIF z wieloma klatkami/stronami w C
IronOCR umożliwia odczytywanie tekstu z plików TIFF i GIF z wieloma klatkami w C# za pomocą klasy OcrImageInput i pojedynczego wywołania metody Read, wspierając dokumenty jednoklatkowe i wieloklatkowe bez skomplikowanej konfiguracji.
TIFF (Tagged Image File Format) to format obrazów wysokiej jakości. Obsługuje bezstratną kompresję, dzięki czemu nadaje się do skanowanych dokumentów i profesjonalnej fotografii.
GIF (Graphics Interchange Format) to format używany do prostych obrazów internetowych i animacji. Obsługuje bezstratną i stratną kompresję oraz może zawierać animacje w jednym pliku.
Szybki start: OCR z plikami TIFF lub GIF z wieloma klatkami
Odczytuj tekst z plików TIFF z wieloma stronami lub animowanych GIF-ów za pomocą IronOCR, korzystając z OcrImageInput i wywołania Read.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
using IronOcr; var result = new IronTesseract().Read(new OcrImageInput("Potter.tiff")); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do odczytywania GIF-ów i TIFF-ów z wieloma klatkami
- Użyj OcrImageInput, aby zaimportować TIFF-y jednoklatkowe/wieloklatkowe
- Wywołaj metodę
Read, aby wykonać OCR - Użyj tej samej klasy do importowania obrazów GIF
- Zdefiniuj obszar odczytu poprzez określenie regionu kadrowania
Jak odczytywać pliki TIFF jednoklatkowe lub wieloklatkowe?
Aby wykonać OCR, utwórz instancję klasy IronTesseract. Użyj instrukcji using, aby utworzyć obiekt OcrImageInput. Ten konstruktor obsługuje formaty TIFF i TIF jednoklatkowe i wieloklatkowe. Zastosuj metodę Read, aby wykonać OCR na zaimportowanym pliku TIFF.
: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)
Dlaczego IronOCR automatycznie obsługuje TIFF z wieloma klatkami?
IronOCR automatycznie wykrywa i przetwarza wszystkie klatki w pliku TIFF. Podczas ładowania dokumentu TIFF z wieloma stronami biblioteka iteruje przez każdą klatkę, stosuje OCR do każdej strony i konsoliduje wyniki w jeden obiekt OcrResult. To automatyczne przetwarzanie eliminuje złożoną logikę przetwarzania klatka po klatce. Aby zobaczyć przykłady TIFF z wieloma stronami, zapoznaj się z naszym samouczkiem OCR TIFF z wieloma stronami.
W przypadku aplikacji krytycznych dla wydajności, wdróż szybką konfigurację OCR, aby zoptymalizować szybkość przetwarzania. Możliwości wielowątkowego Tesseract OCR biblioteki zapewniają wydajne przetwarzanie wsadowe.
Co się dzieje podczas odczytywania dokumentów TIFF z wieloma stronami?
Podczas przetwarzania dokumentów TIFF z wieloma stronami, IronOCR:
- Ładuje wszystkie klatki do pamięci w efektywny sposób
- Stosuje wstępne przetwarzanie do każdej klatki, jeśli jest to skonfigurowane
- Wykonuje OCR na stronach sekwencyjnie
- Agreguje wyniki zachowując kolejność stron
Dostęp do wyników poszczególnych stron:
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
W przypadku długotrwałych operacji należy zaimplementować token przerwania, umożliwiający anulowanie.
Jak mogę przetwarzać poszczególne klatki TIFF osobno?
Przetwarzaj ramki indywidualnie ze względu na ograniczenia pamięci lub w celu zastosowania różnych filtrów korekcji obrazu do określonych stron:
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
Aby uzyskać informacje na temat zaawansowanej konfiguracji, zapoznaj się ze szczegółowym przewodnikiem konfiguracji Tesseract.
Jak odczytać pliki GIF w celu rozpoznania tekstu (OCR)?
Określ ścieżkę do pliku GIF podczas konstruowania OcrImageInput. Konstruktor importuje obraz. W przypadku animowanych plików GIF IronOCR wyodrębnia wszystkie klatki i przetwarza je jako pojedyncze obrazy.
: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)
Dla początkujących przygotowaliśmy prosty samouczek dotyczący OCR w języku C# z wykorzystaniem biblioteki Tesseract, który obejmuje podstawowe operacje OCR.
Dlaczego OCR działa na animowanych plikach GIF?
Animowane pliki GIF zawierają wiele klatek obrazu. IronOCR wyodrębnia każdą klatkę i przetwarza je osobno. To rozwiązanie sprawdza się w przypadku:
- Nagrania ekranu zapisane w formacie GIF
- Animowane samouczki z instrukcjami tekstowymi
- Wieloetapowa dokumentacja w formacie GIF
- Starsze systemy eksportujące raporty w formacie GIF
Tekst z każdej ramki jest przechwytywany i porządkowany chronologicznie. W przypadku obrazów z problemami z orientacją IronOCR może automatycznie skorygować orientację obrazu.
Kiedy należy używać formatu GIF do OCR?
Pliki GIF mają ograniczoną paletę kolorów (256 kolorów), ale są powszechnie stosowane w:
- Treści internetowe: samouczki online i dokumentacja
- Eksporty starszych aplikacji: starsze aplikacje wykorzystujące format GIF
- Zrzuty ekranu: narzędzia do tworzenia zrzutów ekranu domyślnie zapisujące pliki w formacie GIF
- Małe rozmiary plików: gdy miejsce na dysku jest ograniczone
Aby uzyskać najlepsze wyniki, zoptymalizuj pliki GIF za pomocą ustawień DPI w IronOCR. Zastosuj filtry optymalizacji obrazu OCR, aby poprawić rozpoznawanie.
Jakie są typowe problemy związane z OCR plików GIF?
Pliki GIF stanowią wyzwanie:
- Ograniczenia kolorystyczne: limit 256 kolorów wpływa na czytelność tekstu
- Artefakty kompresji: dithering zakłóca rozpoznawanie
- Niska rozdzielczość: często zapisywane w rozdzielczości 72–96 DPI
Zastosuj filtry przetwarzania wstępnego:
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
W przypadku trudnych obrazów zobacz: poprawianie skanów o niskiej jakości za pomocą Tesseract.
Jak określić obszar skanowania, aby uzyskać lepszą wydajność?
Uwzględnij CropRectangle przy konstruowaniu OcrImageInput, aby zdefiniować konkretny obszar dla OCR. Zwiększa to wydajność w przypadku dużych dokumentów. Zobacz nasz przewodnik dotyczący regionów 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)
Dlaczego kadrowanie poprawia wydajność OCR?
Krojenie poprawia wydajność poprzez:
- Zmniejszony obszar przetwarzania: mniej pikseli oznacza szybsze działanie
- Ukierunkowane wykrywanie: OCR optymalizuje się pod kątem określonych obszarów
- Efektywność pamięci: mniejszy zestaw roboczy zmniejsza zużycie pamięci RAM
- Eliminacja szumu: Wyklucza nieistotne obszary
Przetwarzanie określonych obszarów może być 5–10 razy szybsze niż w przypadku całych stron. W celu monitorowania w czasie rzeczywistym należy wdrożyć śledzenie postępów.
Kiedy należy stosować OCR dostosowane do regionu?
Należy użyć OCR dostosowanego do regionu w przypadku:
- Przetwarzanie formularzy: Wyodrębnianie określonych pól
- Nagłówki/stopki: Dostęp do metadanych dokumentu
- Tabele: Skup się na tabelach danych
- Przetwarzanie wsadowe: podobne przepływy pracy z dokumentami
Przykład dla pól formularza:
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
Jak obliczyć prawidłowy prostokąt przycięcia?
Oblicz prostokąty przycięcia za pomocą:
- Kontrola wizualna: użyj edytorów obrazów do sprawdzania współrzędnych
- Wykrywanie programowe: Wykorzystaj możliwości wizyjne IronOCR
- Szablony: Zdefiniuj regiony raz dla podobnych dokumentów
Debugowanie i wizualizacja dzięki funkcji podświetlania tekstu:
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
W przypadku złożonych dokumentów należy użyć obiektów wynikowych IronOCR do identyfikacji lokalizacji tekstu i tworzenia dynamicznych obszarów przycinania. W przypadku trudnych obrazów przewodnik po optymalizacji rozdzielczości obrazów OCR pomaga osiągnąć optymalną rozdzielczość.
IronOCR zapewnia uproszczony interfejs API, który automatycznie obsługuje wyodrębnianie i przetwarzanie ramek. Niezależnie od tego, czy przetwarzane są dokumenty jednostronicowe, czy złożone pliki wielokadrowowe, w przypadku przepływów pracy z dokumentami w Enterprise obowiązuje ta sama prosta składnia.
Często Zadawane Pytania
Jak mogę wyodrębnić tekst z plików TIFF z wieloma klatkami w C#?
IronOCR zapewnia proste rozwiązanie do odczytywania plików TIFF z wieloma klatkami przy użyciu klasy OcrImageInput. Wystarczy instancjonować IronTesseract i wywołać metodę Read z OcrImageInput, podając ścieżkę do pliku TIFF. Biblioteka automatycznie wykrywa i przetwarza wszystkie klatki w pliku TIFF, integrując wyniki w jednym obiekcie OcrResult.
Czy biblioteka OCR obsługuje zarówno dokumenty TIFF jednostronicowe, jak i wielostronicowe?
Tak, IronOCR radzi sobie płynnie zarówno z formatami TIFF jedno- jak i wieloklatkowymi za pomocą tego samego konstruktora OcrImageInput. Biblioteka automatycznie przetwarza każdą klatkę w dokumentach wielostronicowych, stosując OCR do każdej strony i eliminując potrzebę skomplikowanej logiki przetwarzania klatka po klatce.
Czy mogę wykonywać OCR na animowanych plikach GIF?
IronOCR obsługuje odczytywanie tekstu z plików GIF, w tym animowanych GIFów, używając tej samej klasy OcrImageInput używanej dla plików TIFF. Biblioteka przetwarza obrazy GIF za pomocą jednego wywołania metody Read, co ułatwia wyodrębnianie tekstu z formatów GIF zarówno statycznych, jak i animowanych.
Jakie formaty kompresji są obsługiwane dla OCR TIFF i GIF?
IronOCR współpracuje z plikami TIFF obsługującymi kompresję bezstratną, co czyni go idealnym dla zeskanowanych dokumentów i profesjonalnej fotografii. Dla plików GIF, biblioteka obsługuje zarówno formaty kompresji bezstratnej, jak i stratnej, w tym te z animacjami zapisanymi w jednym pliku.
Jak zoptymalizować wydajność OCR dla dużych dokumentów TIFF wielostronicowych?
IronOCR oferuje szybkie opcje konfiguracji OCR i wielowątkowe możliwości OCR Tesseract dla aplikacji krytycznych pod względem wydajności. Te funkcje zapewniają wydajne przetwarzanie partii przy obsłudze dużych dokumentów TIFF wielostronicowych, co znacznie skraca czas przetwarzania.
Czy mogę zdefiniować określone obszary odczytu w obrazach TIFF lub GIF?
Tak, IronOCR umożliwia definiowanie obszarów odczytu poprzez określanie regionów przycinania w obrazach TIFF lub GIF. Ta funkcja pomaga skupić przetwarzanie OCR na konkretnych częściach obrazu, poprawiając dokładność i wydajność, gdy potrzebny jest tekst tylko z określonych obszarów.

