Zaznaczanie tekstu jako obrazów w języku C# za pomocą IronOCR

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

Metoda HighlightTextAndSaveAsImages firmy IronOCR wizualizuje wyniki OCR poprzez rysowanie ramek wokół wykrytego tekstu (znaków, słów, wierszy lub akapitów) i zapisuje je jako obrazy diagnostyczne, umożliwiając programistom weryfikację dokładności OCR i debugowanie problemów z rozpoznawaniem.

Wizualizacja wyników OCR polega na renderowaniu ramek wokół określonych elementów tekstowych, które silnik wykrył na obrazie. Proces ten nakłada wyraźne oznaczenia na dokładne lokalizacje poszczególnych znaków, słów, wierszy lub akapitów, zapewniając przejrzysty obraz rozpoznanej treści.

Ta wizualna informacja zwrotna ma kluczowe znaczenie dla debugowania i sprawdzania dokładności wyników OCR, pokazując, co oprogramowanie zidentyfikowało i gdzie popełniło błędy. Podczas pracy ze złożonymi dokumentami lub rozwiązywania problemów z rozpoznawaniem wizualne podświetlanie staje się niezbędnym narzędziem diagnostycznym.

W tym artykule pokazano możliwości diagnostyczne IronOCR przy użyciu metody HighlightTextAndSaveAsImages. Ta funkcja zaznacza określone fragmenty tekstu i zapisuje je jako obrazy w celu weryfikacji. Niezależnie od tego, czy tworzysz system przetwarzania dokumentów, wdrażasz środki kontroli jakości, czy też weryfikujesz swoje wdrożenie OCR, ta funkcja zapewnia natychmiastową wizualną informację zwrotną na temat tego, co wykrywa silnik OCR.

Szybki start: Natychmiastowe zaznaczanie słów w pliku PDF

Ten fragment kodu pokazuje, jak korzystać z IronOCR: wczytuje plik PDF i zaznacza każde słowo w dokumencie, zapisując wynik jako obrazy. Wystarczy jedna linijka, aby uzyskać wizualną informację zwrotną na temat wyników OCR.

  1. Install IronOCR with NuGet Package Manager

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

    new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word);
  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 zaznaczyć tekst i zapisać go jako obraz?

Zaznaczanie tekstu i zapisywanie go jako obrazów jest proste dzięki IronOCR. Załaduj istniejący plik PDF za pomocą LoadPdf, a następnie wywołaj metodę HighlightTextByType, aby zaznaczyć fragmenty tekstu i zapisać je jako obrazy. Ta technika weryfikuje dokładność OCR i usuwa błędy związane z rozpoznawaniem tekstu w dokumentach.

Metoda przyjmuje trzy parametry: silnik OCR IronTesseract, prefiks nazwy pliku wyjściowego oraz wyliczenie z ResultHighlightType, które określa typ tekstu do podświetlenia. W tym przykładzie użyto ResultHighlightType.Paragraph do wyróżnienia bloków tekstu jako akapitów. HighlightTextAndSaveAsImages

Zwróć uwagęTa funkcja wykorzystuje prefiks ciągu znaków wyjściowego i dołącza identyfikator strony (np. "page_0", "page_1") do nazwy pliku obrazu wyjściowego dla każdej strony.

W tym przykładzie wykorzystano plik PDF zawierający trzy akapity.

Jak wygląda plik PDF do tłumaczenia?

Jak zaimplementować kod podświetlania?

Poniższy przykładowy kod ilustruje podstawową implementację z wykorzystaniem klasy OcrInput.

:path=/static-assets/ocr/content-code-examples/how-to/highlight-texts-as-images.cs
using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph);
Imports IronOcr

Private ocrTesseract As New IronTesseract()

Private ocrInput = New OcrInput()
ocrInput.LoadPdf("document.pdf")
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_page_", ResultHighlightType.Paragraph)
$vbLabelText   $csharpLabel

Co pokazują obrazy wyjściowe?

Strona internetowa zawierająca trzy akapity, środkowy akapit wyróżniony czerwoną ramką pokazujący możliwość zaznaczania tekstu

Jak widać na powyższym obrazku, wszystkie trzy akapity zostały zaznaczone jasnoczerwonym ramkiem. Ta wizualna reprezentacja pomaga programistom szybko zidentyfikować, w jaki sposób silnik OCR dzieli dokument na czytelne bloki.

