IRONSOFTWAREHOME
KORZYSTANIE Z IRONOCR

OCR w C# w samouczku CodeProject: Wyodrębnij tekst z obrazów za pomocą IronOCR

Kannaopat Udonpant
Kannapat Udonpant
Updated: 28 czerwca 2026

Optyczne rozpoznawanie znaków (OCR) w języku C# pozwala wyodrębniać tekst nadający się do odczytu maszynowego ze skanowanych dokumentów, plików graficznych i plików TIFF w aplikacjach .NET. Dzięki bibliotece IronOCR, natywnemu pakietowi OCR dla platformy .NET, wystarczy zainstalować jeden pakiet NuGet i za pomocą kilku linii kodu można rozpocząć odczytywanie tekstu z obrazów — bez usług zewnętrznych, bez zależności środowiskowych i bez opłat za każde wywołanie API.

Bezpłatna próba IronOCR, aby śledzić poniższe przykłady kodu.

Jak zainstalować IronOCR w projekcie .NET?

Najszybszym sposobem dodania funkcji OCR do projektu .NET 10 jest skorzystanie z menedżera pakietów NuGet. Otwórz terminal w swoim katalogu projektu i uruchom polecenie .NET CLI, lub użyj Konsoli Managera Pakietów wewnątrz Visual Studio:

PM > Install-Package IronOcr

Po instalacji menedżer pakietów NuGet pobiera wszystkie wymagane zestawy i automatycznie ustawia odniesienia. IronOCR jest przeznaczony dla .NET Framework 4.6.2+, .NET Core 3.1+ oraz .NET 5 do .NET 10, dzięki czemu działa w aplikacjach konsolowych, usługach ASP.NET Core, aplikacjach WPF oraz Azure Functions.

Nie musisz rejestrować klucza licencyjnego, aby przetestować program lokalnie — na wynikach pojawi się znak wodny wersji próbnej, dopóki nie zostanie zastosowana licencja. Dodaj dyrektywę using, a gdy będziesz gotowy do produkcji, podaj swój klucz jednorazowo podczas uruchamiania:

using IronOcr;

// Apply license key before any OCR calls (production only)
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

Szczegóły dotyczące cen i aktywacji można znaleźć na stronie licencyjnej IronOCR.

Jak wyodrębnić tekst z pliku graficznego?

Podstawowy przeplyw OCR obejmuje trzy obiekty: IronTesseract (silnik), OcrInput (kontener wejsciowy) oraz OcrResult (wyjscie). Poniższy przykład odczytuje PNG i drukuje rozpoznany tekst do konsoli.

using IronOcr;

var ocr = new IronTesseract();

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

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

Wynik optycznego rozpoznawania znaków

OCR w samouczku C# CodeProject: Wyodrebnij tekst z obrazow przy uzyciu IronOCR: Obraz 1 - Zrzut ekranu wyjscia OCR

IronTesseract obejmuje silnik Tesseract 5 z przyjaznymi dla .NET ustawieniami domyslnymi i automatycznym zarzadzaniem modelami. OcrInput.LoadImage akceptuje pliki PNG, JPEG, BMP, GIF, TIFF oraz WebP, wiec rzadko trzeba konwertowac format przed przekazaniem obrazu do silnika.

Wlasciwosc OcrResult.Text zwraca zwykly lancuch tekstowy zawierajacy wszystkie rozpoznane znaki polaczone za pomoca nowych linii. Aby uzyskac bogatszy dostep -- ramki graniczne slow, wspolczynniki pewnosci, tekst wedlug akapitow -- nawiguj po kolekcjach result.Pages, result.Paragraphs, result.Words i result.Characters.

Kluczowe właściwości, o których warto wiedzieć:

  • result.Pages[0].Text -- tekst z pojedynczej strony
  • result.Words[n].Text i result.Words[n].Confidence -- dokladnosc na poziomie slowa (0,0 -- 1,0)
  • result.Pages[0].Paragraphs -- segmentacja akapitow dla uporzadkowanego wyciagania

