
Visão Geral
O reconhecimento de marcas ópticas (OMR) é um processo eletrônico que facilita a leitura e captura de dados marcados por pessoas em formulários de documentos especialmente projetados, como testes ou pesquisas, que incluem entradas em bolhas ou quadrados preenchidos pelos usuários. Ao usar a extração de dados de imagens em Java, podemos lidar eficientemente com imagens digitalizadas desses formulários de pesquisa, questionários ou folhas de teste, tornando possível ler as entradas do usuário programaticamente. Este artigo o guiará sobre como realizar OMR e extrair dados de imagens usando Java.
Os seguintes tópicos serão abordados neste artigo:
- API Java OMR para Extrair Dados de Imagem
- Extração de Dados de Imagens em Java
- Realizar OMR e Extrair Dados de Múltiplas Imagens
- Extrair Dados OMR com Limite
- Extrair Dados OMR com Recalculo
API Java OMR para Extrair Dados de Imagem
Para realizar operações OMR e a extração de dados de imagens em Java, usaremos a API Aspose.OMR para Java. Esta ferramenta poderosa permite o design, criação e reconhecimento de folhas de resposta, testes, papéis de MCQ, questionários, formulários de feedback, pesquisas e cédulas.
A classe OmrEngine dentro da API é responsável por criar templates e processar imagens. Seu método getTemplateProcessor(String templatePath) inicializa uma instância de TemplateProcessor adaptada para lidar com templates e imagens. Para reconhecer uma imagem, o método recognizeImage(String imagePath) pode ser utilizado, que retorna todos os elementos OMR como uma instância da classe RecognitionResult. Usando o método getCsv(), você pode gerar uma string CSV contendo os resultados do reconhecimento. Além disso, o método recalculate(RecognitionResult result, int recognitionThreshold) refina os resultados do reconhecimento com parâmetros personalizados.
Por favor, baixe o JAR da API ou adicione a seguinte configuração pom.xml em uma aplicação Java baseada em Maven.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-omr</artifactId>
<version>19.12</version>
</dependency>
Extração de Dados de Imagens em Java
Para realizar uma operação OMR, precisamos do arquivo de template OMR preparado (.omr) e da imagem de formulários ou folhas preenchidas pelo usuário. O processo de extração de dados de imagens em Java, especificamente usando operações OMR, envolve os seguintes passos:
- Primeiro, crie uma instância da classe OmrEngine.
- Em seguida, chame o método getTemplateProcessor() e inicialize um objeto da classe TemplateProcessor, passando o caminho do arquivo de template OMR como argumento.
- Depois, obtenha o objeto RecognitionResult chamando o método recognizeImage() com o caminho da imagem como argumento.
- Após isso, obtenha os resultados de reconhecimento como strings CSV usando o método getCsv().
- Finalmente, salve o resultado CSV como um arquivo CSV no disco local.
O seguinte exemplo de código demonstra como realizar a extração de dados de imagens em Java convertendo dados OMR para o formato CSV.
// This code example demonstrates how to perform OMR on an image and extract data | |
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true); | |
wr.println(csvResult); |

