Виправлення перекосів у обробці зображень за допомогою C#

Виправлення перекосів при обробці зображень є завданням оптимізації зображення. У комп’ютерному зорі нам потрібно правильно розташувати камери та датчики, але це часто призводить до великих спотворень. Подібним чином, під час сканування за допомогою сканерів іноді вирівнювання майже неможливо. Через це відскановані зображення та фотографії мають невеликий перекіс (нахил). У цій статті ми навчимося виконувати виправлення перекосів під час обробки зображень за допомогою C#.

У цій статті будуть розглянуті такі теми:

  1. C# Skew Correction Image Processing API
  2. Визначити кут перекосу зображення
  3. Автоматична корекція перекосу
  4. Автоматичне виправлення перекосу за допомогою фільтра попередньої обробки
  5. Розпізнавання тексту зображення за допомогою автоматичної корекції перекосу
  6. Ручна корекція перекосу
  7. Ручна корекція перекосу за допомогою фільтра попередньої обробки

C# Skew Correction Image Processing API

Для виправлення перекосів ми будемо використовувати Aspose.OCR for .NET API. API дозволяє виконувати OCR сканованих зображень, фотографій зі смартфона, скріншотів, областей зображення та сканованих PDF-файлів. Це дозволяє зберігати результати розпізнаного тексту в популярні формати документів.

Завантажте DLL API або встановіть його за допомогою NuGet.

PM> Install-Package Aspose.OCR

Виявлення кута перекосу зображення в C#

API надає метод CalculateSkew(string), який обчислює кут перекосу наданого вихідного зображення. Ми можемо легко виявити кут перекосу текстового зображення, виконавши наведені нижче дії.

  1. По-перше, створіть екземпляр класу AsposeOCR.
  2. Викличте метод CalculateSkew(). Він приймає шлях зображення як аргумент.
  3. Нарешті, покажіть розрахований кут перекосу.

У наступному прикладі коду показано, як обчислити кут перекосу зображення в C#.

// Цей приклад коду демонструє, як обчислити кут перекосу зображення.
// Створіть екземпляр AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Розрахувати кут нахилу
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");

// Показати ракурс
Console.WriteLine($"Skew angle: {skew:N1}°");
Виявлення кута перекосу зображення в C#

Вихідне зображення.

Skew angle: 5.8°

Автоматичне виправлення перекосів у C#

Для автоматичного виправлення перекосу можна ввімкнути властивість RecognitionSettings.AutoSkew у налаштуваннях розпізнавання, виконавши наведені нижче дії.

  1. По-перше, створіть екземпляр класу AsposeOCR.
  2. Далі ініціалізуйте об’єкт класу RecognitionSettings.
  3. Потім установіть для властивості AutoSkew значення true.
  4. Після цього викличте метод RecognizeImage() із вихідним зображенням і об’єктом RecognitionSettings.
  5. Нарешті, покажіть розпізнаний текст.

У наведеному нижче прикладі коду показано, як застосувати автоматичне виправлення перекосів у C#.

// Цей приклад коду демонструє, як застосувати автоматичне виправлення перекосу.
// Створіть екземпляр AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Увімкніть автоматичне вирівнювання в налаштуваннях розпізнавання
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;

// Розпізнати зображення
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Показати розпізнаний текст
Console.WriteLine(result.RecognitionText);

Автоматичне виправлення перекосу за допомогою фільтра попередньої обробки в C#

Крім того, ми можемо застосувати фільтр попередньої обробки AutoSkew для автоматичного виправлення перекосу та зберегти виправлене зображення, виконавши наведені нижче дії.

  1. По-перше, створіть екземпляр класу AsposeOCR.
  2. Далі ініціалізуйте об’єкт класу PreprocessingFilter.
  3. Потім додайте фільтр AutoSkew().
  4. Після цього викличте метод PreprocessImage(), щоб застосувати фільтр до вихідного зображення.
  5. Нарешті, збережіть виправлене зображення.

У наведеному нижче прикладі коду показано, як застосувати автоматичне виправлення перекосу за допомогою фільтра попередньої обробки в C#.

// Цей приклад коду демонструє, як застосувати автоматичне виправлення перекосу за допомогою фільтра попередньої обробки та зберегти виправлене зображення.
// Створіть екземпляр AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Додайте фільтр вирівнювання
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Збережіть попередньо оброблене зображення у файл
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);
    }
}
Автоматичне виправлення перекосів за допомогою фільтра в C#