Mozesz rowniez wywolac ocr.ReadAsync(input), aby utrzymac wolny watek interfejsu uzytkownika w aplikacjach desktopowych lub webowych.

Jak przetwarzasz zeskanowane dokumenty i pliki TIFF?

Wielostronicowe pliki TIFF są powszechne w procesach skanowania dokumentów. IronOCR obsluguje je za pomoca LoadImageFrames, co pozwala dokladnie wybrac, ktore ramki (strony) przetworzyc -- przydatne, gdy potrzebujesz tylko wycinka duzego archiwum.

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
int[] pageIndices = { 0, 1, 2 };
input.LoadImageFrames("scanned-documents.tiff", pageIndices);

// Correct skew and remove noise before reading
input.Deskew();
input.DeNoise();

OcrResult result = ocr.Read(input);

foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}:");
    Console.WriteLine(page.Text);
}

Wynik OCR z wielostronicowego pliku TIFF

OCR w samouczku C# CodeProject: Wyodrebnij tekst z obrazow przy uzyciu IronOCR: Obraz 2 - Wyjscie OCR z wielostronicowego TIFF

Deskew obraca obraz, aby skorygowac nachylenie wprowadzone przez plaskie skanery. DeNoise usuwa plamki i artefakty JPEG, ktore myla silnik Tesseract. Razem te dwa filtry wstepne znaczaco poprawiaja dokladnosc rozpoznania na skanach niskiej jakosci.

Dostepne dodatkowe filtry OcrInput dla trudnych materialow zrodlowych:

  • input.Sharpen() -- zwieksza kontrast krawedzi dla zamazanych obrazow
  • input.Binarize() -- konwertuje na czarno-biale dla dokumentow o jakosci faksu
  • input.Scale(200) -- powieksza male obrazy dla lepszego rozdzielania znakow
  • input.Rotate(90) -- koryguje obrotowe orientacje dokumentow

Pełną listę opcji przetwarzania wstępnego oraz informacje o tym, kiedy należy je stosować, można znaleźć w przewodniku po filtrach obrazów IronOCR.

Jak skonfigurować obsługę języków dla OCR?

Domyślnie IronOCR odczytuje tekst w języku angielskim. Aby przetwarzac dokumenty w innych jezykach, zainstaluj pasujaca paczke jezykowa NuGet i ustaw wlasciwosc Language na instancji IronTesseract.

dotnet add package IronOcr.Languages.German, IronOcr.Languages.French, IronOcr.Languages.Japanese

Następnie skonfiguruj silnik i, w przypadku dokumentów dwujęzycznych, dodaj drugi język:

using IronOcr;
using IronOcr.Languages;

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;

// For bilingual documents (e.g. Canadian forms, EU directives)
ocr.AddSecondaryLanguage(OcrLanguage.French);

using var input = new OcrInput();
input.LoadImage("german-invoice.png");

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

IronOCR obsługuje ponad 125 języków, z których każdy jest dystrybuowany jako oddzielny, lekki pakiet NuGet. Dzięki temu plik binarny pozostaje niewielki — zawiera tylko te dane językowe, których aplikacja faktycznie potrzebuje. Silnik laczy podstawowy i dodatkowy model jezykowy podczas rozpoznawania, gdy wywolasz AddSecondaryLanguage.

Jak radzisz sobie z błędami OCR i poprawiasz wyniki rozpoznawania?

Aplikacje produkcyjne wymagają obsługi błędów w procesie OCR. Problemy z jakością obrazu, brakujące pliki lub nieobsługiwane formaty mogą powodować wyjątki. Umieszczenie wywołania w bloku try/catch zapewnia przejrzystą ścieżkę odzyskiwania.

using IronOcr;

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;

try
{
    using var input = new OcrInput();
    input.LoadImage("document.png");
    input.DeNoise();
    input.Deskew();

    OcrResult result = ocr.Read(input);

    if (result.Text.Length > 0)
    {
        Console.WriteLine("Recognised text:");
        Console.WriteLine(result.Text);
    }
    else
    {
        Console.WriteLine("No text was detected in the image.");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"OCR error: {ex.Message}");
}

