Korekta skosu w przetwarzaniu obrazu jest zadaniem optymalizacji obrazu. W wizji komputerowej musimy odpowiednio ustawić nasze kamery i czujniki, ale często prowadzi to do dużych zniekształceń. Podobnie w przypadku skanowania za pomocą skanerów czasami wyrównanie jest prawie niemożliwe. Z tego powodu zeskanowane obrazy i fotografie mają niewielkie przekrzywienie (pochylenie). W tym artykule dowiemy się, jak wykonać korekcję skosu w przetwarzaniu obrazu przy użyciu języka C#.
W tym artykule zostaną omówione następujące tematy:
- Interfejs API przetwarzania obrazu z korekcją skosu w języku C#
- Wykryj kąt pochylenia obrazu
- Automatyczna korekcja przekosu
- Automatyczna korekcja skosu z filtrem przetwarzania wstępnego
- Rozpoznaj tekst obrazu z automatyczną korekcją przekosu
- Ręczna korekcja przekosu
- Ręczna korekcja skosu z filtrem przetwarzania wstępnego
Interfejs API przetwarzania obrazu korekcji pochylenia C#
Do korekcji pochylenia będziemy używać API Aspose.OCR for .NET. Interfejs API umożliwia wykonywanie rozpoznawania OCR na zeskanowanych obrazach, zdjęciach smartfonów, zrzutach ekranu, obszarach obrazu i zeskanowanych plikach PDF. Umożliwia zapisywanie rozpoznanych wyników tekstowych w popularnych formatach dokumentów.
Proszę pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.
PM> Install-Package Aspose.OCR
Wykryj kąt pochylenia obrazu w C#
Interfejs API udostępnia metodę CalculateSkew(string), która oblicza kąt pochylenia dostarczonego obrazu źródłowego. Możemy łatwo wykryć kąt pochylenia obrazu tekstowego, wykonując czynności podane poniżej:
- Najpierw utwórz instancję klasy AsposeOCR.
- Wywołaj metodę CalculateSkew(). Przyjmuje ścieżkę obrazu jako argument.
- Na koniec pokaż obliczony kąt skosu.
Poniższy przykładowy kod pokazuje, jak obliczyć kąt pochylenia obrazu w języku C#.
// Ten przykład kodu demonstruje, jak obliczyć kąt pochylenia obrazu.
// Utwórz instancję AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Oblicz kąt skosu
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");
// Pokaż kąt
Console.WriteLine($"Skew angle: {skew:N1}°");
Skew angle: 5.8°
Automatyczna korekcja pochylenia w C#
W celu automatycznej korekcji pochylenia możemy włączyć właściwość RecognitionSettings.AutoSkew w ustawieniach rozpoznawania, wykonując poniższe czynności:
- Najpierw utwórz instancję klasy AsposeOCR.
- Następnie zainicjuj obiekt klasy RecognitionSettings.
- Następnie ustaw właściwość AutoSkew na true.
- Następnie wywołaj metodę RecognizeImage() z obrazem źródłowym i obiektem RecognitionSettings.
- Na koniec pokaż rozpoznany tekst.
Poniższy przykładowy kod pokazuje, jak zastosować automatyczną korekcję pochylenia w języku C#.
// Ten przykład kodu pokazuje, jak zastosować automatyczną korektę pochylenia.
// Utwórz instancję AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Włącz automatyczne prostowanie w ustawieniach rozpoznawania
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;
// Rozpoznaj obraz
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Pokaż rozpoznany tekst
Console.WriteLine(result.RecognitionText);
Automatyczna korekcja skosu z filtrem przetwarzania wstępnego w języku C#
Alternatywnie możemy zastosować filtr wstępnego przetwarzania AutoSkew w celu automatycznej korekcji skosu i zapisać poprawiony obraz, wykonując poniższe czynności:
- Najpierw utwórz instancję klasy AsposeOCR.
- Następnie zainicjuj obiekt klasy PreprocessingFilter.
- Następnie dodaj filtr AutoSkew().
- Następnie wywołaj metodę PreprocessImage(), aby zastosować filtr do obrazu źródłowego.
- Na koniec zapisz poprawiony obraz.
Poniższy przykładowy kod pokazuje, jak zastosować automatyczną korekcję pochylenia z filtrem przetwarzania wstępnego w języku C#.
// Ten przykład kodu demonstruje, jak zastosować automatyczną korekcję pochylenia przy użyciu filtra przetwarzania wstępnego i zapisać poprawiony obraz.
// Utwórz instancję AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Dodaj filtr prostowania
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
// Zapisz wstępnie przetworzony obraz do pliku
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
}
Rozpoznaj tekst obrazu z automatyczną korekcją skosu w C#
Możemy zastosować filtr wstępnego przetwarzania AutoSkew i rozpoznać tekst obrazu, wykonując czynności podane poniżej:
- Najpierw utwórz instancję klasy AsposeOCR.
- Następnie zainicjuj obiekt klasy PreprocessingFilter.
- Następnie dodaj filtr AutoSkew().
- W międzyczasie utwórz instancję klasy RecognitionSettings.
- Następnie przypisz filtry do właściwości PreprocessingFilters.
- Następnie wywołaj metodę RecognizeImage() z obrazem źródłowym i obiektem RecognitionSettings.
- Na koniec pokaż rozpoznany tekst.
Poniższy przykładowy kod pokazuje, jak zastosować automatyczną korekcję pochylenia i rozpoznać tekst w języku C#.
// Ten przykład kodu demonstruje, jak zastosować automatyczną korektę pochylenia przy użyciu filtra przetwarzania wstępnego i rozpoznać obraz.
// Utwórz instancję AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Dodaj filtr prostowania
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
// Dołącz filtry przetwarzania wstępnego do ustawień rozpoznawania
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;
// Rozpoznaj obraz
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Pokaż wyniki
Console.WriteLine(result.RecognitionText);
Ręczna korekcja pochylenia w C#
W przypadku ręcznej korekcji skosu możemy ręcznie zdefiniować kąt skosu, określając właściwość SkewAngle w ustawieniach rozpoznawania, wykonując poniższe czynności:
- Najpierw utwórz instancję klasy AsposeOCR.
- Następnie zainicjuj obiekt klasy RecognitionSettings.
- Następnie ustaw właściwość SkewAngle.
- Następnie wywołaj metodę RecognizeImage() z obrazem źródłowym i obiektem RecognitionSettings.
- Na koniec pokaż rozpoznany tekst.
Poniższy przykładowy kod pokazuje, jak zastosować ręczną korekcję pochylenia w języku C#.
// Ten przykład kodu pokazuje, jak zastosować ręczną korekcję pochylenia.
// Utwórz instancję AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Ręcznie ustaw kąt pochylenia
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;
// Rozpoznaj obraz
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Wyświetl wyniki
Console.WriteLine(result.RecognitionText);
Ręczna korekcja skosu z filtrem przetwarzania wstępnego w języku C#
Kąt skosu możemy również zdefiniować ręcznie, obracając obraz o określony stopień za pomocą filtra wstępnego przetwarzania Rotate.
Wykonaj poniższe czynności, aby ręcznie zastosować korektę przekosu:
- Najpierw utwórz instancję klasy AsposeOCR.
- Następnie zainicjuj obiekt klasy PreprocessingFilter.
- Następnie dodaj filtr Rotate().
- W międzyczasie utwórz instancję klasy RecognitionSettings.
- Następnie przypisz filtry do właściwości PreprocessingFilters.
- Następnie wywołaj metodę RecognizeImage() z obrazem źródłowym i obiektem RecognitionSettings.
- Na koniec pokaż rozpoznany tekst.
Poniższy przykładowy kod pokazuje, jak zastosować ręczną korekcję pochylenia z filtrem przetwarzania wstępnego w języku C#.
// Ten przykład kodu pokazuje, jak zastosować ręczną korekcję pochylenia i rozpoznać tekst obrazu.
// Utwórz instancję AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Obróć obraz o 90 stopni w kierunku przeciwnym do ruchu wskazówek zegara
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));
// Zapisz wstępnie przetworzony obraz do pliku w celu debugowania
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
}
// Dołącz filtry przetwarzania wstępnego do ustawień rozpoznawania
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;
// Rozpoznaj obraz
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Pokaż wyniki
Console.WriteLine(result.RecognitionText);
Uzyskaj bezpłatną licencję ewaluacyjną
Możesz uzyskać bezpłatną tymczasową licencję, aby wypróbować Aspose.OCR for .NET bez ograniczeń ewaluacyjnych.
Wniosek
W tym artykule dowiedzieliśmy się, jak:
- wykonywać OCR i rozpoznawać tekst na obrazach;
- stosować filtry i przetwarzać obrazy;
- użyj ustawień rozpoznawania;
- zapisz poprawione obrazy za pomocą C#.
Oprócz korekcji skosu w przetwarzaniu obrazu przy użyciu C#, możesz dowiedzieć się więcej o Aspose.OCR for .NET API korzystając z dokumentacji. W przypadku jakichkolwiek niejasności prosimy o kontakt na naszym bezpłatnym forum pomocy technicznej.