Jakie są różne opcje ResultHighlightType?

W powyższym przykładzie użyto ResultHighlightType.Paragraph do wyróżnienia bloków tekstu. IronOCR zapewnia dodatkowe opcje podświetlania za pośrednictwem tej enum. Poniżej znajduje się pełna lista dostępnych typów, z których każdy służy do innych celów diagnostycznych.

Znak: Rysuje ramkę wokół każdego znaku wykrytego przez silnik OCR. Przydatne do debugowania rozpoznawania znaków lub specjalistycznych czcionek, szczególnie podczas pracy z niestandardowymi plikami językowymi.

Word: Podkreśla każde kompletne słowo zidentyfikowane przez silnik. Idealne do sprawdzania granic słów i prawidłowej identyfikacji słów, zwłaszcza podczas wdrażania odczytu BarCode i QR wraz z rozpoznawaniem tekstu.

Linia: Podświetla każdą wykrytą linię tekstu. Przydatne w przypadku dokumentów o złożonym układzie, wymagających weryfikacji identyfikacji linii, np. podczas przetwarzania dokumentów zeskanowanych.

Akapit: Podkreśla całe bloki tekstu zgrupowane w akapity. Idealne do zrozumienia układu dokumentu i weryfikacji podziału na bloki tekstowe, szczególnie przydatne podczas pracy z ekstrakcją tabel.

Jak porównać różne typy podświetleń?

Ten obszerny przykład pokazuje generowanie zaznaczeń dla wszystkich różnych typów w tym samym dokumencie, co pozwala porównać wyniki:

using IronOcr;
using System;

// Initialize the OCR engine with custom configuration
IronTesseract ocrTesseract = new IronTesseract();

// Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = false; // Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Load the PDF document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");

