Jak wyodrębnić wyniki odczytu w języku C# za pomocą IronOCR

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

Metoda Read w IronOCR zwraca obiekt OcrResult zawierający wyodrębniony tekst oraz szczegółowe metadane, w tym dokładne współrzędne, wymiary, kierunek tekstu i strukturę hierarchiczną (akapitów, linii, słów, znaków) dla każdego wykrytego elementu.

Wynik OCR zawiera wyczerpujące informacje o wykrytych akapitach, wierszach, słowach i poszczególnych znakach.

Dla każdego elementu dostarcza treść tekstową, dokładne współrzędne X i Y, wymiary (szerokość i wysokość), kierunek tekstu (z lewej do prawej lub z góry na dół) oraz lokalizację w obiekcie CropRectangle.

Szybki start: Pobieranie tekstu z pierwszego wykrytego słowa WORD

Użyj metody Read z IronTesseract, aby zastosować OCR do obrazu i wyodrębnić tekst pierwszego słowa za pomocą kolekcji WORDs.

  1. Install IronOCR with NuGet Package Manager

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

    string wordText = new IronTesseract().Read("file.jpg").WORDs[0].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

Jakie dane mogę wyodrębnić z wyników OCR?

Wartość wyniku zawiera nie tylko wyodrębniony tekst, ale także informacje o stronach, akapitach, wierszach, słowach, znakach i BarCodes wykrytych w dokumentach PDF i obrazach przez IronOCR. Można uzyskać dostęp do tych informacji z zwracanego obiektu OcrResult przy użyciu metody Read.

Kompleksowy system wyników IronOCR opiera się na potężnym silniku Tesseract 5, zapewniając programistom możliwości ekstrakcji danych strukturalnych wykraczające poza proste rozpoznawanie tekstu. Niezależnie od tego, czy przetwarzasz zeskanowane dokumenty, zdjęcia czy zrzuty ekranu, klasa OcrResult daje szczegółową kontrolę nad wyodrębnionymi danymi.

:path=/static-assets/ocr/content-code-examples/how-to/read-results-output-information.cs
using IronOcr;
using System;
using static IronOcr.OcrResult;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Retrieve list of detected paragraphs
Paragraph[] paragraphs = ocrResult.Paragraphs;

// Output information to console
Console.WriteLine($"Text: {paragraphs[0].Text}");
Console.WriteLine($"X: {paragraphs[0].X}");
Console.WriteLine($"Y: {paragraphs[0].Y}");
Console.WriteLine($"Width: {paragraphs[0].Width}");
Console.WriteLine($"Height: {paragraphs[0].Height}");
Console.WriteLine($"Text direction: {paragraphs[0].TextDirection}");
Imports IronOcr
Imports System
Imports IronOcr.OcrResult

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Retrieve list of detected paragraphs
Private paragraphs() As Paragraph = ocrResult.Paragraphs

' Output information to console
Console.WriteLine($"Text: {paragraphs(0).Text}")
Console.WriteLine($"X: {paragraphs(0).X}")
Console.WriteLine($"Y: {paragraphs(0).Y}")
Console.WriteLine($"Width: {paragraphs(0).Width}")
Console.WriteLine($"Height: {paragraphs(0).Height}")
Console.WriteLine($"Text direction: {paragraphs(0).TextDirection}")
$vbLabelText   $csharpLabel
Debugger Visual Studio pokazujący wyniki ekstrakcji OCR wraz ze współrzędnymi i tekstem z japońskiego dokumentu biznesowego

Jak uzyskać dostęp do treści tekstowej z wyników OCR?

Obiekt OcrResult przedstawia wyodrębniony tekst w prosty, intuicyjny sposób, umożliwiając programistom bezpośrednie jego wykorzystanie lub integrację z innymi składnikami aplikacji. Struktura hierarchiczna odzwierciedla naturalną organizację tekstu dokumentu, co ułatwia pracę z treścią na różnych poziomach szczegółowości.

W przypadku aplikacji wymagających obsługi wielu języków, IronOCR płynnie obsługuje dokumenty wielojęzyczne, zachowując ten sam format wyników we wszystkich 125 obsługiwanych językach.

Poniższy przykład kodu drukuje tekst w pętli w celu weryfikacji wyników.

:path=/static-assets/ocr/content-code-examples/how-to/read-results-output-text.cs
using IronOcr;
using System;
using static IronOcr.OcrResult;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sampleText.png");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Retrieve list of detected paragraphs
Paragraph[] paragraphs = ocrResult.Paragraphs;

