.NET에서 이미지의 MRZ 문자 인식

블로그 카테고리: OCR.NET

2022/02/17

VintaSoft Imaging .NET SDKVintaSoft OCR .NET Plug-in을 사용하면 Tesseract OCR 엔진을 이용하여 이미지에서 텍스트를 인식할 수 있습니다. Tesseract OCR 엔진용으로 제작된 많은 사전은 100개 이상의 언어로 텍스트 인식을 실행할 수 있는 기능을 제공합니다.

인터넷에서 몇몇 저자들이 Tesseract OCR 엔진을 사용하여 MRZ 기호(기계 판독 영역)를 인식하기 위한 무료 사전을 제공하고 있습니다.
저희는 이러한 사전 중 일부를 테스트해 보았고, "mrz.traineddata" 사전이 MRZ 기호 인식에서 우수한 품질을 제공하는 것을 확인했습니다.
"mrz.traineddata" 사전은 BSD-3 라이선스에 따라 제공되며, 이 라이선스를 통해 이 파일을 자유롭게 사용하고 재배포할 수 있습니다.
"mrz.traineddata" 사전은 저희 웹사이트에서 다운로드하실 수 있습니다. 또한, 해당 사전은 다른 인터넷 자료에서도 다운로드 가능합니다.

"mrz.traineddata" 사전은 VintaSoft OCR .NET Plug-in 버전 11.0.5.1부터 지원되는 사전 목록(Vintasoft.Imaging.Ocr.OcrLanguage 열거형의 MRZ 항목)에 추가되었습니다.

MRZ 기호에 대한 자세한 정보는 위키피디아에서 확인할 수 있습니다: https://en.wikipedia.org/wiki/Machine-readable_passport

다음은 기계 판독 영역(MRZ)이 있는 문서를 나타내는 위키피디아의 이미지입니다.



다음은 Tesseract OCR 엔진을 사용하여 이미지에서 MRZ 기호를 인식하는 방법을 보여주는 C# 코드입니다.
/// <summary>
/// Recognizes MRZ characters from image using Tesseract OCR engine.
/// </summary>
/// <param name="filename">The name of file, which stores image with MRZ characters.</param>
public static void RecognizeMRZCharactersUsingTesseractOCR(string filename)
{
    // create an image collection
    using (Vintasoft.Imaging.ImageCollection images = 
        new Vintasoft.Imaging.ImageCollection())
    {
        // add images from file to the image collection
        images.Add(filename);

        System.Console.WriteLine("Create Tesseract OCR engine...");
        // create the Tesseract OCR engine
        using (Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr tesseractOcr = 
            new Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr())
        {
            System.Console.WriteLine("Initialize OCR engine...");
            // init the Tesseract OCR engine for recognition of MRZ characters (machine-readable zones)
            tesseractOcr.Init(new Vintasoft.Imaging.Ocr.OcrEngineSettings(Vintasoft.Imaging.Ocr.OcrLanguage.MRZ));

            // for each image in image collection
            foreach (Vintasoft.Imaging.VintasoftImage image in images)
            {
                System.Console.WriteLine("Recognize the image...");
                
                // recognize text in image
                Vintasoft.Imaging.Ocr.Results.OcrPage ocrResult = tesseractOcr.Recognize(image);

                // output the recognized text

                System.Console.WriteLine("Page Text:");
                System.Console.WriteLine(ocrResult.GetText());
                System.Console.WriteLine();
            }

            // shutdown the Tesseract OCR engine
            tesseractOcr.Shutdown();
        }

        // free images
        images.ClearAndDisposeItems();
    }
}