Kilka dodatkowych ustawień, które pomagają, gdy dokładność jest niższa niż oczekiwano:

  • ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto -- pozwala Tesseractowi automatycznie wybierac uklday jedno- lub wielokolumnowe oraz jednokrokowe
  • ocr.Configuration.ReadBarCodes = false -- wylacza wykrywanie kodow kreskowych jesli przetwarzasz dokumenty skladajace sie tylko z tekstu i chcesz szybszego przetwarzania
  • ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5 -- zapewnia uzycie najszybszego dostepnego silnika

W przypadku formularzy strukturalnych, w których pola pojawiają się w przewidywalnych miejscach, należy użyć OCR opartego na regionach, aby odczytać tylko te obszary, które mają znaczenie:

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

using var input = new OcrInput();
var region = new CropRectangle(x: 50, y: 200, width: 600, height: 100);
input.LoadImage("form.png", region);

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

Ograniczenie rozpoznawania do prostokąta kadrowania skraca czas przetwarzania nawet o 90 procent w przypadku dużych obrazów. Technika ta doskonale nadaje się do wyodrębniania numerów faktur, odczytywania pól formularzy oraz skanowania dokumentów tożsamości. Więcej szczegółów można znaleźć w przewodniku dotyczącym regionu OCR.

Jak Stworzyć Przeszukiwalne PDF z Rozpoznanego Tekstu?

Konwersja archiwów zeskanowanych obrazów na pliki PDF z możliwością wyszukiwania jest jednym z najbardziej wartościowych zastosowań OCR. Plik wynikowy zachowuje oryginalny wygląd, zawierając jednocześnie niewidoczną warstwę tekstową, którą mogą indeksować przeglądarki PDF, wyszukiwarki i czytniki ekranu.

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.Title = "Quarterly Report Q1 2026";
input.LoadImage("page1.png");
input.LoadImage("page2.png");
input.LoadImage("page3.png");

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

Console.WriteLine("Searchable PDF created.");
Console.WriteLine($"Pages processed: {result.Pages.Count}");

Wynik: Dokument PDF z możliwością wyszukiwania

OCR w samouczku C# CodeProject: Wyodrebnij tekst z obrazow przy uzyciu IronOCR: Obraz 3 - Przeszukiwalny PDF utworzony z obrazow wejsciowych

SaveAsSearchablePdf zapisuje plik kompatybilny z PDF/A, w ktorym kazde rozpoznane slowo jest umieszczane na dokladnych wspolrzednych pikseli oryginalnego obrazu. Programy Adobe Acrobat, Preview w systemie macOS oraz Foxit Reader obsługują wyszukiwanie pełnotekstowe w tych plikach natychmiast po ich wygenerowaniu.

Dla przegladarek dokumentow webowych lub dolnych potokow NLP, uzyj result.SaveAsHocrFile("output.hocr") zamiast tego. Format hOCR to otwarty standard XML, który koduje ramki ograniczające poszczególne słowa obok tekstu, umożliwiając podświetlanie wyników wyszukiwania po stronie klienta oraz adnotacje dotyczące dostępności na poziomie słów.

Dostepne dodatkowe formaty wyjscia od OcrResult:

  • result.SaveAsHocrFile("output.hocr") -- hOCR XML z danymi pozycyjnymi
  • result.ToXDocument() -- LINQ-queryable XDocument do przetwarzania programistycznego
  • result.Pages[0].Text -- zwykly tekst na strone dla przeplywow streamingowych

Dla aplikacji, ktore juz pracuja z IronPDF mozesz podlaczyc OcrResult bezposrednio do przeplywow generacji PDF, laczac ekstrakcje OCR z edycja PDF w jednym procesie .NET.

Jak odczytywać BarCodes obok tekstu?

IronOCR potrafi odczytywać kody kreskowe i kody QR osadzone w tym samym obrazie co drukowany tekst, co eliminuje potrzebę uruchamiania osobnej biblioteki kodów kreskowych. Włącz tę funkcję za pomocą jednej właściwości konfiguracyjnej:

using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using var input = new OcrInput();
input.LoadImage("shipping-label.png");

