Provádějte OMR a extrahujte data pomocí Java

Optické rozpoznávání značek (OMR) je elektronický proces, který umožňuje čtení a snímání dat označených lidmi na zvláštním typu formuláře dokumentu. Tento formulář dokumentu může být testem nebo průzkumem, který se skládá z bublinových nebo čtvercových vstupů vyplněných uživateli. Můžeme snadno provádět OMR operace na naskenovaných obrázcích takových dotazníků, dotazníků nebo testovacích listů a programově číst uživatelské vstupy. V tomto článku se naučíme, jak provádět OMR a extrahovat data z obrázku v Javě.

Tento článek bude obsahovat následující témata:

  1. Java OMR API pro extrahování dat z obrázku
  2. Extrahovat data z obrázku
  3. Proveďte OMR a extrahujte data z více snímků
  4. Extrahovat data OMR s prahem
  5. Extrahovat data OMR s přepočtem

Java OMR API pro extrahování dat z obrázku

K provádění operací OMR a extrahování dat z podporované formáty obrázků budeme používat Aspose.OMR for Java API. Umožňuje navrhovat, vytvářet a rozpoznávat odpovědní archy, testy, papíry MCQ, kvízy, formuláře zpětné vazby, průzkumy a hlasovací lístky.

Třída OmrEngine rozhraní API se stará o vytvoření šablony a zpracování obrazu. Metoda getTemplateProcessor(String templatePath) této třídy vytvoří instanci TemplateProcessor pro zpracování šablon a obrázků. Obrázek můžeme rozpoznat pomocí metody recognizeImage(String imagePath). Vrací všechny prvky OMR jako instanci třídy RecognitionResult. Metoda getCsv() této třídy generuje řetězec CSV s výsledky rozpoznávání. Metoda recalculate(RecognitionResult result, int recognitionThreshold) aktualizuje výsledek rozpoznávání pomocí doladěných parametrů.

Prosím buď stáhněte si JAR API, nebo přidejte následující konfiguraci pom.xml do Java aplikace založené na 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>

Extrahujte data z obrázku v Javě

K provedení operace OMR potřebujeme připravenou šablonu OMR (.omr) spolu s obrázkem uživatelem vyplněných formulářů/listů. Můžeme provést operaci OMR na obrázku a extrahovat data podle následujících kroků:

  1. Nejprve vytvořte instanci třídy OmrEngine.
  2. Dále zavolejte metodu getTemplateProcessor() a inicializujte objekt třídy TemplateProcessor. Jako argument bere cestu k souboru šablony OMR.
  3. Poté získejte objekt RecognitionResult zavoláním metody recognitionImage() s cestou obrázku jako argumentem.
  4. Poté získejte výsledky rozpoznávání jako řetězce CSV pomocí metody getCsv().
  5. Nakonec uložte výsledek CSV jako soubor CSV na místní disk.

Následující ukázka kódu ukazuje, jak extrahovat data OMR z obrázku ve formátu CSV pomocí Java.

// Tento příklad kódu ukazuje, jak provést OMR na obrázku a extrahovat data
// Cesta k souboru šablony OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Cesta k souboru obrázku
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// Inicializujte OMR Engine
OmrEngine engine = new OmrEngine();

// Získejte procesor šablon
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// Rozpoznat obrázek
RecognitionResult result = templateProcessor.recognizeImage(imagePath);

// Získejte výsledky ve formátu CSV
String csvResult = result.getCsv();

// Uložit soubor CSV
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true);
wr.println(csvResult);
Extrahujte-data-z-obrázku-v-Java

Proveďte OMR a extrahujte data z obrázku v Javě.

stáhněte si šablonu OMR použitou v tomto příspěvku na blogu.

Proveďte OMR a extrahujte data z více snímků

Můžeme provádět operace OMR na více snímcích a extrahovat data do samostatného souboru CSV pro každý obrázek podle výše uvedených kroků. Musíme však opakovat kroky # 3, 4 a 5 pro všechny obrázky jeden po druhém.

Následující ukázka kódu ukazuje, jak extrahovat data OMR z více obrázků pomocí Java.

// Tento příklad kódu ukazuje, jak provést OMR na více obrázcích a extrahovat data
// Cesta k pracovní složce
String folderPath = "C:\\Files\\OMR\\";

// Cesta k souboru šablony OMR
String templatePath = folderPath + "Sheet.omr";

// Cesta k souboru obrázku
String[] UserImages = new String[] { "Sheet1.png", "Sheet2.png" };

// Inicializujte OMR Engine
OmrEngine engine = new OmrEngine();

