VintaSoft Forms Processing .NET Plug-in を使用して OMR マークを認識する

ブログカテゴリ:フォーム処理.NET

2025/07/28

今日の世界では、アンケートから試験用紙や投票用紙まで、紙や電子フォームの数が何百万にも達し、それらの高速で正確な処理に対する要件は年々高まっています。これらのプロセスを自動化するための重要なツールの 1 つが、光学式マーク認識 (OMR) です。

OMR (光学式マーク認識) は、紙または電子文書上の所定の場所にある特殊なマーク (通常はチェック マーク、塗りつぶされた四角形または円) の有無をソフトウェアで記録および分析できるようにするテクノロジです。これにより、大量のデータを手動で入力することなく迅速に処理できるため、エラーが最小限に抑えられ、ワークフローが高速化されます。



OMRの出現と発展の簡単な歴史

光学式マーク認識技術は、大量の類似したフォーム、アンケート、試験用紙の処理を自動化するという課題が浮上した20世紀後半に開発が始まりました。最初の産業用システムは、学生の大量テストで迅速かつ信頼性の高い結果計算が求められていた教育機関のニーズに応えるため、米国で登場しました。

OMR開発の初期段階では、紙の網掛け部分(塗りつぶされた丸または長方形)を記録する大型の光センサーを備えたスキャナーという特殊な機器が使用されていました。これにより、手作業による検証に比べて回答の検証時間が大幅に短縮され、データ分析がより客観的になりました。

その後、この技術はデジタル画像処理への移行とともに進化しました。パーソナルコンピューターとソフトウェアの登場により、スキャナーやプリンターの種類に関係なくOMRが利用可能になりました。これにより、ビジネス、教育、政府など、大量の標準文書を高速かつ正確に処理する必要があるあらゆる場所で大量適用の機会が開かれました。

今日、最新の OMR ソリューションにより、紙のフォームだけでなく電子文書の作業も自動化でき、OMR テクノロジーを統合されたデジタル プラットフォームに統合できます。これにより、最終データの柔軟性、生産性、品質がさらに向上します。


OMR の仕組みと適用場所

OMR は、フォーム (アンケートやテスト フォームなど) でマークする領域を選択し、専用のソフトウェアを使用して自動的にスキャンするという原理に基づいています。これにより、次のことが可能になります。

OMR は、マーク用の指定領域を持つ特別なフォーム テンプレートの作成から始まります。フォームに記入してスキャン (または電子的に受信) すると、ソフトウェアが画像を分析し、各 OMR ゾーンの位置と境界を決定し、ユーザーが付けたマークを記録します。

全体のプロセスは、いくつかの技術的な段階で構成されています:

使用場所:

OMR は、大量の類似の紙または電子データを迅速かつ正確にデジタル化する必要があるすべての領域で使用されます。


VintaSoft Forms Processing .NET Plug-in for OMR の機能は何ですか?

ラベル認識の最新ソリューションは高速なだけでなく、構成も柔軟です。この分野における技術リーダーの 1 つが VintaSoft Forms Processing .NET Plug-in です。

このSDKは、フォームの自動識別と位置合わせ、光学式マーク認識、テキストおよびバーコードフィールド認識を完全にサポートします。主な機能は次のとおりです。


企業が VintaSoft の OMR を選択する理由

企業にとって、大量のアンケート、テスト、または標準フォームの処理は、精度が要求されるタスクであるだけでなく、ビジネス プロセスを最適化する理由でもあります。 VintaSoft Forms Processing .NET Plug-in を使用すると、次のことが可能になります。


技術的な観点: VintaSoft での OMR の動作

操作中、ソフトウェアはまず受信した図形イメージがどのテンプレートに属するかを決定し、それを位置合わせしてから、OMR フィールドの分析を開始します。このアーキテクチャにより、回転、オフセット、またはスケールの変更を伴ってスキャンされた図形でも処理できます。

フォーム テンプレートは、WinForms または WPF アプリケーション内のコード エディターとビジュアル エディターの両方を使用して作成されます。開発者はOMRフィールドの種類と外観をカスタマイズし、独自のタスクやドキュメント形式に合わせてアーキテクチャを拡張できます。

光学式マーク認識(OMR)は、大量の紙文書および電子文書を高速かつ確実に処理するための最新の標準規格です。VintaSoft Forms Processing .NET Plug-inを使用すると、プロセスは柔軟かつ正確になり、あらゆる企業システムに統合可能になり、デジタルビジネス変革の要件に完全に準拠します。


以下は、OMR マークを含む記入済みフォームを識別して認識する方法を示す C# コードです。
/// <summary>
/// Recognizes the form with OMR fields.
/// </summary>
/// <param name="formRecognitionManager">The form recognition manager.</param>
/// <param name="image">The image.</param>
public static void RecognizeFormWithOmrFields(
    Vintasoft.Imaging.FormsProcessing.FormRecognitionManager formRecognitionManager,
    Vintasoft.Imaging.VintasoftImage image)
{
    // if your form template contains OCR fields,
    // make sure OCR engine manager is initialized before recognition
    // (otherwise recognition will return null (Nothing)),
    // see OCR field recognition examples

    // recognize filled form in an image
    Vintasoft.Imaging.FormsProcessing.FormRecognitionResult recognitionResult = 
        formRecognitionManager.Recognize(image);

    // get the result of image comparison
    Vintasoft.Imaging.FormsProcessing.TemplateMatching.ImageImprintCompareResult imageCompareResult =
        recognitionResult.TemplateMatchingResult.ImageCompareResult;
    // if result is not reliable
    if (!imageCompareResult.IsReliable)
    {
        // matching template is not found
        System.Console.WriteLine("Matching template is not found.");
    }
    else
    {
        // get recognized page
        Vintasoft.Imaging.FormsProcessing.FormRecognition.FormPage recognizedPage = 
            recognitionResult.RecognizedPage;
        // get form field count
        if (recognizedPage.Items.Count == 0)
        {
            System.Console.WriteLine("No form fields were recognized.");
        }
        else
        {
            System.Console.WriteLine(string.Format(
                "Recognized form field count: {0}",
                recognizedPage.Items.Count));
            // for each recognized form field
            foreach (Vintasoft.Imaging.FormsProcessing.FormRecognition.FormField recognizedField in recognizedPage.Items)
            {
                if (recognizedField is Vintasoft.Imaging.FormsProcessing.FormRecognition.Omr.OmrField)
                {
                    Vintasoft.Imaging.FormsProcessing.FormRecognition.Omr.OmrField omrField = 
                        (Vintasoft.Imaging.FormsProcessing.FormRecognition.Omr.OmrField)recognizedField;
                    // write field info
                    System.Console.WriteLine(string.Format(
                        "  OMR field: name: {0}; state: {1}; confidence: {2:F1}%",
                        omrField.Name,
                        omrField.State,
                        omrField.Confidence * 100));
                }
            }
        }
    }
}