Автоматичне виправлення перекосів за допомогою фільтра в C#.

Розпізнавання тексту зображення за допомогою автоматичного виправлення перекосів у C#

Ми можемо застосувати фільтр попередньої обробки AutoSkew і розпізнати текст зображення, виконавши наведені нижче дії.

  1. По-перше, створіть екземпляр класу AsposeOCR.
  2. Далі ініціалізуйте об’єкт класу PreprocessingFilter.
  3. Потім додайте фільтр AutoSkew().
  4. Тим часом створіть екземпляр класу RecognitionSettings.
  5. Далі призначте фільтри властивості PreprocessingFilters.
  6. Після цього викличте метод RecognizeImage() із вихідним зображенням і об’єктом RecognitionSettings.
  7. Нарешті, покажіть розпізнаний текст.

У наведеному нижче прикладі коду показано, як застосувати автоматичне виправлення перекосу та розпізнати текст у C#.

// Цей приклад коду демонструє, як застосувати автоматичне виправлення перекосу за допомогою фільтра попередньої обробки та розпізнати зображення.
// Створіть екземпляр AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Додайте фільтр вирівнювання
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Додайте фільтри попередньої обробки до налаштувань розпізнавання
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Розпізнати зображення
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Показати результати
Console.WriteLine(result.RecognitionText);

Ручне виправлення перекосів у C#

Для корекції перекосу вручну ми можемо визначити кут перекосу вручну, вказавши властивість SkewAngle у налаштуваннях розпізнавання, виконавши наведені нижче кроки:

  1. По-перше, створіть екземпляр класу AsposeOCR.
  2. Далі ініціалізуйте об’єкт класу RecognitionSettings.
  3. Потім установіть властивість SkewAngle.
  4. Після цього викличте метод RecognizeImage() із вихідним зображенням і об’єктом RecognitionSettings.
  5. Нарешті, покажіть розпізнаний текст.

У наведеному нижче прикладі коду показано, як застосувати корекцію перекосу вручну в C#.

// Цей приклад коду демонструє, як застосувати корекцію перекосу вручну.
// Створіть екземпляр AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Вручну встановіть кут нахилу
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;

// Розпізнати зображення
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Показати результати
Console.WriteLine(result.RecognitionText);

Ручне виправлення перекосу за допомогою фільтра попередньої обробки в C#

Ми також можемо визначити кут перекосу вручну, повернувши зображення на вказаний градус за допомогою фільтра попередньої обробки Rotate.

Будь ласка, виконайте наведені нижче дії, щоб вручну застосувати виправлення перекосу:

  1. По-перше, створіть екземпляр класу AsposeOCR.
  2. Далі ініціалізуйте об’єкт класу PreprocessingFilter.
  3. Потім додайте фільтр Rotate().
  4. Тим часом створіть екземпляр класу RecognitionSettings.
  5. Далі призначте фільтри властивості PreprocessingFilters.
  6. Після цього викличте метод RecognizeImage() із вихідним зображенням і об’єктом RecognitionSettings.
  7. Нарешті, покажіть розпізнаний текст.

У наведеному нижче прикладі коду показано, як застосувати корекцію перекосу вручну за допомогою фільтра попередньої обробки в C#.

// Цей приклад коду демонструє, як застосувати корекцію перекосу вручну та розпізнати текст зображення.
// Створіть екземпляр AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Поверніть зображення на 90 градусів проти годинникової стрілки
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));

// Збережіть попередньо оброблене зображення у файлі для налагодження
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);
    }
}

// Додайте фільтри попередньої обробки до налаштувань розпізнавання
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Розпізнати зображення
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Показати результати
Console.WriteLine(result.RecognitionText);

Отримайте безкоштовну оціночну ліцензію

Ви можете отримати безкоштовну тимчасову ліцензію, щоб спробувати Aspose.OCR for .NET без оціночних обмежень.

Висновок

У цій статті ми дізналися, як:

  • виконувати OCR і розпізнавати текст на зображеннях;
  • застосовувати фільтри та обробляти зображення;
  • використовувати налаштування розпізнавання;
  • зберегти виправлені зображення за допомогою C#.

Окрім виправлення перекосу в обробці зображень за допомогою C#, ви можете дізнатися більше про Aspose.OCR for .NET API за допомогою документації. У разі будь-яких неясностей зв’яжіться з нами на нашому безкоштовному форумі підтримки.

Дивись також