// Loop through each paragraph in the array
Console.WriteLine("--- All Detected Paragraphs ---");
foreach (Paragraph paragraph in paragraphs)
{
    // Print the text of the current paragraph
    Console.WriteLine(paragraph.Text);

    // Add a blank line for better separation (optional)
    Console.WriteLine();
}
Imports IronOcr
Imports System
Imports IronOcr.OcrResult

' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()

' Add image
Using imageInput As New OcrImageInput("sampleText.png")
    ' Perform OCR
    Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)

    ' Retrieve list of detected paragraphs
    Dim paragraphs As Paragraph() = ocrResult.Paragraphs

    ' Loop through each paragraph in the array
    Console.WriteLine("--- All Detected Paragraphs ---")
    For Each paragraph As Paragraph In paragraphs
        ' Print the text of the current paragraph
        Console.WriteLine(paragraph.Text)

        ' Add a blank line for better separation (optional)
        Console.WriteLine()
    Next
End Using
$vbLabelText   $csharpLabel

Wynik

Terminal wyświetlający wyniki wykrywania akapitów przez OCR wraz z wyodrębnionym tekstem dotyczącym Masayoshi Sona i Yasumitsu Shigety

Wynik wyświetlany w konsoli pokazuje, jak IronOCR precyzyjnie wyodrębnia tekst akapitu linia po linii. Silnik automatycznie wykrywa granice akapitów, dzięki czemu idealnie nadaje się do przetwarzania złożonych dokumentów zawierających wiele bloków tekstu.

Jak uzyskać współrzędne lokalizacji wykrytego tekstu?

Oprócz wyodrębnionego tekstu, OcrResult dostarcza szczegółowe dane dotyczące lokalizacji. Te informacje przestrzenne mają kluczowe znaczenie dla aplikacji, które muszą zachować wierność układu lub wykonywać ukierunkowane wyodrębnianie tekstu z określonych obszarów dokumentu. Układ współrzędnych wykorzystuje standardowe pomiary w pikselach od lewego górnego rogu strony.

Aby zwiększyć precyzję operacji opartych na współrzędnych, warto rozważyć użycie funkcji OCR do wyodrębniania określonych obszarów lub wykorzystać możliwości Computer Vision do automatycznej identyfikacji fragmentów tekstu.

Poniższy kod pokazuje iterację nad każdym akapitem i wyświetlanie jego współrzędnych (X i Y) w konsoli za pomocą komendy PRINT.

:path=/static-assets/ocr/content-code-examples/how-to/read-results-output-text.cs
using IronOcr;
using System;
using static IronOcr.OcrResult;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sampleText.png");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Retrieve list of detected paragraphs
Paragraph[] paragraphs = ocrResult.Paragraphs;

// Loop through each paragraph in the array
Console.WriteLine("--- All Detected Paragraphs ---");
foreach (Paragraph paragraph in paragraphs)
{
    // Print the text of the current paragraph
    Console.WriteLine(paragraph.Text);

    // Add a blank line for better separation (optional)
    Console.WriteLine();
}
Imports IronOcr
Imports System
Imports IronOcr.OcrResult

' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()

' Add image
Using imageInput As New OcrImageInput("sampleText.png")
    ' Perform OCR
    Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)

    ' Retrieve list of detected paragraphs
    Dim paragraphs As Paragraph() = ocrResult.Paragraphs

    ' Loop through each paragraph in the array
    Console.WriteLine("--- All Detected Paragraphs ---")
    For Each paragraph As Paragraph In paragraphs
        ' Print the text of the current paragraph
        Console.WriteLine(paragraph.Text)

        ' Add a blank line for better separation (optional)
        Console.WriteLine()
    Next
End Using
$vbLabelText   $csharpLabel

Wynik

Wynik terminala pokazujący współrzędne akapitów wykrytych przez OCR z wartościami X,Y: (29,30), (28,74) i (27,362)

Wynik przedstawia trzy zestawy współrzędnych odpowiadających trzem akapitom. Współrzędne te można wykorzystać do rysowania prostokątów ograniczających, wyodrębniania określonych obszarów lub zachowania relacji przestrzennych między elementami tekstu.

Jakie inne atrybuty są dostępne w wynikach OCR?

