Konfiguracja OCR dla zaawansowanego czytania

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

IronOCR zapewnia zaawansowane metody odczytu skanów, takie jak ReadPassport, ReadLicensePlate, i ReadPhoto, które wykraczają poza standardowe OCR. Te metody są wspierane przez pakiet IronOcr.Extensions.AdvancedScan. Aby precyzyjnie dostosować, jak te metody przetwarzają tekst, IronOCR udostępnia klasę TesseractConfiguration, dając programistom pełną kontrolę nad białymi i czarnymi listami znaków, wykrywaniem kodów kreskowych, odczytem tabel danych i więcej.

Ten artykuł obejmuje właściwości TesseractConfiguration dostępne dla zaawansowanego odczytu oraz praktyczne przykłady konfigurowania OCR w rzeczywistych scenariuszach.

Szybki start: Ograniczanie wyników OCR do białej listy znaków

Ustaw WhiteListCharacters na TesseractConfiguration przed wywołaniem Read. Każdy znak spoza listy dozwolonych jest cicho usuwany z wyniku, eliminując szumy bez żadnej dalszej obróbki.

  1. Install IronOCR with NuGet Package Manager

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

    var result = new IronTesseract() { Configuration = new TesseractConfiguration { WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- " } }.Read(new OcrInput("image.png")); Console.WriteLine(result.Text);
  3. Wdrożenie do testowania w środowisku produkcyjnym

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

    arrow pointer


Właściwości TesseractConfiguration

Klasa TesseractConfiguration zapewnia następujące właściwości do dostosowywania zachowania OCR. Są one ustawiane przez IronTesseract.Configuration.

Właściwość Typ Opis
WhiteListCharacters string Tylko znaki obecne w tym ciągu będą rozpoznawane w wyjściu OCR. Wszystkie inne znaki są wykluczone.
BlackListCharacters string Znaki w tym ciągu są aktywnie ignorowane i usuwane z wyjścia OCR.
ReadBarCodes bool Włącza lub wyłącza wykrywanie kodów kreskowych w dokumencie podczas przetwarzania OCR.
ReadDataTables bool Włącza lub wyłącza wykrywanie struktury tabel w dokumencie za pomocą Tesseract.
PageSegmentationMode TesseractPageSegmentationMode Określa, jak Tesseract segmentuje obraz wejściowy. Opcje obejmują AutoOsd, Auto, SingleBlock, SingleLine, SingleWord i inne.
RenderSearchablePdf bool Po włączeniu, wyjście OCR może być zapisane jako przeszukiwalny PDF z niewidoczną warstwą tekstową.
RenderHocr bool Po włączeniu, wyjście OCR zawiera dane hOCR do dalszej obróbki lub eksportu.
TesseractVariables Dictionary<string, object> Zapewnia bezpośredni dostęp do niskopoziomowych zmiennych konfiguracyjnych Tesseract dla precyzyjnej kontroli.

Słownik TesseractVariables idzie jeszcze dalej, udostępniając setki podstawowych parametrów silnika Tesseract w przypadku, gdy właściwości wysokiego poziomu są niewystarczające.

Poniższe przykłady pokazują każdą grupę właściwości, zaczynając od dozwolonego zestawu znaków.

Konfigurowanie Dozwolonego Zestawu Znaków dla Tablic Rejestracyjnych

Powszechnym przypadkiem użycia WhiteListCharacters jest ograniczenie wyjścia OCR tylko do znaków, które mogą pojawić się na tablicy rejestracyjnej: wielkie litery, cyfry, łączniki i spacje. To eliminuje szumy i poprawia dokładność, informując silnik, by ignorował wszystko poza oczekiwanym zestawem znaków.

Dane wejściowe

Poniższy zapis rejestracji pojazdu zawiera mieszankę tekstu wielkimi literami, tekstu małymi literami, specjalnych symboli (@, $, #, |, *), oraz interpunkcję.

Rejestracja pojazdu z mieszanymi znakami dla demonstracji dozwolonego zestawu znaków OCR

BlackListCharacters uzupełnia białą listę, aktywnie wykluczając znane symbole zakłóceń, takie jak , and*`.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading.cs
using IronOcr;

// Initialize the Tesseract OCR engine
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Whitelist only characters that appear on license plates
    WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",

    // Blacklist common noise characters
    BlackListCharacters = "`~@#$%&*",
};

var ocrInput = new OcrInput();
// Load the input image
ocrInput.LoadImage("advanced-input.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);

// Print the filtered text result to the console
Console.WriteLine(results.Text);
Imports IronOcr

' Initialize the Tesseract OCR engine
Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    ' Whitelist only characters that appear on license plates
    .WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
    
    ' Blacklist common noise characters
    .BlackListCharacters = "`~@#$%&*"
}

Dim ocrInput As New OcrInput()
' Load the input image
ocrInput.LoadImage("advanced-input.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)

' Print the filtered text result to the console
Console.WriteLine(results.Text)
$vbLabelText   $csharpLabel

Wynik

Wyjście OCR pokazujące tylko dozwolone znaki tablic rejestracyjnych

Filtracja dozwolonych znaków jest wyraźnie widoczna w wynikach:

  • "Tablica: ABC-1234" staje się "T ABC-1234". Słowo małymi literami "late:" jest usuwane, podczas gdy numer tablicy jest zachowany dokładnie.
  • "VIN: 1HGBH41JXMN109186" staje się "VIN 1HGBH41JXMN109186". Dwukropek jest usuwany, ale wielkie litery VIN i pełna liczba są zachowane.
  • "Właściciel: john.doe@email.com" staje się "W". Cały email małymi literami i interpunkcja są usuwane.
  • "Region: CA-90210|Strefa #5" staje się "R CA-90210 Z 5". Rura (|) and hash (#) są usuwane, a wielkie litery i cyfry pozostają.
  • "Opłata: $125.00 + podatek*" staje się "O 12500". Znak dolara, kropka dziesiętna, znak plus i małe litery "podatek" są usuwane.
  • "Ref: ~record_v2^final" staje się "R 2". Tylkę, podkreślenie, znak akcentu i wszystkie małe litery są usuwane.

Te same podejście WhiteListCharacters i BlackListCharacters działa dla każdego typu dokumentu, nie tylko dla tablic rejestracyjnych. Następna sekcja pokazuje, jak rozszerzyć odczyt, aby wykrywać kody kreskowe i struktury tabel jednocześnie.

Konfigurowanie Odczytu Kodów Kreskowych i Tabel Danych

IronOCR może wykrywać kody kreskowe i struktury tabel w dokumentach wraz z tekstem. Te funkcje są kontrolowane przez TesseractConfiguration:

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-3.cs
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Enable barcode detection within documents
    ReadBarCodes = true,

    // Enable table structure detection
    ReadDataTables = true,
};
Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .ReadBarCodes = True, ' Enable barcode detection within documents
    .ReadDataTables = True ' Enable table structure detection
}
$vbLabelText   $csharpLabel
  • ReadBarCodes: Gdy ustawione na true, IronOCR skanuje dokument w poszukiwaniu kodów kreskowych oprócz tekstu. Ustawione na false, aby pominąć wykrywanie kodów kreskowych i przyspieszyć przetwarzanie, gdy kody kreskowe nie są spodziewane.
  • ReadDataTables: Gdy ustawione na true, Tesseract podejmuje próbę wykrycia i zachowania struktury tabel w dokumencie. To jest przydatne dla faktur, raportów i innych dokumentów tabelarycznych.

Te opcje można łączyć z WhiteListCharacters i BlackListCharacters dla precyzyjnej kontroli nad tym, co jest wydobywane z złożonych dokumentów.

Podczas gdy filtracja i wykrywanie kontrolują, co jest wyodrębniane, interpretacja układu jest osobnym zagadnieniem. Następna sekcja omawia, jak wybrać odpowiedni PageSegmentationMode dla rodzaju dokumentu.

Kontrolowanie Trybu Segmentacji Strony

PageSegmentationMode informuje Tesseract, jak segmentować obraz wejściowy przed rozpoznawaniem. Wybranie niewłaściwego trybu dla określonego układu powoduje, że silnik źle odczytuje lub całkowicie pomija tekst.

Tryb Przykład zastosowania
AutoOsd Automatyczna analiza układu z wykrywaniem orientacji i skryptu
Auto Automatyczna analiza układu bez OSD (domyślnie)
SingleColumn Zakłada, że obraz jest pojedynczą kolumną tekstu
SingleBlock Zakłada, że obraz jest jednym jednolitym blokiem tekstu
SingleLine Zakłada, że obraz jest pojedynczą linią tekstu
SparseText Znajduje jak najwięcej tekstu w dowolnym porządku

Dla etykiety lub baneru zawierającego jedną linię, SingleLine eliminuje analizę wielu bloków i poprawia zarówno szybkość, jak i dokładność.

Dane wejściowe

single-line-label.png to wąska etykieta wysyłkowa z dokładnie jedną linią pogrubionego tekstu Courier: SHIPPING LABEL: TRK-2024-XR9-001.

Pojedyncza linia etykiety wysyłkowej dla trybu segmentacji OCR PojedynczaLinia
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-4.cs
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = TesseractPageSegmentationMode.SingleLine,
};

using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .PageSegmentationMode = TesseractPageSegmentationMode.SingleLine
}

