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:
- C# OMR API pro extrahování dat z obrázku
- Proveďte OMR a extrahujte data z obrázku
- Proveďte OMR a extrahujte data z více snímků
- Získejte výsledky OMR s prahem
- 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ů:
- Nejprve vytvořte instanci třídy OmrEngine.
- Dále zavolejte metodu GetTemplateProcessor() a inicializujte objekt třídy TemplateProcessor. Jako argument bere cestu k souboru šablony OMR.
- Poté získejte objekt RecognitionResult voláním metody RecognizeImage() s cestou k obrázku jako argumentem.
- Poté získejte výsledky rozpoznávání jako řetězce CSV pomocí metody GetCsv().
- 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);
Š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ů:
- Nejprve vytvořte instanci třídy OmrEngine.
- Dále zavolejte metodu GetTemplateProcessor() a inicializujte objekt třídy TemplateProcessor. Jako argument bere cestu k souboru šablony OMR.
- Poté inicializujte objekt Stopky a spusťte časovač.
- Dále získejte objekt RecognitionResult voláním metody RecognizeImage() s cestou k obrázku jako argumentem.
- Poté zastavte časovač a exportujte výsledky rozpoznávání jako řetězec CSV pomocí metody GetCsv().
- Dále uložte výsledek CSV jako soubor CSV na místní disk.
- Potom restartujte časovač pomocí metody Restart().
- Dále zavolejte metodu Recalculate(). Jako argumenty bere objekt RecognitionResult a prahovou hodnotu.
- Poté zastavte časovač a exportujte výsledky rozpoznávání jako řetězec CSV pomocí metody GetCsv().
- 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.