Jak wyodrębnić wyniki odczytu w języku C# za pomocą IronOCR
Metoda IronOCR Read zwraca obiekt OcrResult zawierający wyekstrahowany tekst plus szczegółowe metadane, w tym dokładne współrzędne, wymiary, kierunek tekstu i hierarchiczną strukturę (akapit, linie, słowa, znaki) 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 zawartość tekstową, dokładne współrzędne X i Y, wymiary (szerokość i wysokość), kierunek tekstu (od lewej do prawej lub od góry do dołu) oraz lokalizację w obiekcie CropRectangle.
Użyj metody Read z IronTesseract, aby wykonać OCR na obrazie i wyodrębnić tekst pierwszego słowa używając kolekcji WORDs.
-
1Install IronOCR with NuGet Package Manager
-
2Skopiuj i uruchom ten fragment kodu.
string wordText = new IronTesseract().Read("file.jpg").WORDs[0].Text;C# -
3Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do uzyskiwania dostępu do wyników odczytu
- Przygotuj docelowy obraz i dokument PDF
- Użyj metody
Read,aby przeprowadzić OCR na zaimportowanym dokumencie - Uzyskaj dostęp do
X,Y,szerokość,wysokość, ikierunek tekstuwyniku - Sprawdź wykryte akapity, wiersze, słowa i porównania znaków WORD
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żesz uzyskać ten dostęp z obiektu OcrResult zwracanego, używając 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 przetwarzania dokumentów zeskanowanych, zdjęć lub zrzutów ekranu, klasa OcrResult daje dokładną kontrolę nad wyodrębnionymi danymi.
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}")
Jak uzyskać dostęp do treści tekstowej z wyników OCR?
Obiekt OcrResult przedstawia wyodrębniony tekst w prosty, intuicyjny sposób, pozwalając programistom używać go bezpośrednio lub integrować z innymi komponentami 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.
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 UsingWynik

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 zapewnia szczegółowe dane o 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.
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;
Console.WriteLine("--- All Detected Coordinates of Paragraphs ---");
// Use a 'for' loop to get an index for each paragraph
for (int i = 0; i < paragraphs.Length; i++)
{
// Get the current paragraph
Paragraph paragraph = paragraphs[i];
// Print the paragraph number, text, and its location
Console.WriteLine($"X: {paragraph.X}"); // X-coordinate (left edge)
Console.WriteLine($"Y: {paragraph.Y}"); // Y-coordinate (top edge)
// Add a blank line for better separation
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
Console.WriteLine("--- All Detected Coordinates of Paragraphs ---")
' Use a 'for' loop to get an index for each paragraph
For i As Integer = 0 To paragraphs.Length - 1
' Get the current paragraph
Dim paragraph As Paragraph = paragraphs(i)
' Print the paragraph number, text, and its location
Console.WriteLine($"X: {paragraph.X}") ' X-coordinate (left edge)
Console.WriteLine($"Y: {paragraph.Y}") ' Y-coordinate (top edge)
' Add a blank line for better separation
Console.WriteLine()
Next
End UsingWynik

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).
- Położenie: 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.
![]() Akapit | ![]() Wiersz |
![]() WORD | ![]() Znak |
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 może nie być tak solidna jak IronBarcode, IronOCR zapewnia wsparcie dla powszechnych typów kodów kreskowych. Aby włączyć wykrywanie kodów kreskowych, ustaw właściwość Configuration.ReadBarCodes na 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.
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 UsingJak 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.

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 umożliwia 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 umożliwia 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 ułatwia prace z tekstem na odpowiednim poziomie dla twojej aplikacji.
Can IronOCR read barcodes and QR codes?
Yes, IronOCR can read common barcode types, including QR codes, by enabling barcode detection in the configuration. This integration allows for comprehensive processing of documents containing both text and barcodes.
How does IronOCR help with hierarchical text analysis?
IronOCR's hierarchical text structure allows developers to work at different granularity levels, such as paragraphs, lines, words, and characters, making it suitable for various applications like document structure analysis and text search functionality.
What advanced features does IronOCR offer for coordinate-based operations?
IronOCR offers OCR region targeting for focused text extraction and Computer Vision capabilities to automatically identify text regions, enhancing precision in coordinate-based applications.
What does the barcode detection output look like in IronOCR?
The barcode detection output in IronOCR includes format identification, decoded values, and precise coordinates, seamlessly integrated with text extraction for efficient processing of mixed content documents.

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ęczników.



