Correção de distorção de imagem em Java

Em computação gráfica e processamento de imagens, a inclinação da imagem é um desvio angular de imagens retangulares. Também é conhecido como inclinação ou distorção da imagem. O termo “inclinação” refere-se ao ângulo de uma imagem. A inclinação da imagem ocorre quando a posição visual dos elementos em uma imagem não é uniforme. A inclinação pode resultar em qualquer canto em ângulo, ou até mesmo deslocado para que um lado seja mais longo que o outro. Essas fotos ou imagens digitalizadas podem parecer distorcidas e pouco atraentes. Neste artigo, aprenderemos como detectar a distorção da imagem programaticamente. Também aprenderemos como executar a correção de distorção de imagem em Java.

Os seguintes tópicos serão abordados neste artigo:

  1. API Java para correção de distorção de imagem
  2. Detectar ângulo de inclinação da imagem
  3. Detectar ângulo de inclinação da imagem ao vivo
  4. Correção Automática de Inclinação da Imagem
  5. Reconhecer texto de imagem com correção automática de inclinação
  6. Correção de distorção de imagem manual
  7. Reconhecer texto de imagem com correção manual de distorção de imagem

API Java para correção de distorção de imagem

Para detecção e correção de distorção de imagem, usaremos a API Aspose.OCR for Java. Ele permite realizar OCR em imagens digitalizadas, fotos de smartphones, capturas de tela, áreas de uma imagem e PDFs digitalizados. A API também permite salvar os resultados de texto reconhecidos em formatos de documentos populares.

A classe AsposeOCR da API é a classe principal para reconhecer o texto das imagens. Ele fornece o método CalcSkewImage(string) que calcula o ângulo de inclinação da imagem de origem fornecida. Ele também fornece outro método CalcSkewImageFromUri(String uri) que calcula o ângulo de inclinação de uma imagem fornecida pelo link URI. A classe PreprocessingFilter é a classe base para comandos de processamento de imagem. A classe RecognitionSettings da API fornece configurações para o reconhecimento de imagem contendo elementos que permitem personalizar o processo de reconhecimento.

Por favor, faça o download do JAR da API ou adicione a seguinte configuração pom.xml em um aplicativo Java baseado em 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 ângulo de inclinação da imagem em Java

Podemos detectar facilmente o ângulo de inclinação de uma imagem de texto seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Chame o método CalcSkewImage(). Ele usa o caminho da imagem como um argumento.
  3. Finalmente, mostre o ângulo de inclinação calculado.

O código de exemplo a seguir mostra como calcular o ângulo de inclinação de uma imagem em Java.

// Este exemplo de código demonstra como calcular o ângulo de inclinação de uma imagem.
// Crie uma instância do AsposeOcr
AsposeOCR api = new AsposeOCR();

// Calcular ângulo de inclinação
double skew = api.CalcSkewImage("C:\\Files\\source.png");

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

Detectar ângulo de inclinação da imagem a partir do URL da imagem ao vivo

Também podemos detectar o ângulo de inclinação de uma imagem de um URL ao vivo seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Chame o método CalcSkewImageFromUri(). Ele usa o caminho da imagem como um argumento.
  3. Finalmente, mostre o ângulo de inclinação calculado.

O código de exemplo a seguir mostra como calcular o ângulo de inclinação de uma imagem em Java.

// Este exemplo de código demonstra como calcular o ângulo de inclinação de uma imagem.
// Crie uma instância do AsposeOcr
AsposeOCR api = new AsposeOCR();

// Calcular ângulo de inclinação
double skew = api.CalcSkewImageFromUri("https://www.aspose.com/sample-ocr-page.png");

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

Correção automática de distorção de imagem em Java

Podemos corrigir automaticamente a correção de distorção da imagem seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe PreprocessingFilter.
  3. Em seguida, adicione o filtro AutoSkew().
  4. Depois disso, chame o método PreprocessImage() para aplicar o filtro na imagem de origem.
  5. Por fim, salve a imagem corrigida.

O código de amostra a seguir mostra como aplicar o filtro de pré-processamento de correção automática de inclinação em Java.

// This code example demonstrates how to apply auto skew correction using preprocessing filter and save the corrected image.
// Create an instance of the AsposeOcr
AsposeOCR api = new AsposeOCR();

// Add deskew filter
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.AutoSkew());

// Save preprocessed image to file
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);

Reconhecer texto de imagem com correção automática de inclinação em Java

Podemos aplicar a correção automática de inclinação e reconhecer o texto seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe RecognitionSettings.
  3. Em seguida, chame o setAutoSkew com true como argumento.
  4. Depois disso, chame o método RecognizePage() com a imagem de origem e o objeto RecognitionSettings.
  5. Por fim, mostre o texto reconhecido.

O código de exemplo a seguir mostra como aplicar a correção automática de inclinação e reconhecer o texto em Java.

// Este exemplo de código demonstra como aplicar a correção automática de inclinação.
// Crie uma instância do AsposeOcr
AsposeOCR api = new AsposeOCR();

// Ative a correção automática nas configurações de reconhecimento
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setAutoSkew(true);

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

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

Correção manual de distorção de imagem em Java

Podemos definir o ângulo de inclinação manualmente girando a imagem para o grau especificado seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe PreprocessingFilter.
  3. Em seguida, adicione o ângulo de rotação usando o filtro do método Rotate().
  4. Em seguida, crie uma instância da classe RecognitionSettings.
  5. Depois disso, chame o método PreprocessImage() para aplicar o filtro na imagem de origem.
  6. Por fim, mostre o texto reconhecido.

O código de amostra a seguir mostra como aplicar a correção manual de inclinação com filtro de pré-processamento em Java.

// Este exemplo de código demonstra como aplicar a correção manual de inclinação.
// Crie uma instância do AsposeOcr
AsposeOCR api = new AsposeOCR();

// Adicionar filtro de alinhamento
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Rotate(-90));

// Salvar imagem pré-processada em arquivo
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);

Reconhecer texto de imagem com correção manual de inclinação de imagem em Java

Podemos definir o ângulo de inclinação manualmente e reconhecer o texto seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe RecognitionSettings.
  3. Em seguida, chame o método setSkew().
  4. Depois disso, chame o método RecognizePage() com a imagem de origem e o objeto RecognitionSettings.
  5. Por fim, mostre o texto reconhecido.

O código de exemplo a seguir mostra como aplicar a correção manual de inclinação e reconhecer o texto da imagem em Java.

// Este exemplo de código demonstra como aplicar a correção manual de inclinação.
// Crie uma instância do AsposeOcr
AsposeOCR recognitionEngine = new AsposeOCR();

// Defina manualmente o ângulo de inclinação
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setSkew(6);

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

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

Obtenha uma licença de avaliação gratuita

Você pode obter uma licença temporária gratuita para experimentar o Aspose.OCR for Java sem limitações de avaliação.

Conclusão

Neste artigo, aprendemos como:

  • realizar OCR e reconhecer texto em imagens;
  • aplicar filtros e processar imagens;
  • usar configurações de reconhecimento;
  • salve as imagens corrigidas usando Java.

Além da correção de distorção de imagem em Java, você pode aprender mais sobre Aspose.OCR para API Java usando documentação. Em caso de qualquer ambiguidade, sinta-se à vontade para entrar em contato conosco em nosso fórum de suporte gratuito.

Veja também