Corrección de sesgo de imagen en Java

En gráficos por computadora y procesamiento de imágenes, la inclinación de la imagen es una desviación del ángulo de las imágenes rectangulares. También se conoce como inclinación o distorsión de la imagen. El término “sesgo” se refiere al ángulo de una imagen. La inclinación de la imagen se produce cuando la posición visual de los elementos de una imagen no es uniforme. La inclinación puede hacer que las esquinas estén en ángulo, o incluso desplazadas, de modo que un lado sea más largo que el otro. Tales fotos o imágenes escaneadas pueden verse distorsionadas y poco atractivas. En este artículo, aprenderemos cómo detectar imágenes sesgadas mediante programación. También aprenderemos cómo realizar la corrección de sesgo de imagen en Java.

En este artículo se tratarán los siguientes temas:

  1. API de Java para la corrección de la inclinación de la imagen
  2. Detectar ángulo de inclinación de la imagen
  3. Detectar el ángulo de inclinación de la imagen de la imagen en vivo
  4. Corrección automática de inclinación de imagen
  5. Reconocer texto de imagen con corrección automática de inclinación
  6. Corrección manual de inclinación de imagen
  7. Reconocer texto de imagen con corrección manual de inclinación de imagen

API de Java para la corrección de la inclinación de la imagen

Para la detección y corrección de imágenes sesgadas, utilizaremos la API Aspose.OCR para Java. Permite realizar OCR en imágenes escaneadas, fotos de teléfonos inteligentes, capturas de pantalla, áreas de una imagen y archivos PDF escaneados. La API también permite guardar los resultados de texto reconocidos en formatos de documentos populares.

La clase AsposeOCR de la API es la clase principal para reconocer el texto de las imágenes. Proporciona el método CalcSkewImage(string) que calcula el ángulo de inclinación de la imagen de origen proporcionada. También proporciona otro método CalcSkewImageFromUri(String uri) que calcula el ángulo de inclinación de una imagen proporcionada por el enlace URI. La clase PreprocessingFilter es la clase base para los comandos de procesamiento de imágenes. La clase RecognitionSettings de la API proporciona configuraciones para el reconocimiento de imágenes y contiene elementos que permiten personalizar el proceso de reconocimiento.

Descargue el JAR de la API o agregue la siguiente configuración pom.xml en una aplicación Java basada en 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>

Detectar el ángulo de inclinación de la imagen en Java

Podemos detectar fácilmente el ángulo de inclinación de una imagen de texto siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. Llame al método CalcSkewImage(). Toma la ruta de la imagen como argumento.
  3. Finalmente, muestre el ángulo de inclinación calculado.

El siguiente código de ejemplo muestra cómo calcular el ángulo de inclinación de una imagen en Java.

// Este ejemplo de código muestra cómo calcular el ángulo de inclinación de una imagen.
// Crear una instancia de AsposeOcr
AsposeOCR api = new AsposeOCR();

// Calcular ángulo de inclinación
double skew = api.CalcSkewImage("C:\\Files\\source.png");

// Mostrar ángulo
System.out.println("Skew angle: " + skew + "°.");

Detectar el ángulo de inclinación de la imagen desde la URL de la imagen en vivo

También podemos detectar el ángulo de inclinación de una imagen desde una URL activa siguiendo los pasos que se indican a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. Llame al método CalcSkewImageFromUri(). Toma la ruta de la imagen como argumento.
  3. Finalmente, muestre el ángulo de inclinación calculado.

El siguiente código de ejemplo muestra cómo calcular el ángulo de inclinación de una imagen en Java.

// Este ejemplo de código muestra cómo calcular el ángulo de inclinación de una imagen.
// Crear una instancia de AsposeOcr
AsposeOCR api = new AsposeOCR();

// Calcular ángulo de inclinación
double skew = api.CalcSkewImageFromUri("https://www.aspose.com/sample-ocr-page.png");

// Mostrar ángulo
System.out.println("Skew angle: " + skew + "°.");

Corrección automática de imágenes sesgadas en Java

Podemos corregir automáticamente la corrección de la inclinación de la imagen siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase PreprocessingFilter.
  3. Luego, agregue el filtro AutoSkew().
  4. Después de eso, llame al método PreprocessImage() para aplicar el filtro en la imagen de origen.
  5. Finalmente, guarde la imagen corregida.

El siguiente código de ejemplo muestra cómo aplicar el filtro de preprocesamiento de corrección de desviación automática en Java.

// Este ejemplo de código demuestra cómo aplicar la corrección de inclinación automática mediante el filtro de preprocesamiento y guardar la imagen corregida.
// Crear una instancia de AsposeOcr
AsposeOCR api = new AsposeOCR();

// Agregar filtro de alineación
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.AutoSkew());

// Guardar imagen preprocesada en un archivo
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);

Reconocer texto de imagen con corrección automática de inclinación en Java

Podemos aplicar la corrección automática de inclinación y reconocer el texto siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase RecognitionSettings.
  3. Luego, llama a setAutoSkew con verdadero como argumento.
  4. Después de eso, llame al método RecognizePage() con la imagen de origen y el objeto RecognitionSettings.
  5. Finalmente, muestra el texto reconocido.

El siguiente código de ejemplo muestra cómo aplicar la corrección de desviación automática y reconocer el texto en Java.

// Este ejemplo de código demuestra cómo aplicar la corrección de desviación automática.
// Crear una instancia de AsposeOcr
AsposeOCR api = new AsposeOCR();

// Habilitar la alineación automática en la configuración de reconocimiento
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setAutoSkew(true);

// Reconocer imagen
RecognitionResult result = api.RecognizePage("C:\\Files\\source.png", recognitionSettings);

// Mostrar texto reconocido
System.out.println(result.recognitionText);

Corrección manual de sesgo de imagen en Java

Podemos definir el ángulo de inclinación manualmente girando la imagen al grado especificado siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase PreprocessingFilter.
  3. Luego, agregue el ángulo de rotación usando el filtro del método Rotate().
  4. A continuación, cree una instancia de la clase RecognitionSettings.
  5. Después de eso, llame al método PreprocessImage() para aplicar el filtro en la imagen de origen.
  6. Finalmente, muestra el texto reconocido.

El siguiente código de ejemplo muestra cómo aplicar la corrección de desviación manual con filtro de preprocesamiento en Java.

// Este ejemplo de código demuestra cómo aplicar la corrección de desviación manual.
// Crear una instancia de AsposeOcr
AsposeOCR api = new AsposeOCR();

// Agregar filtro de alineación
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Rotate(-90));

// Guardar imagen preprocesada en un archivo
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);

Reconocer el texto de la imagen con la corrección manual de la inclinación de la imagen en Java

Podemos definir el ángulo de inclinación manualmente y reconocer el texto siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase RecognitionSettings.
  3. Luego, llama al método setSkew().
  4. Después de eso, llame al método RecognizePage() con la imagen de origen y el objeto RecognitionSettings.
  5. Finalmente, muestra el texto reconocido.

El siguiente código de ejemplo muestra cómo aplicar la corrección de desviación manual y reconocer el texto de la imagen en Java.

// Este ejemplo de código demuestra cómo aplicar la corrección de desviación manual.
// Crear una instancia de AsposeOcr
AsposeOCR recognitionEngine = new AsposeOCR();

// Establecer manualmente el ángulo de inclinación
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setSkew(6);

// Reconocer imagen
RecognitionResult result = recognitionEngine.RecognizePage("C:\\Files\\source.png", recognitionSettings);

// Mostrar resultados
System.out.println(result.recognitionText);

Obtenga una licencia de evaluación gratuita

Puede obtener una licencia temporal gratuita para probar Aspose.OCR para Java sin limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido a:

  • realizar OCR y reconocer texto en imágenes;
  • aplicar filtros y procesar imágenes;
  • usar configuraciones de reconocimiento;
  • guarde las imágenes corregidas usando Java.

Además de la corrección de la inclinación de la imagen en Java, puede obtener más información sobre Aspose.OCR para la API de Java utilizando documentación. En caso de cualquier ambigüedad, no dude en contactarnos en nuestro foro de soporte gratuito.

Ver también