OcrResult result = ocr.Read(input);

Console.WriteLine("Text:");
Console.WriteLine(result.Text);

Console.WriteLine("Barcodes:");
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"  {barcode.Format}: {barcode.Value}");
}

Obsługiwane formaty BarCodes to Code 128, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, PDF417, Data Matrix i QR Code. Pełne informacje znajdują się w przewodniku po odczytywaniu kodów kreskowych IronOCR.

Ta funkcja jest szczególnie przydatna w zastosowaniach logistycznych, medycznych i detalicznych, gdzie etykiety wysyłkowe, opaski pacjentów i metki produktów zawierają zarówno tekst czytelny dla człowieka, jak i BARCODE czytelny dla maszyn.

Jak wypada IronOCR na tle innych rozwiązań OCR dla platformy .NET?

Programiści oceniający biblioteki OCR dla platformy .NET zazwyczaj biorą pod uwagę bibliotekę IronOCR, Tesseract.NET oraz usługi w chmurze, takie jak Google Cloud Vision lub Rozpoznawanie obrazu Azure. Tabela poniżej podsumowuje kluczowe różnice:

Porównanie opcji OCR dla platformy .NET pod kątem kluczowych kryteriów programistów
KryteriaIronOCRTesseract.NETRozpoznawanie obrazu Azure
WdrożenieLokalnie lub w chmurze, bez wywołań zewnętrznychLokalnieDostępne wyłącznie w chmurze, wymaga połączenia z Internetem
InstalacjaPojedynczy pakiet NuGetWiele pakietów + natywne pliki binarneSDK + subskrypcja Azure
Pakiety językowePonad 125 pakietów dostępnych za pośrednictwem NuGetRęczne pobieranie plików tessdataZarządzane przez Azure
Wynik w formacie PDF z możliwością wyszukiwaniaWbudowane wywołanie jednej metodyNie obejmujeNie obejmuje
Wstępne przetwarzanie obrazówPonad 12 wbudowanych filtrówWymagane ręczne przetwarzanie wstępneAutomatyczne (po stronie serwera)
Model cenowyJednorazowa Licencja wieczystaOpen source (Apache 2.0)Rozliczenie za połączenie

Tesseract, utrzymywany przez Google jako projekt open source, stanowi podstawę działania zarówno IronOCR, jak i Tesseract.NET. IronOCR dodaje opakowanie zgodne z idiomami .NET, automatyczne zarządzanie modelami oraz funkcje wyjściowe (PDF z możliwością wyszukiwania, eksport hOCR), których brakuje w surowych powiązaniach Tesseract. Rozpoznawanie obrazu Azure zapewnia najnowocześniejszą dokładność w chmurze, ale wiąże się z opóźnieniami sieciowymi i kosztami za każde wywołanie, co nie jest odpowiednie dla przepływów pracy o dużej objętości lub offline.

W sytuacjach, w których przepisy dotyczące ochrony danych zabraniają wysyłania dokumentów do usług zewnętrznych — np. dokumentacja medyczna, dokumenty prawne, sprawozdania finansowe — odpowiednim wyborem jest biblioteka lokalna, taka jak IronOCR.

Jakie są Twoje kolejne kroki?

Masz teraz elementy potrzebne do dodania funkcji OCR do dowolnej aplikacji .NET 10: instalację przez NuGet, podstawowe wyodrębnianie tekstu z obrazu, przetwarzanie wielostronicowych plików TIFF, konfigurację języka, obsługę błędów, odczyt oparty na regionach, wykrywanie BARCODE-ów oraz generowanie plików PDF z możliwością wyszukiwania.

Aby dowiedzieć się więcej, zapoznaj się z poniższymi zasobami IronOCR:

W przypadku pytań dotyczących licencji lub wdrożenia IronOCR w środowisku produkcyjnym odwiedź stronę licencyjną IronOCR. Bezpłatna licencja próbna usuwa znaki wodne z wyników podczas okresu testowego, a zespół wsparcia Iron Software jest dostępny w przypadku pytań technicznych na każdym poziomie.

Pierwszy krok:
arrow pointer

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta