Proveďte OMR a extrahujte data z obrázku v C#

Optické rozpoznávání značek (OMR) umožňuje čtení a snímání dat označených na speciální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 průzkumných formulářů nebo testovacích listů a číst uživatelské vstupy programově v aplikacích .NET. V tomto článku se naučíme, jak provádět OMR a extrahovat data z obrázku v C#.

V tomto článku se budou zabývat následujícími tématy:

  1. C# OMR API pro extrahování dat z obrázku
  2. Proveďte OMR a extrahujte data z obrázku
  3. Proveďte OMR a extrahujte data z více snímků
  4. Získejte výsledky OMR s prahem
  5. OMR Operation with Recalculation

C# OMR API pro extrahování dat z obrázku

Pro provádění operací OMR a export dat z obrázků budeme používat Aspose.OMR for .NET 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.

Prosím buď stáhněte si DLL rozhraní API, nebo jej nainstalujte pomocí NuGet.

PM> Install-Package Aspose.OMR

Proveďte OMR a extrahujte data z obrázku pomocí C#

Abychom mohli provést operaci OMR na snímku, potřebujeme připravenou šablonu OMR (.omr) a snímek (uživatelem vyplněné formuláře/listy), na kterých OMR provedeme. 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 voláním metody RecognizeImage() s cestou k 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 provést OMR na obrázku a extrahovat data ve formátu CSV pomocí C#.

// Cesta k souboru šablony OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Cesta k souboru obrázku
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// 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
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);
Proveďte OMR a extrahujte data ze snímků

Proveďte OMR a extrahujte data ze snímků.

Šablonu OMR použitou ve výše uvedeném příkladu kódu lze stáhnout z zde.

Extrahujte data z více obrázků v C#

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 provést OMR na více obrázcích a extrahovat data ve formátu CSV pomocí C#.

// Cesta k souboru šablony OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Cesta k souboru složky Obrázky
string imageFolderPath = @"D:\Files\OMR\";

// Cesta výstupního adresáře
string outputPath = @"D:\Files\OMR\";

// Obrázky ke zpracování
string[] UserImages = new string[] { "Sheet1.jpg", "Sheet2.jpg" };

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

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

// Zpracujte obrázky jeden po druhém
for (int i = 0; i < UserImages.Length; i++)
{
    string imagePath = Path.Combine(imageFolderPath, UserImages[i]);
    
    // Rozpoznat obrázek
    RecognitionResult result = templateProcessor.RecognizeImage(imagePath);
    
    // Získejte výsledky ve formátu CSV
    string csvResult = result.GetCsv();

    // Uložit soubor CSV
    File.WriteAllText(Path.Combine(outputPath, Path.GetFileNameWithoutExtension(UserImages[i]) + ".csv"), csvResult);
}

Rozhraní API také poskytuje funkce pro detekci a rozpoznání všech čárových kódů dostupných na obrázku během operace OMR. Je to výchozí funkce operace OMR. Můžeme provádět operace OMR a rozpoznávat čárové kódy podle výše uvedených kroků.

Získejte výsledky OMR s prahem v C#

Práh můžeme použít při provádění operací OMR na snímcích. Hodnota prahu může být od 0 do 100 v závislosti na požadavcích. Čím vyšší je hodnota prahu, tím je API přísnější, pokud jde o zvýrazně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 RecognizeImage(string, 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í C#.

// Cesta k souboru šablony OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Cesta k souboru obrázku
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// 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
File.WriteAllText(@"D:\Files\OMR\Sheet1_threshold.csv", csvResult);

Operace OMR s přepočtem v C#

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é inicializujte objekt Stopky a spusťte časovač.
  4. Dále získejte objekt RecognitionResult voláním metody RecognizeImage() s cestou k obrázku jako argumentem.
  5. Poté zastavte časovač a exportujte výsledky rozpoznávání jako řetězec CSV pomocí metody GetCsv().
  6. Dále uložte výsledek CSV jako soubor CSV na místní disk.
  7. Potom restartujte časovač pomocí metody Restart().
  8. Dále zavolejte metodu Recalculate(). Jako argumenty bere objekt RecognitionResult a prahovou hodnotu.
  9. Poté zastavte časovač a exportujte výsledky rozpoznávání jako řetězec CSV pomocí metody GetCsv().
  10. 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í C#.

// Cesta k souboru šablony OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Cesta k souboru obrázku
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// Prahová hodnota
int CustomThreshold = 40;

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

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

// Časovač pro měření výkonu
Stopwatch sw = Stopwatch.StartNew();

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

sw.Stop();

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

// Uložit soubor CSV
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);

sw.Restart();

// Přepočítat
templateProcessor.Přepočítat(result, CustomThreshold);
sw.Stop();

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

// Uložit přepočítaný výsledný soubor CSV
File.WriteAllText(@"D:\Files\OMR\Sheet1_Přepočítatd.csv", 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 a extrahovat data ve formátu CSV pomocí C#;
  • použít nastavení prahu při provádění OMR na snímcích;
  • přepočítat výsledky OMR v automobilovém procesu programově.

Kromě extrahování dat OMR z obrázků v C# se můžete dozvědět více o Aspose.OMR for .NET API pomocí dokumentace. V případě jakýchkoliv nejasností nás prosím neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také