// Generate highlights for each type
Console.WriteLine("Generating character-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character);

Console.WriteLine("Generating word-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word);

Console.WriteLine("Generating line-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line);

Console.WriteLine("Generating paragraph-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph);

Console.WriteLine("All highlight images have been generated successfully!");
using IronOcr;
using System;

// Initialize the OCR engine with custom configuration
IronTesseract ocrTesseract = new IronTesseract();

// Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = false; // Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Load the PDF document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("document.pdf");

// Generate highlights for each type
Console.WriteLine("Generating character-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character);

Console.WriteLine("Generating word-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word);

Console.WriteLine("Generating line-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line);

Console.WriteLine("Generating paragraph-level highlights...");
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph);

Console.WriteLine("All highlight images have been generated successfully!");
Imports IronOcr
Imports System

' Initialize the OCR engine with custom configuration
Dim ocrTesseract As New IronTesseract()

' Configure for better accuracy if needed
ocrTesseract.Configuration.ReadBarCodes = False ' Disable if not needed for performance
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

' Load the PDF document
Using ocrInput As New OcrInput()
    ocrInput.LoadPdf("document.pdf")

    ' Generate highlights for each type
    Console.WriteLine("Generating character-level highlights...")
    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_character_", ResultHighlightType.Character)

    Console.WriteLine("Generating word-level highlights...")
    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_word_", ResultHighlightType.Word)

    Console.WriteLine("Generating line-level highlights...")
    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_line_", ResultHighlightType.Line)

    Console.WriteLine("Generating paragraph-level highlights...")
    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_paragraph_", ResultHighlightType.Paragraph)
End Using

Console.WriteLine("All highlight images have been generated successfully!")
$vbLabelText   $csharpLabel

Jak postępować w przypadku dokumentów wielostronicowych?

Podczas przetwarzania wielostronicowych plików PDF lub plików TIFF zawierających wiele klatek funkcja podświetlania automatycznie obsługuje każdą stronę z osobna. Jest to szczególnie przydatne podczas wdrażania procesów ekstrakcji tekstu z plików PDF za pomocą OCR:

using IronOcr;
using System.IO;

IronTesseract ocrTesseract = new IronTesseract();

// Load a multi-page document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("multi-page-document.pdf");

// Create output directory if it doesn't exist
string outputDir = "highlighted_pages";
Directory.CreateDirectory(outputDir);

// Generate highlights for each page
// Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, 
    Path.Combine(outputDir, "page_"), 
    ResultHighlightType.Word);

// Count generated files for verification
int pageCount = Directory.GetFiles(outputDir, "page_*.png").Length;
Console.WriteLine($"Generated {pageCount} highlighted page images");
using IronOcr;
using System.IO;

IronTesseract ocrTesseract = new IronTesseract();

// Load a multi-page document
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("multi-page-document.pdf");

// Create output directory if it doesn't exist
string outputDir = "highlighted_pages";
Directory.CreateDirectory(outputDir);

// Generate highlights for each page
// Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, 
    Path.Combine(outputDir, "page_"), 
    ResultHighlightType.Word);

// Count generated files for verification
int pageCount = Directory.GetFiles(outputDir, "page_*.png").Length;
Console.WriteLine($"Generated {pageCount} highlighted page images");
Imports IronOcr
Imports System.IO

Dim ocrTesseract As New IronTesseract()

' Load a multi-page document
Using ocrInput As New OcrInput()
    ocrInput.LoadPdf("multi-page-document.pdf")

    ' Create output directory if it doesn't exist
    Dim outputDir As String = "highlighted_pages"
    Directory.CreateDirectory(outputDir)

    ' Generate highlights for each page
    ' Files will be named: highlighted_pages/page_0.png, page_1.png, etc.
    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, 
                                          Path.Combine(outputDir, "page_"), 
                                          ResultHighlightType.Word)

    ' Count generated files for verification
    Dim pageCount As Integer = Directory.GetFiles(outputDir, "page_*.png").Length
    Console.WriteLine($"Generated {pageCount} highlighted page images")
End Using
$vbLabelText   $csharpLabel

Jakie są najlepsze praktyki dotyczące wydajności?

Korzystając z funkcji wyróżniania, należy wziąć pod uwagę następujące najlepsze praktyki:

  1. Rozmiar pliku: Podświetlone obrazy mogą być duże, zwłaszcza w przypadku dokumentów o wysokiej rozdzielczości. Podczas przetwarzania dużych partii należy wziąć pod uwagę dostępną przestrzeń w katalogu wyjściowym. Wskazówki dotyczące optymalizacji znajdziesz w naszym przewodniku po szybkiej konfiguracji OCR.

  2. Wydajność: Generowanie podświetleń powoduje dodatkowe obciążenie procesora. W przypadku systemów produkcyjnych, w których podświetlanie jest potrzebne tylko sporadycznie, należy wdrożyć je jako oddzielny proces diagnostyczny, a nie jako część głównego przepływu pracy. Rozważ użycie wielowątkowego OCR do przetwarzania wsadowego.

  3. Obsługa błędów: Podczas pracy z operacjami na plikach zawsze należy wdrażać odpowiednią obsługę błędów:
try
{
    using var ocrInput = new OcrInput();
    ocrInput.LoadPdf("document.pdf");

    // Apply image filters if needed for better recognition
    ocrInput.Deskew(); // Correct slight rotations
    ocrInput.DeNoise(); // Remove background noise

    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word);
}
catch (Exception ex)
{
    Console.WriteLine($"Error during highlighting: {ex.Message}");
    // Log error details for debugging
}
try
{
    using var ocrInput = new OcrInput();
    ocrInput.LoadPdf("document.pdf");

    // Apply image filters if needed for better recognition
    ocrInput.Deskew(); // Correct slight rotations
    ocrInput.DeNoise(); // Remove background noise

    ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word);
}
catch (Exception ex)
{
    Console.WriteLine($"Error during highlighting: {ex.Message}");
    // Log error details for debugging
}
Imports System

Try
    Using ocrInput As New OcrInput()
        ocrInput.LoadPdf("document.pdf")

        ' Apply image filters if needed for better recognition
        ocrInput.Deskew() ' Correct slight rotations
        ocrInput.DeNoise() ' Remove background noise

        ocrInput.HighlightTextAndSaveAsImages(ocrTesseract, "highlight_", ResultHighlightType.Word)
    End Using
Catch ex As Exception
    Console.WriteLine($"Error during highlighting: {ex.Message}")
    ' Log error details for debugging
End Try
$vbLabelText   $csharpLabel

W jaki sposób podświetlanie integruje się z wynikami OCR?

Funkcja podświetlania działa płynnie z obiektami wynikowymi IronOCR, umożliwiając korelację wizualnych podświetleń z wyodrębnionymi danymi tekstowymi. Jest to szczególnie przydatne, gdy trzeba track OCR progress lub zweryfikować określone fragmenty rozpoznanego tekstu. Klasa OcrResult dostarcza szczegółowych informacji o każdym wykrytym elemencie, co odpowiada bezpośrednio wizualnym podświetleniom generowanym przez tę metodę.

Co zrobić, jeśli napotkam problemy?

W przypadku problemów z funkcją podświetlania zapoznaj się z ogólnym przewodnikiem rozwiązywania problemów, aby znaleźć typowe rozwiązania. W przypadku konkretnych problemów związanych z wyróżnieniem:

  • Puste obrazy wyjściowe: Upewnij się, że dokument wejściowy zawiera czytelny tekst oraz że silnik OCR jest prawidłowo skonfigurowany dla danego typu dokumentu. Może być konieczne zastosowanie filtrów optymalizacji obrazu lub fixing image orientation w celu poprawy rozpoznawalności.
  • Brakujące informacje: Niektóre typy dokumentów mogą wymagać specjalnego przetwarzania wstępnego. Spróbuj zastosować filtry obrazu lub fixing image orientation, aby poprawić rozpoznawalność.
  • Problemy z wydajnością: W przypadku dużych dokumentów warto rozważyć wdrożenie multithreading w celu poprawy szybkości przetwarzania. Dodatkowo, jeśli pracujesz z materiałami wejściowymi o niskiej jakości, zapoznaj się z naszym przewodnikiem dotyczącym poprawiania skanów o niskiej jakości.

Jak mogę to wykorzystać do debugowania w środowisku produkcyjnym?

Funkcja podświetlania stanowi doskonałe narzędzie do debugowania w środowisku produkcyjnym. Po zintegrowaniu z tokenami przerwania dla długotrwałych operacji i limitów czasu można stworzyć solidny system diagnostyczny. Rozważ wdrożenie trybu debugowania w swojej aplikacji:

public class OcrDebugger
{
    private readonly IronTesseract _tesseract;
    private readonly bool _debugMode;

    public OcrDebugger(bool enableDebugMode = false)
    {
        _tesseract = new IronTesseract();
        _debugMode = enableDebugMode;
    }

    public OcrResult ProcessDocument(string filePath)
    {
        using var input = new OcrInput();
        input.LoadPdf(filePath);

        // Apply preprocessing
        input.Deskew();
        input.DeNoise();

        // Generate debug highlights if in debug mode
        if (_debugMode)
        {
            string debugPath = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_";
            input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word);
        }

        // Perform actual OCR
        return _tesseract.Read(input);
    }
}
public class OcrDebugger
{
    private readonly IronTesseract _tesseract;
    private readonly bool _debugMode;

