OCR: Как распознать символы MICR E-13B в изображении в .NET
В этом разделе
VintaSoft Imaging .NET SDK
с
VintaSoft OCR .NET Plug-in
позволяет распознавать текст в изображении с помощью движка Tesseract OCR. Многие словари, созданные для движка Tesseract OCR, предоставляют возможность запускать распознавание текста в более более 100 языков.
Некоторые авторы из Интернета предлагают свои бесплатные словари для распознавания символов MICR E-13B с использованием движка OCR Tesseract.
Мы протестировали некоторые из них и убедились, что словарь "e13b.traineddata" обеспечивает хорошее качество распознавания символов MICR E-13B, сравнимое с качеством распознавания профессиональных распознавателей символов MICR E-13B.
Словарь "e13b.traineddata" предлагается по лицензии BSD-3, которая позволяет бесплатное использование и распространение этого файла.
Мы сделали словарь "e13b.traineddata" доступным для скачивания с
нашего сайта
, также словарь можно скачать с других интернет-ресурсов.
Словарь "e13b.traineddata" добавлен в список поддерживаемых словарей (пункт MICR в перечислении Vintasoft.Imaging.Ocr.OcrLanguage), начиная с версии 11.0.5.1 VintaSoft OCR .NET Plug-in.
Более подробная информация о MICR символах вы можете прочитать в Wikipedia:
https://en.wikipedia.org/wiki/Magnetic_ink_character_recognition
Вот изображение из Wikipedia, на котором изображены символы MICR E-13B:
Вот C#/VB.NET код, который демонстрирует, как распознавать символы MICR E-13B на изображении с помощью движка Tesseract OCR:
/// <summary>
/// Recognizes MICR E-13B characters from image using Tesseract OCR engine.
/// </summary>
/// <param name="filename">The name of file, which stores images with MICR E-13B characters.</param>
public static void RecognizeMicrE13BCharactersUsingTesseractOCR(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 MICR E-13B characters
tesseractOcr.Init(
new Vintasoft.Imaging.Ocr.OcrEngineSettings(
Vintasoft.Imaging.Ocr.OcrLanguage.MICR));
// 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();
}
}
''' <summary>
''' Recognizes MICR E-13B characters from image using Tesseract OCR engine.
''' </summary>
''' <param name="filename">The name of file, which stores images with MICR E-13B characters.</param>
Public Shared Sub RecognizeMicrE13BCharactersUsingTesseractOCR(filename As String)
' create an image collection
Using images As 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 tesseractOcr As New Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr()
System.Console.WriteLine("Initialize OCR engine...")
' init the Tesseract OCR engine for recognition of MICR E-13B characters
tesseractOcr.Init(New Vintasoft.Imaging.Ocr.OcrEngineSettings(Vintasoft.Imaging.Ocr.OcrLanguage.MICR))
' for each image in image collection
For Each image As Vintasoft.Imaging.VintasoftImage In images
System.Console.WriteLine("Recognize the image...")
' recognize text in image
Dim ocrResult As Vintasoft.Imaging.Ocr.Results.OcrPage = tesseractOcr.Recognize(image)
' output the recognized text
System.Console.WriteLine("Page Text:")
System.Console.WriteLine(ocrResult.GetText())
System.Console.WriteLine()
Next
' shutdown the Tesseract OCR engine
tesseractOcr.Shutdown()
End Using
' free images
images.ClearAndDisposeItems()
End Using
End Sub