Oprócz tekstu i współrzędnych tekstu IronOCR dostarcza dodatkowych informacji. Dla każdego elementu tekstu (akapity, wiersze, słowa i pojedyncze znaki) dostępne są następujące informacje:

  • Tekst: Rzeczywisty tekst w postaci ciągu znaków.
  • X: Odległość od lewej krawędzi strony w pikselach.
  • Y: Odległość od górnej krawędzi strony w pikselach.
  • Szerokość: Szerokość w pikselach.
  • Wysokość: Wysokość w pikselach.
  • Kierunek tekstu: Kierunek, w którym tekst był czytany (od lewej do prawej lub od góry do dołu).
  • Lokalizacja: Prostokąt wskazujący położenie tego tekstu na stronie w pikselach.

Te cechy są szczególnie przydatne podczas wdrażania:

  • Systemy podświetlania tekstu i adnotacji
  • Automatyczne wykrywanie pól formularzy
  • Zachowanie układu podczas konwersji dokumentów
  • Przestrzenna analiza tekstu w celu ekstrakcji danych

W celu debugowania i wizualizacji należy użyć funkcji podświetlania tekstu, aby wizualnie zweryfikować dokładność wykrytych fragmentów.

Jak porównać akapity, wiersze, słowa i znaki?

Hierarchiczna struktura tekstu IronOCR pozwala programistom pracować na poziomie szczegółowości odpowiednim dla ich konkretnego przypadku użycia. Zrozumienie różnic między tymi elementami pomaga dobrać odpowiedni poziom szczegółowości dla danej aplikacji.

Poniżej znajduje się porównanie wykrytych akapitów, wierszy, słów i znaków.

Wyróżnione profile biograficzne japońskich przedsiębiorców technologicznych Masayoshi Son i Yasumitsu Shigeta
Dokument z zaznaczonymi na czerwono profilami japońskich menedżerów z branży technologicznej: Masayoshi Son i Yasumitsu Shigeta
Funkcja podświetlania tekstu pokazująca czerwone ramki nakładające się na wybrane słowa w akapicie dotyczącym inwestycji technologicznych
Wykrywanie tekstu na poziomie znaków pokazujące granice poszczególnych znaków w wynikach OCR

Każdy poziom szczegółowości służy innym celom:

  • Akapity: Najlepsze do analizy struktury dokumentu i zbiorczego wyodrębniania tekstu
  • Wiersze: Przydatne do zachowania kolejności czytania i przetwarzania danych tabelarycznych
  • WORD: Idealne do funkcji wyszukiwania i analizy tekstu
  • Znaki: Idealne do sprawdzania pisowni i precyzyjnej edycji tekstu

Czy IronOCR potrafi odczytywać kody kreskowe i kody QR?

Tak, IronOCR potrafi odczytywać kody kreskowe i kody QR. Chociaż funkcja ta może nie być tak rozbudowana jak IronBarcode, IronOCR zapewnia obsługę popularnych typów kodów kreskowych. Aby włączyć wykrywanie kodów kreskowych, należy ustawić właściwość Configuration.ReadBarCodes na wartość true. Ta zintegrowana funkcjonalność sprawia, że IronOCR jest doskonałym wyborem do przetwarzania dokumentów zawierających zarówno tekst, jak i BarCodes, takich jak faktury, etykiety wysyłkowe czy katalogi produktów.

Dodatkowo, wartościowe informacje można wyodrębnić z wykrytych kodów kreskowych, w tym format, wartość, współrzędne (x, y), wysokość, szerokość i lokalizację jako obiekt IronSoftware.Drawing.Rectangle. Klasa Rectangle w IronDrawing umożliwia precyzyjne pozycjonowanie w dokumencie.

W przypadku bardziej zaawansowanych scenariuszy odczytu kodów kreskowych zapoznaj się z obszernymi przykładami odczytu kodów kreskowych w naszej dokumentacji.

:path=/static-assets/ocr/content-code-examples/how-to/read-results-barcodes.cs
using IronOcr;
using System;
using static IronOcr.OcrResult;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Enable barcodes detection
ocrTesseract.Configuration.ReadBarCodes = true;

// Add image
using OcrInput ocrInput = new OcrInput();
ocrInput.LoadPdf("sample.pdf");

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(ocrInput);

// Output information to console
foreach(var barcode in ocrResult.Barcodes)
{
    Console.WriteLine("Format = " + barcode.Format);
    Console.WriteLine("Value = " + barcode.Value);
    Console.WriteLine("X = " + barcode.X);
    Console.WriteLine("Y = " + barcode.Y);
}
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports System
Imports IronOcr.OcrResult

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Enable barcodes detection
ocrTesseract.Configuration.ReadBarCodes = True