// Získejte procesor šablon
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// Zpracovávejte obrázky jeden po druhém ve smyčce
for (int i = 0; i < UserImages.length; i++)
{
    String image = UserImages[i];
    String imagePath = folderPath + image;

    // Rozpoznat obrázek
    RecognitionResult result = templateProcessor.recognizeImage(imagePath);

    // Získejte výsledky ve formátu CSV
    String csvResult = result.getCsv();

    // Uložit soubor CSV
    PrintWriter wr = new PrintWriter(new FileOutputStream(folderPath + "Sheet_" + i + ".csv"), true);
    wr.println(csvResult);
    System.out.println(csvResult);
}

Extrahujte data OMR pomocí prahu v Javě

Operace OMR můžeme provádět s prahovou hodnotou (0 až 100) v závislosti na požadavcích. Čím vyšší je hodnota prahu, tím je API přísnější ve zvýrazňování odpovědí. Chcete-li provést OMR s prahovou hodnotou, postupujte podle výše uvedených kroků. Stačí však zavolat přetíženou metodu rozpoznatImage(řetězec, int32) v kroku č. 3. Jako argumenty bere cestu k souboru obrázku a prahovou hodnotu.

Následující ukázka kódu ukazuje, jak provést OMR s prahovou hodnotou pomocí Java.

// Tento příklad kódu ukazuje, jak provést OMR s therashold a extrahovat data z obrázku
// Cesta k souboru šablony OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Cesta k souboru obrázku
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// Prahová hodnota
int CustomThreshold = 40;

// Inicializujte OMR Engine
OmrEngine engine = new OmrEngine();

// Získejte procesor šablon
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// Rozpoznat obrázek
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold);

// Získejte výsledky ve formátu CSV
String csvResult = result.getCsv();

// Uložit soubor CSV
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_threshold.csv"), true);
wr.println(csvResult);
System.out.println(csvResult);

Extrahujte data OMR pomocí přepočtu v Javě

V určitých případech může být nutné přepočítat výsledky OMR s jinými prahovými hodnotami. Pro tento účel můžeme nakonfigurovat API tak, aby se automaticky přepočítávalo pomocí metody TemplateProcessor.recalculate(). Umožňuje vícenásobné zpracování obrazu změnou nastavení prahu pro dosažení požadovaného výsledku. Operaci OMR s přepočtem můžeme provést podle následujících kroků:

  1. Nejprve vytvořte instanci třídy OmrEngine.
  2. Dále zavolejte metodu getTemplateProcessor() a inicializujte objekt třídy TemplateProcessor. Jako argument bere cestu k souboru šablony OMR.
  3. Poté získejte objekt RecognitionResult zavoláním metody recognitionImage() s cestou obrázku jako argumentem.
  4. Dále exportujte výsledky rozpoznávání jako řetězec CSV pomocí metody getCsv().
  5. Potom uložte výsledek CSV jako soubor CSV na místní disk.
  6. Dále zavolejte metodu recalculate(). Jako argumenty bere objekt RecognitionResult a prahovou hodnotu.
  7. Poté se výsledky rozpoznávání exportují jako řetězec CSV pomocí metody getCsv().
  8. Nakonec uložte výsledek CSV jako soubor CSV na místní disk.

Následující ukázka kódu ukazuje, jak provést OMR pomocí metody přepočtu pomocí Java.

// Cesta k souboru šablony OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Cesta k souboru obrázku
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// Prahová hodnota
int CustomThreshold = 40;

// Inicializujte OMR Engine
OmrEngine engine = new OmrEngine();

// Získejte procesor šablon
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// Rozpoznat obrázek
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold);

// Získejte výsledky ve formátu CSV
String csvResult = result.getCsv();

// Uložit soubor CSV
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true);
wr.println(csvResult);

// Přepočítat
// Zde můžete použít novou prahovou hodnotu
templateProcessor.recalculate(result, CustomThreshold);

// Získejte přepočtené výsledky ve formátu CSV
csvResult = result.getCsv();

// Uložit přepočítaný výsledný soubor CSV
PrintWriter finalWr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_recalculated.csv"), true);
finalWr.println(csvResult);

Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet knihovnu bez omezení hodnocení.

Závěr

V tomto článku jsme se naučili, jak:

  • provádět operace OMR na snímcích;
  • extrahovat data ve formátu CSV programově;
  • použít nastavení prahu při provádění OMR na snímcích;
  • přepočítat výsledky OMR v automobilovém procesu pomocí Java.

Kromě toho, extrahování dat z obrazu v Javě, se můžete dozvědět více o Aspose.OMR pro Java API pomocí dokumentace. V případě jakýchkoli nejasností nás neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také