    public OcrDebugger(bool enableDebugMode = false)
    {
        _tesseract = new IronTesseract();
        _debugMode = enableDebugMode;
    }

    public OcrResult ProcessDocument(string filePath)
    {
        using var input = new OcrInput();
        input.LoadPdf(filePath);

        // Apply preprocessing
        input.Deskew();
        input.DeNoise();

        // Generate debug highlights if in debug mode
        if (_debugMode)
        {
            string debugPath = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_";
            input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word);
        }

        // Perform actual OCR
        return _tesseract.Read(input);
    }
}
Imports System.IO

Public Class OcrDebugger
    Private ReadOnly _tesseract As IronTesseract
    Private ReadOnly _debugMode As Boolean

    Public Sub New(Optional enableDebugMode As Boolean = False)
        _tesseract = New IronTesseract()
        _debugMode = enableDebugMode
    End Sub

    Public Function ProcessDocument(filePath As String) As OcrResult
        Using input As New OcrInput()
            input.LoadPdf(filePath)

            ' Apply preprocessing
            input.Deskew()
            input.DeNoise()

            ' Generate debug highlights if in debug mode
            If _debugMode Then
                Dim debugPath As String = $"debug_{Path.GetFileNameWithoutExtension(filePath)}_"
                input.HighlightTextAndSaveAsImages(_tesseract, debugPath, ResultHighlightType.Word)
            End If

            ' Perform actual OCR
            Return _tesseract.Read(input)
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