Using input As New OcrInput()
    input.LoadImage("single-line-label.png")

    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Dla zeskanowanej strony z nieregularnym rozmieszczeniem tekstu, SparseText odzyskuje więcej treści niż Auto.

Dane wejściowe

receipt-scan.png to paragon termiczny z Corner Market z czterema pozycjami (kawa, muffinka, sok, baton granola), kreskowanym separatorem, subtotalem, podatkiem i sumą całkowitą. To jest układ, gdzie segmentacja stałych bloków pomija wpisy na różnych poziomych pozycjach.

Paragon termiczny dla trybu segmentacji OCR RzadkiTekst
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-5.cs
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = TesseractPageSegmentationMode.SparseText,
};

using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronTesseract

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .PageSegmentationMode = TesseractPageSegmentationMode.SparseText
}

Using input As New OcrInput()
    input.LoadImage("receipt-scan.png")

    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Z dostrojoną segmentacją układu do typu dokumentu, następnym krokiem jest kontrolowanie formatu wyjścia dla dalszego przetwarzania.

Generowanie Przeszukiwalnych PDF-ów i hOCR Output

RenderSearchablePdf i RenderHocr kontrolują formaty wyjściowe, które IronOCR generuje obok wyniku tekstowego.

RenderSearchablePdf osadza niewidoczną warstwę tekstową nad oryginalnym obrazem, tworząc plik PDF, w którym użytkownicy mogą wyszukiwać i kopiować tekst, podczas gdy zeskanowany obraz pozostaje widoczny. To jest standardowy format wyjścia dla przepływów pracy archiwizacji dokumentów.

