Jak czytać GIF-y i TIFF-y z wieloma ramkami w C# | IronOCR

Jak odczytywać pliki TIFF i GIF z wieloma klatkami/stronami w C

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

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.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. Skopiuj i uruchom ten fragment kodu.

    using IronOcr;
    var result = new IronTesseract().Read(new OcrImageInput("Potter.tiff"));
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer


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)
$vbLabelText   $csharpLabel
Windows Photo Viewer i Visual Studio pokazują zawartość dokumentu - to nie demo przetwarzania TIFF

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:

  1. Ładuje wszystkie klatki do pamięci w efektywny sposób
  2. Stosuje wstępne przetwarzanie do każdej klatki, jeśli jest to skonfigurowane
  3. Wykonuje OCR na stronach sekwencyjnie
  4. 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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:

  1. Treści internetowe: samouczki online i dokumentacja
  2. Eksporty starszych aplikacji: starsze aplikacje wykorzystujące format GIF
  3. Zrzuty ekranu: narzędzia do tworzenia zrzutów ekranu domyślnie zapisujące pliki w formacie GIF
  4. 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:

  1. Ograniczenia kolorystyczne: limit 256 kolorów wpływa na czytelność tekstu
  2. Artefakty kompresji: dithering zakłóca rozpoznawanie
  3. 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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

Dlaczego kadrowanie poprawia wydajność OCR?

Dokument TIFF w przeglądarce zdjęć z konsolą debugowania pokazującą zakończone wykonanie procesu OCR

Krojenie poprawia wydajność poprzez:

  1. Zmniejszony obszar przetwarzania: mniej pikseli oznacza szybsze działanie
  2. Ukierunkowane wykrywanie: OCR optymalizuje się pod kątem określonych obszarów
  3. Efektywność pamięci: mniejszy zestaw roboczy zmniejsza zużycie pamięci RAM
  4. 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
$vbLabelText   $csharpLabel

Jak obliczyć prawidłowy prostokąt przycięcia?

Oblicz prostokąty przycięcia za pomocą:

  1. Kontrola wizualna: użyj edytorów obrazów do sprawdzania współrzędnych
  2. Wykrywanie programowe: Wykorzystaj możliwości wizyjne IronOCR
  3. 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
$vbLabelText   $csharpLabel

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.