Realizar OMR e Extrair Dados de uma imagem em Java.
Por favor, baixe o template OMR usado neste post do blog.
Realizar OMR e Extrair Dados de Múltiplas Imagens
Podemos realizar operações OMR em várias imagens e extrair dados em um arquivo CSV separado para cada uma, usando os passos descritos anteriormente. Para realizar a extração de dados de imagens em Java, é necessário repetir os passos 3, 4 e 5 para todas as imagens individualmente.
Abaixo está um exemplo de código demonstrando como extrair dados OMR de várias imagens usando Java.
// This code example demonstrates how to perform OMR on multiple images and extract data | |
// Working folder path | |
String folderPath = "C:\\Files\\OMR\\"; | |
// OMR Template file path | |
String templatePath = folderPath + "Sheet.omr"; | |
// Image file path | |
String[] UserImages = new String[] { "Sheet1.png", "Sheet2.png" }; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Process images one by one in a loop | |
for (int i = 0; i < UserImages.length; i++) | |
{ | |
String image = UserImages[i]; | |
String imagePath = folderPath + image; | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream(folderPath + "Sheet_" + i + ".csv"), true); | |
wr.println(csvResult); | |
System.out.println(csvResult); | |
} |
Extrair Dados OMR com Limite em Java
Para realizar operações de Reconhecimento de Marcas Ópticas (OMR) em Java, utilizamos um valor de limite entre 0 e 100 com base em requisitos específicos. Esse valor de limite, usado na extração de dados de imagens em Java, dita quão rigorosa a API será ao destacar respostas; um valor mais alto aumenta a rigidez. Seguir os passos mencionados anteriormente é essencial para o processamento OMR com o limite escolhido. Especificamente, dentro do passo #3, o método recognizeImage(string, int32) deve ser chamado. Esse método sobrecarregado requer o caminho do arquivo de imagem e o valor de limite desejado como seus parâmetros.
O seguinte exemplo de código demonstra como realizar OMR com um valor de limite usando Java:
// This code example demonstrates how to perform OMR with therashold and extract data from an image | |
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Threshold value | |
int CustomThreshold = 40; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_threshold.csv"), true); | |
wr.println(csvResult); | |
System.out.println(csvResult); |
Extrair Dados OMR com Recalculo em Java
Ao lidar com a precisa extração de dados de imagens em Java, especialmente no que diz respeito ao OMR, pode haver a necessidade de recalcular os resultados usando diferentes valores de limite. Configurando a API, o recálculo pode ser automatizado através do método TemplateProcessor.recalculate(). Essa abordagem permite várias iterações de processamento de imagem ajustando o limite até que o resultado desejado seja alcançado. Para realizar com sucesso a operação OMR com recálculo, siga os passos abaixo:
- Primeiro, crie uma instância da classe OmrEngine.
- Em seguida, chame o método getTemplateProcessor() e inicialize um objeto da classe TemplateProcessor. Ele recebe o caminho do arquivo de template OMR como argumento.
- Depois, obtenha o objeto RecognitionResult chamando o método recognizeImage() com o caminho da imagem como argumento.
- Em seguida, exporte os resultados de reconhecimento como uma string CSV usando o método getCsv().
- Então, salve o resultado CSV como um arquivo CSV no disco local.
- Em seguida, chame o método recalculate(). Ele recebe o objeto RecognitionResult e o valor de limite como argumentos.
- Após isso, exporte os resultados de reconhecimento como uma string CSV usando o método getCsv().
- Finalmente, salve o resultado CSV como um arquivo CSV no disco local.
O seguinte exemplo de código demonstra como realizar OMR com o método de recálculo usando Java:
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Threshold value | |
int CustomThreshold = 40; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true); | |
wr.println(csvResult); | |
// Recalculate | |
// You may apply new threshold value here | |
templateProcessor.recalculate(result, CustomThreshold); | |
// Get recalculated results in CSV | |
csvResult = result.getCsv(); | |
// Save recalculated resultant CSV file | |
PrintWriter finalWr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_recalculated.csv"), true); | |
finalWr.println(csvResult); |
Obtenha uma Licença Gratuita
Você tem a oportunidade de obter uma licença temporária gratuita para experimentar a biblioteca sem limitações de avaliação. Esta é uma ótima maneira de explorar recursos como a extração de dados de imagens em Java, permitindo que você avalie completamente suas capacidades. A lista de dados abaixo permanece inalterada para sua referência:
- A biblioteca funciona de forma eficiente com grandes volumes de dados.
- A integração com sistemas existentes é tranquila.
- Os dados extraídos são altamente precisos e confiáveis.
- Os passos de instalação são diretos e bem documentados.
Conclusão
Neste artigo, aprendemos como:
- realizar operações OMR em imagens;
- extrair dados em formato CSV programaticamente;
- aplicar configuração de limite ao realizar OMR em imagens;
- recalcular resultados OMR em um processo automático usando Java.
Além disso, ao lidar com a extração de dados de imagens em Java, você pode explorar mais sobre a API Aspose.OMR para Java revisando a documentação. Se você encontrar algum problema, sinta-se à vontade para nos contatar em nosso fórum de suporte gratuito.