Korekta skosu w przetwarzaniu obrazu przy użyciu języka C#

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:

  1. Interfejs API przetwarzania obrazu z korekcją skosu w języku C#
  2. Wykryj kąt pochylenia obrazu
  3. Automatyczna korekcja przekosu
  4. Automatyczna korekcja skosu z filtrem przetwarzania wstępnego
  5. Rozpoznaj tekst obrazu z automatyczną korekcją przekosu
  6. Ręczna korekcja przekosu
  7. 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:

  1. Najpierw utwórz instancję klasy AsposeOCR.
  2. Wywołaj metodę CalculateSkew(). Przyjmuje ścieżkę obrazu jako argument.
  3. 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}°");
Wykryj kąt pochylenia obrazu w C#

Obraz źródłowy.

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:

  1. Najpierw utwórz instancję klasy AsposeOCR.
  2. Następnie zainicjuj obiekt klasy RecognitionSettings.
  3. Następnie ustaw właściwość AutoSkew na true.
  4. Następnie wywołaj metodę RecognizeImage() z obrazem źródłowym i obiektem RecognitionSettings.
  5. 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:

  1. Najpierw utwórz instancję klasy AsposeOCR.
  2. Następnie zainicjuj obiekt klasy PreprocessingFilter.
  3. Następnie dodaj filtr AutoSkew().
  4. Następnie wywołaj metodę PreprocessImage(), aby zastosować filtr do obrazu źródłowego.
  5. 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);
    }
}
Automatyczna korekcja skosu z filtrem w C#

Automatyczna korekcja pochylenia z filtrem w języku C#.

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:

  1. Najpierw utwórz instancję klasy AsposeOCR.
  2. Następnie zainicjuj obiekt klasy PreprocessingFilter.
  3. Następnie dodaj filtr AutoSkew().
  4. W międzyczasie utwórz instancję klasy RecognitionSettings.
  5. Następnie przypisz filtry do właściwości PreprocessingFilters.
  6. Następnie wywołaj metodę RecognizeImage() z obrazem źródłowym i obiektem RecognitionSettings.
  7. 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:

  1. Najpierw utwórz instancję klasy AsposeOCR.
  2. Następnie zainicjuj obiekt klasy RecognitionSettings.
  3. Następnie ustaw właściwość SkewAngle.
  4. Następnie wywołaj metodę RecognizeImage() z obrazem źródłowym i obiektem RecognitionSettings.
  5. 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:

  1. Najpierw utwórz instancję klasy AsposeOCR.
  2. Następnie zainicjuj obiekt klasy PreprocessingFilter.
  3. Następnie dodaj filtr Rotate().
  4. W międzyczasie utwórz instancję klasy RecognitionSettings.
  5. Następnie przypisz filtry do właściwości PreprocessingFilters.
  6. Następnie wywołaj metodę RecognizeImage() z obrazem źródłowym i obiektem RecognitionSettings.
  7. 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.

Zobacz też