' Add image
Using ocrInput As New OcrInput()
	ocrInput.LoadPdf("sample.pdf")
	
	' Perform OCR
	Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
	
	' Output information to console
	For Each barcode In ocrResult.Barcodes
		Console.WriteLine("Format = " & barcode.Format)
		Console.WriteLine("Value = " & barcode.Value)
		Console.WriteLine("X = " & barcode.X)
		Console.WriteLine("Y = " & barcode.Y)
	Next barcode
	Console.WriteLine(ocrResult.Text)
End Using
$vbLabelText   $csharpLabel

Jak wygląda wynik wykrywania BarCodes?

Funkcja wykrywania kodów kreskowych w IronOCR płynnie integruje się z ekstrakcją tekstu, zapewniając ujednolicone wyniki obejmujące zarówno treść tekstową, jak i dane z kodów kreskowych. Ta podwójna funkcja jest cenna w automatycznych procesach przetwarzania dokumentów, gdzie konieczne jest zarówno wyodrębnianie, jak i korelowanie obu typów informacji.

Konsola debugowania pokazująca wyniki wykrywania kodów QR i kodów kreskowych EAN8 wraz z formatami, wartościami i współrzędnymi

Wynik pokazuje zdolność IronOCR do jednoczesnego wykrywania wielu typów BARCODE-ów, zapewniając identyfikację formatu (takiego jak QRCode lub EAN8), zdekodowane wartości oraz precyzyjne informacje o współrzędnych dla każdego wykrytego BARCODE-a. Te kompleksowe dane pozwalają programistom tworzyć zaawansowane aplikacje do przetwarzania dokumentów, które efektywnie obsługują różne typy treści.

Często Zadawane Pytania

Jakie informacje zawiera obiekt OcrResult?

Obiekt OcrResult z IronOCR zawiera wydobyty tekst oraz szczegolowe metadane, w tym dokladne wspolrzedne X/Y, wymiary (szerokosc i wysokosc), kierunek tekstu (lewo-prawo lub gora-dol) oraz strukture hierarchiczna zorganizowana jako akapity, linie, slowa i pojedyncze znaki dla kazdego wykrytego elementu.

Jak szybko wydobyc pierwsze slowo z wyniku OCR?

Mozesz wydobyc tekst pierwszego slowa za pomoca metody Read z IronOCR i uzyskac dostep do kolekcji Words: `string wordText = new IronTesseract().Read("file.jpg").Words[0].Text;`. To umozliwia natychmiastowy dostep do pojedynczych elementow slow z wynikow OCR.

Jakie rodzaje danych wspolrzednych sa dostepne w wynikach OCR?

IronOCR dostarcza dokladne wspolrzedne X i Y dla kazdego wykrytego elementu (akapity, linie, slowa i znaki), wraz z wymiarami szerokosci i wysokosci. Dane te sa dostepne poprzez obiekt CropRectangle, co umozliwia dokladne sledzenie lokalizacji elementow tekstowych.

Czy moge wydobyc metadane poza samymi tresciami tekstowymi?

Tak, IronOCR wydobywa wszechstronne metadane, w tym strony, akapity, linie, slowa, znaki, a nawet kody kreskowe odnalezione w dokumentach PDF i obrazach. Obiekt OcrResult udostepnia informacje o kierunku tekstu, strukturze hierarchicznej i informacji przestrzennej dla kazdego elementu.

Jakie typy dokumentow moga byc przetwarzane na potrzeby wynikow OCR?

IronOCR moze przetwarzac rozne typy dokumentow, w tym dokumenty skanowane, zdjecia, zrzuty ekranu, pliki PDF i obrazy. Metoda Read dziala spójnie we wszystkich tych formatach, zwracajac ten sam strukturalny obiekt OcrResult z pelnymi metadanymi.

Jak zorganizowany jest wydobyty tekst w wynikach?

IronOCR organizuje wydobyty tekst w strukturze hierarchicznej odwzorowujacej naturalna organizacje dokumentu. Obiekt OcrResult przedstawia tresci na roznych poziomach szczególowosci - od calej strony az po pojedyncze znaki - co ulatwia prace z tekstem na odpowiednim poziomie dla twojej aplikacji.

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.