MRZ-Zeichen aus einem Bild in .NET erkennen

Blog-Kategorie: OCR.NET

17.02.2022

Das VintaSoft Imaging .NET SDK mit dem VintaSoft OCR .NET Plug-in ermöglicht die Texterkennung aus Bildern mithilfe der Tesseract-OCR-Engine. Zahlreiche für die Tesseract-OCR-Engine erstellte Wörterbücher ermöglichen die Texterkennung in über 100 Sprachen.

Im Internet finden sich einige Autoren, die ihre kostenlosen Wörterbücher zur Erkennung von MRZ-Symbolen (maschinenlesbaren Zonen) mithilfe der Tesseract-OCR-Engine empfehlen.
Wir haben einige davon getestet und sichergestellt, dass das Wörterbuch "mrz.traineddata" eine gute Qualität bei der MRZ-Symbolerkennung bietet.
Das Wörterbuch "mrz.traineddata" wird unter der BSD-3-Lizenz angeboten, die die freie Nutzung und Weiterverbreitung dieser Datei erlaubt.
Das Wörterbuch "mrz.traineddata" können Sie auf unserer Website herunterladen. Es ist aber auch über andere Internetquellen erhältlich.

Das Wörterbuch "mrz.traineddata" ist seit Version 11.0.5.1 des VintaSoft OCR .NET Plug-ins in der Liste der unterstützten Wörterbücher (MRZ-Eintrag in der Vintasoft.Imaging.Ocr.OcrLanguage-Enumeration) enthalten.

Detailliertere Informationen zu MRZ-Symbolen finden Sie in Wikipedia: https://en.wikipedia.org/wiki/Machine-readable_passport

Hier ist ein Bild von Wikipedia, das ein Dokument mit maschinenlesbarer Zone (MRZ) darstellt:



Hier ist C#-Code, der zeigt, wie MRZ-Symbole mithilfe der Tesseract OCR-Engine aus einem Bild erkannt werden:
/// <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();
    }
}