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

У комп’ютерній графіці та обробці зображень перекіс зображення – це кутове відхилення прямокутних зображень. Це також відоме як нахил або спотворення зображення. Термін «перекіс» стосується кута зображення. Перекіс зображення виникає, коли візуальне положення елементів на зображенні неоднорідне. Перекіс може призвести до того, що будь-які кути будуть під кутом або навіть зміщені так, що одна сторона буде довшою за іншу. Такі фотографії або скановані зображення можуть виглядати спотвореними та непривабливими. У цій статті ми навчимося програмно виявляти перекіс зображення. Ми також навчимося виконувати корекцію перекосу зображення в Java.

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

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

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

Для виявлення та виправлення перекосу зображення ми будемо використовувати Aspose.OCR for Java API. Він дозволяє виконувати OCR сканованих зображень, фотографій зі смартфона, скріншотів, ділянок зображення та сканованих 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 з істинним аргументом.
  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 for Java без оціночних обмежень.

Висновок

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

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

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

Дивись також