Jak zdefiniować konkretny obszar OCR obrazu w języku C
Aby wyodrębnić tekst z określonego obszaru obrazu w języku C#, należy użyć obiektu Rectangle biblioteki IronOCR w celu zdefiniowania dokładnego obszaru poprzez określenie współrzędnych y, width oraz height, a następnie przekazać go do metody LoadImage w celu przeprowadzenia ukierunkowanego przetwarzania OCR.
Szybki start: Wyodrębnianie tekstu z określonego obszaru obrazu
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
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ć konkretny region OCR, należy utworzyć obiekt Rectangle z przestrzeni nazw IronSoftware.Drawing. Ten obiekt wymaga czterech wartości: współrzędnej x, współrzędnej y, wartości width oraz wartości height, wszystkie podane w pikselach. Współrzędne (x, y) odpowiadają lewemu górnemu rogu wybranego obszaru.
Podczas ładowania obrazu za pomocą LoadImage należy przekazać 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 Rectangle, możesz użyć prostego edytora obrazów, takiego jak MS Paint. Otwórz obraz wejściowy, najedź kursorem myszy na lewy górny i prawy dolny róg określonego obszaru i zanotuj współrzędne pikseli (x, y). Następnie można 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?
Wdrożenie polega na utworzeniu obiektu OcrInput i załadowaniu obrazu z określonym prostokątnym obszarem. 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:
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
using var input = new OcrInput();
// 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 multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);
input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);
input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);
// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
using var input = new OcrInput();
// 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 multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);
input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);
input.Clear();
input.LoadImage("form.png", amountField);
var 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()
Using input As New OcrInput()
' 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 multiple times with different regions
input.LoadImage("form.png", nameField)
Dim nameResult = ocr.Read(input)
input.Clear()
input.LoadImage("form.png", dateField)
Dim dateResult = ocr.Read(input)
input.Clear()
input.LoadImage("form.png", amountField)
Dim amountResult = ocr.Read(input)
' Process each field separately
Console.WriteLine($"Name: {nameResult.Text}")
Console.WriteLine($"Date: {dateResult.Text}")
Console.WriteLine($"Amount: {amountResult.Text}")
End Using
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 obrazku wejściowym i zapisanie go jako nowy plik o nazwie 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.