Dane wejściowe

scanned-document.pdf to jedno-stronicowy list biznesowy od IronOCR Solutions Ltd. (z dnia 15 marca 2024, referencja DOC-2024-OCR-0315). Wynik jest zapisany jako searchable-output.pdf.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-6.cs
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderSearchablePdf = true,
};

using OcrInput input = new OcrInput();
input.LoadPdf("scanned-document.pdf");

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronTesseract

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .RenderSearchablePdf = True
}

Using input As New OcrInput()
    input.LoadPdf("scanned-document.pdf")

    Dim result As OcrResult = ocr.Read(input)
    result.SaveAsSearchablePdf("searchable-output.pdf")
End Using
$vbLabelText   $csharpLabel

Wynik

Wyjście to PDF, które wygląda identycznie do wejścia, ale zawiera ukrytą warstwę tekstową. Otwórz searchable-output.pdf i użyj Ctrl+F, aby zweryfikować, że osadzony tekst jest możliwy do przeszukiwania i kopiowania.

RenderHocr produkuje dokument hOCR, plik HTML, który koduje treść tekstową wraz z koordynatami ramki dla każdego słowa. To jest przydatne, gdy narzędzia przetwarzania dalszego potrzebują precyzyjnego umiejscowienia słów, na przykład silniki redakcyjne lub analiza układu dokumentu.

