Коррекция перекоса изображения в Java

В компьютерной графике и обработке изображений перекос изображения представляет собой угловое отклонение прямоугольных изображений. Это также известно как наклон или искажение изображения. Термин «перекос» относится к углу изображения. Перекос изображения возникает, когда визуальное положение элементов изображения неравномерно. Перекос может привести к тому, что любые углы будут расположены под углом или даже сдвинуты так, что одна сторона будет длиннее другой. Такие фотографии или отсканированные изображения могут выглядеть искаженными и непривлекательными. В этой статье мы узнаем, как определить перекос изображения программно. Мы также узнаем, как выполнить коррекцию перекоса изображения в Java.

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

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

Java API для коррекции перекоса изображения

Для обнаружения и исправления перекоса изображения мы будем использовать API Aspose.OCR for Java. Он позволяет выполнять распознавание отсканированных изображений, фотографий смартфонов, снимков экрана, областей изображения и отсканированных PDF-файлов. API также позволяет сохранять распознанные текстовые результаты в популярных форматах документов.

Класс AsposeOCR API является основным классом для распознавания текста с изображений. Он предоставляет метод CalcSkewImage(string), который вычисляет угол наклона предоставленного исходного изображения. Он также предоставляет другой метод CalcSkewImageFromUri(String uri), который вычисляет угол наклона изображения, предоставляемого ссылкой URI. Класс PreprocessingFilter является базовым классом для команд обработки изображений. Класс RecognitionSettings API предоставляет настройки распознавания изображений, содержит элементы, позволяющие настроить процесс распознавания.

Пожалуйста, либо загрузите JAR-файл API, либо добавьте следующую конфигурацию pom.xml в приложение Java на основе Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://releases.aspose.com/java/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-ocr</artifactId>
    <version>22.9</version>
</dependency>

Обнаружение угла перекоса изображения в Java

Мы можем легко определить угол наклона текстового изображения, выполнив следующие шаги:

  1. Во-первых, создайте экземпляр класса AsposeOCR.
  2. Вызовите метод CalcSkewImage(). Он принимает путь к изображению в качестве аргумента.
  3. Наконец, покажите рассчитанный угол наклона.

В следующем примере кода показано, как вычислить угол наклона изображения в Java.

// В этом примере кода показано, как вычислить угол наклона изображения.
// Создайте экземпляр AsposeOcr
AsposeOCR api = new AsposeOCR();

// Вычислить угол наклона
double skew = api.CalcSkewImage("C:\\Files\\source.png");

// Показать угол
System.out.println("Skew angle: " + skew + "°.");

Обнаружение угла перекоса изображения по URL-адресу живого изображения

Мы также можем определить угол наклона изображения по действующему URL-адресу, выполнив следующие шаги:

  1. Во-первых, создайте экземпляр класса AsposeOCR.
  2. Вызовите метод CalcSkewImageFromUri(). Он принимает путь к изображению в качестве аргумента.
  3. Наконец, покажите рассчитанный угол наклона.

В следующем примере кода показано, как вычислить угол наклона изображения в Java.

// В этом примере кода показано, как вычислить угол наклона изображения.
// Создайте экземпляр AsposeOcr
AsposeOCR api = new AsposeOCR();

// Вычислить угол наклона
double skew = api.CalcSkewImageFromUri("https://www.aspose.com/sample-ocr-page.png");

// Показать угол
System.out.println("Skew angle: " + skew + "°.");

Автоматическая коррекция перекоса изображения в Java

Мы можем автоматически исправить коррекцию перекоса изображения, выполнив следующие шаги:

  1. Во-первых, создайте экземпляр класса AsposeOCR.
  2. Затем инициализируйте объект класса PreprocessingFilter.
  3. Затем добавьте фильтр AutoSkew().
  4. После этого вызовите метод PreprocessImage(), чтобы применить фильтр к исходному изображению.
  5. Наконец, сохраните исправленное изображение.

В следующем примере кода показано, как применить фильтр предварительной обработки автоматической коррекции перекоса в Java.

// В этом примере кода показано, как применить автоматическую коррекцию перекоса с помощью фильтра предварительной обработки и сохранить исправленное изображение.
// Создайте экземпляр AsposeOcr
AsposeOCR api = new AsposeOCR();

// Добавить фильтр выравнивания
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.AutoSkew());

// Сохранить предварительно обработанное изображение в файл
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);

Распознайте текст изображения с автоматической коррекцией перекоса в Java

Мы можем применить автоматическую коррекцию перекоса и распознать текст, выполнив шаги, указанные ниже:

  1. Во-первых, создайте экземпляр класса AsposeOCR.
  2. Затем инициализируйте объект класса RecognitionSettings.
  3. Затем вызовите setAutoSkew с true в качестве аргумента.
  4. После этого вызовите метод RecognizePage() с исходным изображением и объектом RecognitionSettings.
  5. Наконец, покажите распознанный текст.

В следующем примере кода показано, как применить автоматическую коррекцию перекоса и распознать текст в Java.

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

// Включить автоматическое выравнивание в настройках распознавания
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setAutoSkew(true);

// Распознать изображение
RecognitionResult result = api.RecognizePage("C:\\Files\\source.png", recognitionSettings);

// Показать распознанный текст
System.out.println(result.recognitionText);

Ручная коррекция перекоса изображения в Java

Мы можем определить угол наклона вручную, повернув изображение на указанный градус, выполнив шаги, указанные ниже:

  1. Во-первых, создайте экземпляр класса AsposeOCR.
  2. Затем инициализируйте объект класса PreprocessingFilter.
  3. Затем добавьте угол поворота, используя фильтр метода Rotate().
  4. Затем создайте экземпляр класса RecognitionSettings.
  5. После этого вызовите метод PreprocessImage(), чтобы применить фильтр к исходному изображению.
  6. Наконец, покажите распознанный текст.

В следующем примере кода показано, как применить ручную коррекцию перекоса с помощью фильтра предварительной обработки в Java.

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

// Добавить фильтр выравнивания
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Rotate(-90));

// Сохранить предварительно обработанное изображение в файл
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);

Распознайте текст изображения с ручной коррекцией перекоса изображения в Java

Мы можем определить угол наклона вручную и распознать текст, выполнив шаги, указанные ниже:

  1. Во-первых, создайте экземпляр класса AsposeOCR.
  2. Затем инициализируйте объект класса RecognitionSettings.
  3. Затем вызовите метод setSkew().
  4. После этого вызовите метод RecognizePage() с исходным изображением и объектом RecognitionSettings.
  5. Наконец, покажите распознанный текст.

В следующем примере кода показано, как применить ручную коррекцию перекоса и распознать текст изображения в Java.

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

// Вручную установите угол наклона
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setSkew(6);

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

// Показать результаты
System.out.println(result.recognitionText);

Получите бесплатную пробную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать Aspose.OCR для Java без ограничений на пробную версию.

Вывод

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

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

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

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