Коррекция перекоса при обработке изображений с использованием C#

Коррекция перекоса при обработке изображений — это задача оптимизации изображения. В компьютерном зрении нам нужно правильно расположить наши камеры и датчики, но это часто приводит к большим искажениям. Точно так же при сканировании сканерами иногда выравнивание почти невозможно. Благодаря этому отсканированные изображения и фотографии имеют небольшой перекос (наклон). В этой статье мы узнаем, как выполнять коррекцию перекоса при обработке изображений с помощью C#.

В этой статье должны быть раскрыты следующие темы:

  1. API обработки изображений с коррекцией перекоса C#
  2. Определить угол наклона изображения
  3. Автоматическая коррекция перекоса
  4. Автоматическая коррекция перекоса с помощью фильтра предварительной обработки
  5. Распознавание текста изображения с автоматической коррекцией перекоса
  6. Ручная коррекция перекоса
  7. Ручная коррекция перекоса с помощью фильтра предварительной обработки

C# API обработки изображений с коррекцией перекоса

Для исправления перекоса мы будем использовать API Aspose.OCR для .NET. API позволяет выполнять распознавание отсканированных изображений, фотографий смартфонов, снимков экрана, областей изображения и отсканированных 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. Затем добавьте фильтр AutoSkew().
  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 для .NET без ограничений пробной версии.

Вывод

В этой статье мы узнали, как:

  • выполнять OCR и распознавать текст на изображениях;
  • применять фильтры и обрабатывать изображения;
  • использовать настройки распознавания;
  • сохраните исправленные изображения с помощью C#.

Помимо исправления перекоса при обработке изображений с помощью C#, вы можете узнать больше об Aspose.OCR для .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на нашем бесплатном форуме поддержки.

Смотрите также