Co dalej?

Teraz, gdy już wiesz, jak korzystać z funkcji podświetlania, zapoznaj się z:

Dla zastosowania w produkcji, pamiętaj, aby uzyskać licencję, aby usunąć znaki wodne i mieć pełen dostęp do funkcjonalności.

Często Zadawane Pytania

Jak moge wizualizowac wyniki OCR w mojej aplikacji C#?

IronOCR dostarcza metode HighlightTextAndSaveAsImages, która wizualizuje wyniki OCR poprzez rysowanie ramek wokol wykrytych elementow tekstowych (znakow, slow, linii lub akapitow) i zapisuje je jako obrazy diagnostyczne. Ta funkcja pomaga deweloperom w walidacji dokladnosci OCR i debugowaniu problemow z rozpoznawaniem.

Jaki jest najprostszy sposob na podswietlenie slow w dokumencie PDF?

Z IronOCR mozesz podswietlac slowa w PDF za pomoca jednej linii kodu: new IronOcr.OcrInput().LoadPdf("document.pdf").HighlightTextAndSaveAsImages(new IronOcr.IronTesseract(), "highlight_page_", IronOcr.ResultHighlightType.Word). To laduje PDF i tworzy obrazy z podswietlonymi slowami.

Jakie parametry wymaga metoda HighlightTextAndSaveAsImages?

Metoda HighlightTextAndSaveAsImages w IronOCR wymaga trzech parametrów: instancji silnika OCR IronTesseract, ciagu prefiksu dla nazwy pliku wyjsciowego oraz wartosci enum ResultHighlightType, która okresla jakie elementy tekstowe podswietlic (Character, Word, Line, lub Paragraph).

Jak sa nazwane obrazy wyjsciowe podczas uzywania podswietlania tekstu?

IronOCR automatycznie nazywa obrazy wyjsciowe, laczac podany przez ciebie prefiks z identyfikatorem strony. Na przyklad, jesli uzywasz "highlight_page_" jako prefiksu, metoda generuje pliki nazwane "highlight_page_0", "highlight_page_1", itd., dla kazdej strony twojego dokumentu.

Dlaczego wizualne podswietlenie jest wazne dla rozwoju OCR?

Wizualne podswietlenie w IronOCR dostarcza kluczowych informacji diagnostycznych, pokazujac dokladnie jaki tekst wykryl silnik OCR i gdzie wystepuja potencjalne bledy. Ta wizualna mapa pomaga deweloperom debugowac problemy z rozpoznawaniem, walidowac dokladnosc OCR i rozwiązywać problemy w złożonych dokumentach.

Czy moge podswietlic inne rodzaje elementow tekstowych poza slowami?

Tak, enum ResultHighlightType w IronOCR pozwala ci podswietlic rozne elementy tekstowe, wlaczajac poszczegolne Znaki, Slowa, Linie lub cale Akapity. Wystarczy okreslic pozadany typ podczas wywolania metody HighlightTextAndSaveAsImages, aby zwizualizowac rozne poziomy wykrywania tekstu.

Czy IronOCR można zintegrować z istniejącymi aplikacjami?

IronOCR jest zaprojektowany do łatwej integracji z istniejącymi aplikacjami używając C#, co pozwala programistom dodać funkcjonalność OCR do swojego oprogramowania z minimalnym wysiłkiem.

Jakie są korzyści z używania IronOCR do zarządzania dokumentami?

Używanie IronOCR do zarządzania dokumentami upraszcza przepływ pracy przez konwertowanie zeskanowanych dokumentów na przeszukiwalny i edytowalny tekst, redukując konieczność ręcznego wprowadzania danych i poprawiając dostępność dokumentów.

Jak IronOCR może poprawić dokładność danych?

IronOCR poprawia dokładność danych dzięki swoim zaawansowanym algorytmom rozpoznawania i funkcjom korekcji obrazów, zapewniając, że proces ekstrakcji tekstu jest zarówno niezawodny, jak i precyzyjny.

Czy dostępna jest bezpłatna wersja próbna IronOCR?

Tak, Iron Software oferuje bezpłatną wersję próbną IronOCR, umożliwiając użytkownikom przetestowanie jego funkcji i możliwości przed podjęciem decyzji o zakupie.

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,896,332 | Wersja: 2026.5 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.