Dane wejściowe

document-page.png to strona dokumentu z nagłówkiem "Podsumowanie kwartalne Q1 2024" i dwoma akapitami danych finansowych, obejmujących przychody, koszty operacyjne i czynniki wzrostu. Wynik jest zapisany jako output.html.

Strona dokumentu wejściowego dla output hOCR z ramką obwodową
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-7.cs
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderHocr = true,
};

using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
Imports IronTesseract

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .RenderHocr = True
}

Using input As New OcrInput()
    input.LoadImage("document-page.png")

    Dim result As OcrResult = ocr.Read(input)
    result.SaveAsHocrFile("output.html")
End Using
$vbLabelText   $csharpLabel

Wynik

output.html koduje każde rozpoznane słowo z jego koordynatami ramki. Otwórz plik w przeglądarce, aby sprawdzić strukturę hOCR, lub przekaż go do narzędzia do analizy układu lub redagowania.

Oba flagi można włączyć jednocześnie, jeśli potrzebujesz wszystkich trzech formatów wyjściowych (zwykły tekst, PDF z możliwością wyszukiwania i hOCR) z jednego wywołania odczytu.

Te flagi wyjściowe działają niezależnie od odczytywanego języka, w tym w przypadku alfabetów innych niż łaciński. W następnej sekcji pokazano, jak zastosować filtrowanie znaków do tekstu w języku japońskim.

Filtrowanie znaków Unicode w dokumentach międzynarodowych

Dla międzynarodowych dokumentów w języku chińskim, japońskim lub koreańskim, właściwości WhiteListCharacters i BlackListCharacters współpracują z znakami Unicode. Pozwala to ograniczyć wynik do określonych skryptów, np. tylko hiragana i katakana dla języka japońskiego.

Zwróć uwagę Przed kontynuowaniem upewnij się, że zainstalowano odpowiedni pakiet językowy (np. IronOcr.Languages.Japanese).

Dane wejściowe

Dokument zawiera tytuł (テスト), japońskie zdanie łączące hiraganę i katakanę z wariantami znaków dźwięcznych (プ, で), wiersz z ceną zawierający symbole zakazane (★, ■) oraz kanji (価格), a także wiersz z notatką zawierający kolejny symbol z czarnej listy (§), więcej kanji (購入), dodatkowe warianty znaków dźwięcznych (プ, デ) oraz podstawowe katakana (メモ, ール). Biała lista dopuszcza wyłącznie podstawowe znaki hiragana, podstawowe znaki katakana, cyfry oraz popularną japońską interpunkcję; Trzy symbole hałasu są wyraźnie umieszczone na czarnej liście.

Zaawansowana konfiguracja OCR – wprowadzanie tekstu w języku japońskim

Zakresy znaków Unicode dla Hiragany i Katakany są przekazywane jako dosłowne ciągi znaków w WhiteListCharacters, z listą symboli szumu w BlackListCharacters.

Ostrzeżenie Konsola może nie obsługiwać wyświetlania znaków Unicode. Przekierowanie wyników do pliku .txt to niezawodny sposób na sprawdzenie rezultatów przy pracy z takimi znakami.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-jp.cs
using IronOcr;
using System.IO;

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Whitelist only Hiragana, Katakana, numbers, and common Japanese punctuation
    WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" +
                            "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" +
                            "0123456789、。?!()¥ー",

    // Blacklist common noise/symbols you want to ignore
    BlackListCharacters = "★■§",
};

var ocrInput = new OcrInput();

// Load Japanese input image
ocrInput.LoadImage("jp.png");

// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);

// Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text);

// You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt");
Imports IronOcr
Imports System.IO

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" &
                           "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" &
                           "0123456789、。?!()¥ー",
    .BlackListCharacters = "★■§"
}

Dim ocrInput As New OcrInput()

' Load Japanese input image
ocrInput.LoadImage("jp.png")

' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)

' Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text)

' You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt")
$vbLabelText   $csharpLabel

Wynik

