Jak zdefiniować konkretny obszar OCR obrazu w języku C
Aby wydobyć tekst z określonego obszaru obrazu w C#, użyj obiektu Rectangle IronOCR, aby zdefiniować dokładny obszar, określając współrzędne y, width i height, a następnie przekaż go do metody LoadImage do ukierunkowanego przetwarzania OCR.
Szybki start: Wyodrębnianie tekstu z określonego obszaru obrazu
-
Install IronOCR with NuGet Package Manager
-
Skopiuj i uruchom ten fragment kodu.
using IronOcr; using IronSoftware.Drawing; // 1. Install IronOCR via NuGet: Install-Package IronOcr var ocr = new IronTesseract(); using var input = new OcrInput(); // 2. Create a Rectangle with coordinates var region = new Rectangle(x: 215, y: 1250, width: 1335, height: 280); // 3. Load image with region input.LoadImage("image.png", region); // 4. Extract text var result = ocr.Read(input); Console.WriteLine(result.Text); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Często wystarczy wyodrębnić tekst z niewielkiej części obrazu, np. całkowitą kwotę z faktury lub konkretne pole z formularza. Skanowanie całego dokumentu jest nieefektywne i może wprowadzać błędy poprzez przechwytywanie nieistotnego tekstu.
IronOCR pozwala poprawić precyzję, wydajność i dokładność poprzez określenie dokładnego prostokątnego obszaru do skanowania. Ten przewodnik zawiera szczegółową instrukcję, jak zdefiniować konkretny obszar OCR, wyodrębnić z niego tekst i wizualnie sprawdzić, czy współrzędne są prawidłowe dla zadań OCR.
Rozpocznij pracę z IronOCR
Jak zdefiniować konkretny obszar obrazu do rozpoznania OCR
- Pobierz bibliotekę C# do definiowania obszaru OCR
- Utwórz instancję silnika OCR
- Określ obszar OCR za pomocą prostokąta
- Załaduj obraz za pomocą
LoadImagewraz z zdefiniowanym prostokątem - Użyj właściwości OcrResult, aby wyświetlić i przetwarzać wyodrębnione dane
Jak przeprowadzić OCR w określonym obszarze?
Aby zdefiniować określony region OCR, tworzysz obiekt Rectangle z przestrzeni nazw IronSoftware.Drawing. Ten obiekt wymaga czterech wartości: współrzędnej x, współrzędnej y, width i height, wszystkie w pikselach. Współrzędne (x, y) reprezentują górny lewy róg żądanego obszaru.
Gdy ładujesz swój obraz za pomocą LoadImage, przekazujesz ten Rectangle jako drugi parametr. Następnie IronOCR ograniczy proces OCR wyłącznie do pikseli znajdujących się w tym polu ograniczającym.
Regionalne OCR jest szczególnie przydatne podczas pracy z dokumentami ustrukturyzowanymi, takimi jak faktury, zeskanowane formularze lub dokumenty tożsamości, w których określone informacje zawsze pojawiają się w przewidywalnych miejscach. Ograniczając działanie OCR tylko do istotnych obszarów, można znacznie poprawić szybkość przetwarzania i zmniejszyć liczbę fałszywych wyników wynikających z niepowiązanego tekstu.
Aby znaleźć współrzędne dla swojego Rectangle, możesz użyć prostego edytora obrazów, jak MS Paint. Otwórz swój obraz wejściowy, najedź myszą na górny lewy i dolny prawy róg określonego regionu i zanotuj współrzędne pikseli (x, y). Możesz wtedy obliczyć właściwości prostokąta: (x1, y1, width, height), gdzie width = x1 oraz height = y1.
Jakiego obrazu powinienem użyć do testów?
Wykorzystamy przykładowy obrazek zawierający trzy akapity. Naszym celem jest wyodrębnienie tylko drugiego akapitu i pominięcie pozostałej części tekstu. Jest to typowy scenariusz, w którym konieczne jest wyodrębnienie określonych pól lub sekcji z większego dokumentu.
Jak zaimplementować regionalne OCR w kodzie?
Implementacja obejmuje stworzenie obiektu OcrInput i załadowanie obrazu ze wskazanym regionem prostokątnym. To podejście działa z różnymi formatami obrazów, w tym JPG, PNG, GIF, TIFF i BMP.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image.cs
using IronOcr;
using IronSoftware.Drawing;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// Define the specific region as a Rectangle
// (x, y) is the top-left corner.
var ContentArea = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);
ocrInput.LoadImage("region-input.png", ContentArea);
var ocrResult = ocrTesseract.Read(ocrInput);
// Print the extracted text
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Dim ocrTesseract As New IronTesseract()
Using ocrInput As New OcrInput()
' Define the specific region as a Rectangle
' (x, y) is the top-left corner.
Dim ContentArea As New Rectangle(x:=215, y:=1250, width:=1335, height:=280)
ocrInput.LoadImage("region-input.png", ContentArea)
Dim ocrResult = ocrTesseract.Read(ocrInput)
' Print the extracted text
Console.WriteLine(ocrResult.Text)
End Using
W przypadku bardziej złożonych scenariuszy można zdefiniować wiele regionów w obrębie tego samego obrazu. Jest to szczególnie przydatne podczas przetwarzania formularzy zawierających wiele pól lub tabel w dokumentach:
:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-3.cs
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);
// Load the same image with a separate OcrInput per region
OcrResult nameResult;
using (var input = new OcrInput())
{
input.LoadImage("form.png", nameField);
nameResult = ocr.Read(input);
}
OcrResult dateResult;
using (var input = new OcrInput())
{
input.LoadImage("form.png", dateField);
dateResult = ocr.Read(input);
}
OcrResult amountResult;
using (var input = new OcrInput())
{
input.LoadImage("form.png", amountField);
amountResult = ocr.Read(input);
}
// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
Imports IronOcr
Imports IronSoftware.Drawing
Dim ocr As New IronTesseract()
' Define multiple regions for different form fields
Dim nameField As New Rectangle(x:=100, y:=200, width:=300, height:=50)
Dim dateField As New Rectangle(x:=100, y:=300, width:=200, height:=50)
Dim amountField As New Rectangle(x:=400, y:=500, width:=150, height:=50)
' Load the same image with a separate OcrInput per region
Dim nameResult As OcrResult
Using input As New OcrInput()
input.LoadImage("form.png", nameField)
nameResult = ocr.Read(input)
End Using
Dim dateResult As OcrResult
Using input As New OcrInput()
input.LoadImage("form.png", dateField)
dateResult = ocr.Read(input)
End Using
Dim amountResult As OcrResult
Using input As New OcrInput()
input.LoadImage("form.png", amountField)
amountResult = ocr.Read(input)
End Using
' Process each field separately
Console.WriteLine($"Name: {nameResult.Text}")
Console.WriteLine($"Date: {dateResult.Text}")
Console.WriteLine($"Amount: {amountResult.Text}")
Jakich rezultatów mogę się spodziewać?
Jak widać na wyjściu konsoli, OCR przetwarza tylko drugi akapit. Takie ukierunkowane podejście gwarantuje, że nieistotny tekst z innych części obrazu nie wpłynie negatywnie na wyniki.
Dokładność regionalnego OCR zależy od kilku czynników:
- Jakość obrazu: Obrazy o wyższej rozdzielczości zazwyczaj dają lepsze wyniki. Rozważ użycie ustawień DPI w celu optymalizacji obrazów.
- Orientacja tekstu: Upewnij się, że tekst jest prawidłowo wyrównany. W razie potrzeby należy zastosować wykrywanie obrotu strony.
- Kontrast i przejrzystość: zastosuj filtry korekcji obrazu, aby poprawić czytelność tekstu.
Jak mogę sprawdzić, czy moje współrzędne są poprawne?
Aby upewnić się, że wybrałeś właściwe współrzędne dla obrazu wejściowego, możesz wyświetlić zdefiniowany obszar ContentArea. Prostym sposobem na to jest narysowanie prostokąta na obrazie wejściowym i zapisanie go jako nowy plik z StampCropRectangleAndSaveAs. Pomaga to w debugowaniu i precyzyjnym dostosowywaniu współrzędnych w celu uzyskania optymalnej wydajności.
Ta technika wizualizacji jest szczególnie pomocna podczas pracy ze złożonymi układami lub gdy trzeba wyróżnić określone obszary tekstu w celu zapewnienia jakości.
Oto obraz wyjściowy po narysowaniu określonego prostokąta ograniczającego na naszym przykładowym obrazie wejściowym z powyższego przykładu.
Jak wyświetlić wybrany region?
:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs
using IronOcr;
using IronSoftware.Drawing;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// Define the specific rectangular area to scan within the image.
// The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
var ContentArea = new Rectangle(x: 4, y: 59, width: 365, height: 26);
ocrInput.LoadImage("region-input.png", ContentArea);
var ocrResult = ocrTesseract.Read(ocrInput);
// Draws the rectangle from above in a blue bounding box on the image for visualization.
ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png");
Imports IronOcr
Imports IronSoftware.Drawing
Dim ocrTesseract = New IronTesseract()
Using ocrInput As New OcrInput()
' Define the specific rectangular area to scan within the image.
' The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
Dim ContentArea As New Rectangle(x:=4, y:=59, width:=365, height:=26)
ocrInput.LoadImage("region-input.png", ContentArea)
Dim ocrResult = ocrTesseract.Read(ocrInput)
' Draws the rectangle from above in a blue bounding box on the image for visualization.
ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png")
End Using
Jak wygląda wizualizacja?
Jasnoniebieski prostokąt potwierdza, że poprawnie wyodrębniliśmy drugi akapit do przetworzenia.
Kiedy należy stosować regionalne OCR?
Regionalne OCR idealnie sprawdza się w kilku typowych sytuacjach:
- Przetwarzanie formularzy: podczas wyodrębniania określonych pól ze standardowych formularzy, w których dane pojawiają się w stałych miejscach.
- Przetwarzanie faktur: Wyodrębnianie określonych wartości, takich jak sumy, daty lub numery faktur, bez przetwarzania całego dokumentu.
- Tablice rejestracyjne: Podczas rozpoznawania tablic rejestracyjnych należy skupić się wyłącznie na obszarze tablicy.
- Dokumenty tożsamości: Wyodrębnianie określonych pól z paszportów lub dowodów osobistych.
- Zrzuty ekranu: Podczas przechwytywania tekstu z określonych elementów interfejsu użytkownika na zrzutach ekranu.
Najlepsze praktyki dotyczące regionalnego OCR
Aby uzyskać optymalne wyniki przy użyciu regionalnego OCR:
- Dodaj odstępy: Dodaj niewielki margines wokół tekstu, aby żadne znaki nie zostały ucięte na krawędziach.
- Przetestuj na przykładowych obrazach: Zawsze weryfikuj współrzędne na reprezentatywnych próbkach przed przetwarzaniem dużych partii.
- Postępowanie z różnicami: Należy uwzględnić niewielkie różnice w położeniu elementów w zeskanowanych dokumentach, tworząc obszary nieco większe niż to konieczne.
- Optymalizacja wydajności: W przypadku przetwarzania wielowątkowego należy przetwarzać różne regiony równolegle.
- Monitoruj pewność: Sprawdź wyniki pewności, aby upewnić się co do dokładności.
Skupiając przetwarzanie OCR na określonych obszarach, można znacznie poprawić zarówno szybkość, jak i dokładność zadań związanych z ekstrakcją tekstu. To ukierunkowane podejście jest niezbędne do tworzenia wydajnych procesów przetwarzania dokumentów w aplikacjach .NET.
Często Zadawane Pytania
Jak wyekstraktować tekst tylko z określonej części obrazu w C#?
Za pomocą IronOCR można wyekstraktować tekst z określonego regionu poprzez utworzenie obiektu Rectangle z wartościami współrzędnych x/y, szerokości i wysokości. Przekaż ten prostokąt jako drugi parametr do metody LoadImage, a IronOCR ograniczy przetwarzanie OCR tylko do zdefiniowanego obszaru.
Jakie są zalety definiowania regionu OCR zamiast skanowania całego obrazu?
Definiowanie określonego regionu OCR za pomocą IronOCR pozwala na zwiększenie szybkości przetwarzania, zwiększenie dokładności oraz redukcję błędów związanych z przechwytywaniem nieistotnego tekstu. Jest to szczególnie przydatne dla strukturalnych dokumentów, gdzie informacje pojawiają się w przewidywalnych lokalizacjach.
Jakie parametry są potrzebne do utworzenia prostokąta dla regionalnego OCR?
Aby utworzyć prostokąt dla regionalnego OCR w IronOCR, potrzebne są cztery wartości w pikselach: współrzędna x, współrzędna y, szerokość i wysokość. Współrzędne (x, y) reprezentują lewy górny róg pożądanego obszaru skanowania.
W jakiej przestrzeni nazw znajduje się obiekt Rectangle dla regionów OCR?
Obiekt Rectangle używany do definiowania regionów OCR w IronOCR znajduje się w przestrzeni nazw IronSoftware.Drawing.
Jakie typy dokumentów najbardziej zyskują na przetwarzaniu za pomocą regionalnego OCR?
Regionalne OCR w IronOCR jest szczególnie skuteczne dla strukturalnych dokumentów, takich jak faktury, zeskanowane formularze i dokumenty tożsamości, gdzie określone informacje systematycznie pojawiają się w tych samych miejscach.
Czy IronOCR obsługuje wiele języków?
IronOCR obsługuje wiele języków, co czyni go wszechstronnym narzędziem dla globalnych aplikacji wymagających rozpoznawania tekstu w różnych językach.
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.