Zaawansowana konfiguracja OCR – wynik w języku japońskim

Pełny, przefiltrowany wynik jest dostępny w postaci pliku tekstowego: jp-output.txt.

Ponieważ biała lista zawiera tylko podstawowe znaki hiragana i katakana, pominięto pochodne warianty znaków z oznaczeniem dźwięczności, takie jak プ (pu) i デ (de). Znaki kanji, takie jak 価格 (cena) i 購入 (zakup), są również wykluczone, ponieważ nie znajdują się w zestawie znaków z białej listy. Symbole na czarnej liście, takie jak , , i §, są aktywnie usuwane niezależnie od białej listy.

Gdzie powinienem się udać dalej?

Teraz, gdy już wiesz, jak skonfigurować IronOCR do zaawansowanych scenariuszy odczytu, 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

Co to jest TesseractConfiguration w IronOCR?

TesseractConfiguration w IronOCR pozwala użytkownikom dostosować ustawienia OCR, umożliwiając zaawansowane możliwości czytania, takie jak listy dozwolonych znaków, odczyt kodów kreskowych i obsługa wielojęzyczna.

Jak mogę ustawić listę dozwolonych znaków w IronOCR?

W IronOCR można ustawić listę dozwolonych znaków za pomocą TesseractConfiguration, co pozwala określić, które znaki mają być rozpoznawane przez silnik OCR, co jest przydatne w zadaniach takich jak odczyt tablic rejestracyjnych.

Czy IronOCR może odczytywać kody kreskowe i tabele danych?

Tak, IronOCR można skonfigurować do odczytywania kodów kreskowych i tabel danych poprzez dostosowanie specyficznych ustawień we właściwościach TesseractConfiguration dla precyzyjnej ekstrakcji danych przez OCR.

Czy IronOCR obsługuje języki międzynarodowe, takie jak chiński, japoński i koreański?

IronOCR obsługuje języki międzynarodowe, w tym chiński, japoński i koreański, poprzez opcje wielojęzyczne TesseractConfiguration.

Jakie są zalety korzystania z zaawansowanych konfiguracji OCR w IronOCR?

Korzystanie z zaawansowanych konfiguracji OCR w IronOCR umożliwia dokładniejsze i wydajniejsze rozpoznawanie tekstu, wspierając zadania specjalistyczne, takie jak rozpoznawanie tekstu specyficznego dla języka i ekstrakcja danych strukturalnych.

Czy można zoptymalizować IronOCR do specyficznych zadań OCR?

Tak, IronOCR można zoptymalizować do specyficznych zadań OCR, konfigurowając ustawienia takie jak listy dozwolonych znaków i włączając odczyt kodów kreskowych lub tabel, co poprawia wydajność dla wybranych zastosowań.

Jak włączyć obsługę wielojęzyczności w IronOCR?

Aby włączyć obsługę wielojęzyczności w IronOCR, można dostosować ustawienia języka w TesseractConfiguration, co pozwala silnikowi OCR rozpoznawać tekst w wielu językach.

Co to są listy dozwolonych znaków i jak są używane w IronOCR?

Listy dozwolonych znaków w IronOCR to listy konkretnych znaków, które są skonfigurowane do rozpoznawania przez silnik OCR, idealne dla zadań skupionych, takich jak odczyt cyfr czy określonych wzorów tekstu.

Czy IronOCR może być używany do odczytu formatów danych strukturalnych?

Tak, IronOCR można skonfigurować do odczytu i przetwarzania formatów danych strukturalnych, takich jak kody kreskowe i tabele, oferując wszechstronne zdolności OCR dla różnych potrzeb ekstrakcji danych.

Jakie konfiguracje są dostępne w IronOCR dla zaawansowanego rozpoznawania tekstu?

IronOCR oferuje konfiguracje takie jak listy dozwolonych znaków, obsługa wielojęzyczna i rozpoznawanie kodów kreskowych, aby zwiększyć funkcje zaawansowanego rozpoznawania tekstu dostosowane do specyficznych wymagań.

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 6,151,372 | Wersja: 2026.7 właśnie wydany
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.