VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
В этом разделе
    OCR: Подготовка OCR движка для распознавания текста
    В этом разделе

    Создание экземпляра класса TesseractOcr

    Для распознавания текста с помощью Tesseract OCR необходимы следующие файлы:
    По умолчанию файлы Tesseract OCR расположены в папке "TesseractOcr", и эта папка имеет следующую структуру:
    Необходимо создать экземпляр класса TesseractOcr для распознавания текста с помощью Tesseract OCR. Конструктор по умолчанию (конструктор без параметров) использует папку "<current_directory>\TesseractOcr" в качестве папки, в которой расположены файлы Tesseract OCR. Чтобы указать другую папку, необходимо использовать конструктор со строковым параметром.

    Вот C#/VB.NET код, который демонстрирует, как создать экземпляр класса TesseractOcr и указать папку, в которой расположены файлы Tesseract OCR:
    string tesseractOcrDllPath = @"D:\Vintasoft.Imaging.Ocr.Tesseract.">TesseractOcr";
    Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr tesseractOcr = 
        new Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr(tesseractOcrDllPath);
    
    // ...
    
    tesseractOcr.Dispose();
    
    Dim tesseractOcrDllPath As String = "D:\Vintasoft.Imaging.Ocr.Tesseract.">TesseractOcr"
    Dim tesseractOcr As New Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr(tesseractOcrDllPath)
    
    ' ...
    
    tesseractOcr.Dispose()
    


    Инициализация экземпляра класса TesseractOcr

    После создания экземпляра класса TesseractOcr необходимо вызвать метод TesseractOcr.Init для инициализации экземпляра. TesseractOcr.Init позволяет указать язык по умолчанию для распознавания текста.

    Tesseract OCR 5 позволяет распознавать текст на более чем 100 языках. В установочный пакет SDK по умолчанию входит только словарь английского языка.

    В следующей таблице показан полный список языков, поддерживаемых Tesseract OCR 5, и ссылки для загрузки языковых файлов:
    Язык Tesseract 5.0 словарь (быстрый) Tesseract 5.0 словарь (лучший) Tesseract 5.0 словарь (стандартный)
    Африкаанс Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Амхарский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Арабский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Ассамский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Азербайджанский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Азербайджанский кириллица Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Белорусский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Бенгальский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Тибетский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Боснийский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Bre Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Болгарский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Каталанский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Кебуанский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Чешский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Китайский Упрощенный Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Китайский Упрощенная вертикальная Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Китайский традиционный Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Китайский традиционный вертикальный Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Чероки Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Cos Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Валлийский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Датский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Датский Fraktur - - Tesseract 5.0 (стандартный)
    Немецкий Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Немецкий Fraktur - - Tesseract 5.0 (стандартный)
    Div Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Дзонгкха Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Греческий Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Английский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Английский Средний Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Эсперанто Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Модуль обнаружения математических уравнений - - Tesseract 5.0 (стандартный)
    Эстонский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Баскский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Фао Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Персидский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Fil Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Финский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Французский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Франкский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Французский средний Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Fry Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Gla Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Ирландский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Галисийский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Древний греческий Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Гуджарати Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Гаитянский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Иврит Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Хинди Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Хорватский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Венгерский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Hye Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Инуктитут Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Индонезийский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Исландский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Итальянский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Итальянский Старый Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Яванский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Японский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Японский вертикальный Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Каннада Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Грузинский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Старый грузинский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Казахский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Центрально-кхмерский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Киргизский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Kmr Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Корейский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Корейский вертикальный Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Лаосский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Латинский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Латышский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Литовский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Ltz Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Malayalam Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Маратхи Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Македонский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Мальтийский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    MICR (распознавание символов магнитными чернилами) Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) -
    Mon Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Mri Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    MRZ (машиночитаемая зона) Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) -
    Малайский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Бирманский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Непальский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Голландский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Норвежский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Oci Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Oriya Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Osd Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Панджаби Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Польский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Португальский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Пушту Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Que Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Румынский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Русский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Санскрит Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Сингальский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Словацкий Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Словацкий Fraktur - - Tesseract 5.0 (стандартный)
    Словенский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Snd Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Испанский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Испанский Кастильский Старый Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Албанский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Сербский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Сербский латынь Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Sun Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Суахили Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Шведский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Сирийский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Тамильский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Tat Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Телугу Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Таджикский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Тагальский - - Tesseract 5.0 (стандартный)
    Тайский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Тигриня Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Ton Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Турецкий Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Уйгурский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Украинский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Урду Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Узбекский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Узбекский кириллический Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Вьетнамский Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Идиш Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)
    Yor Tesseract 5.0 (быстрый) Tesseract 5.0 (лучший) Tesseract 5.0 (стандартный)


    Вот C#/VB.NET код, который демонстрирует, как указать немецкий язык в качестве основного языка, который будет использоваться для распознавание текста:
    // create the OCR engine
    using (Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr tesseractOcr = 
        new Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr())
    {
        // specify that OCR engine will recognize German text
        Vintasoft.Imaging.Ocr.OcrLanguage language = Vintasoft.Imaging.Ocr.OcrLanguage.German;
        // create the OCR engine settings
        Vintasoft.Imaging.Ocr.Tesseract.TesseractOcrSettings settings = 
            new Vintasoft.Imaging.Ocr.Tesseract.TesseractOcrSettings(language);
        // initialize the OCR engine
        tesseractOcr.Init(settings);
    
        // ...
    
        // shutdown the OCR engine
        tesseractOcr.Shutdown();
    }
    
    ' create the OCR engine
    Using tesseractOcr As New Vintasoft.Imaging.Ocr.Tesseract.TesseractOcr()
        ' specify that OCR engine will recognize German text
        Dim language As Vintasoft.Imaging.Ocr.OcrLanguage = Vintasoft.Imaging.Ocr.OcrLanguage.German
        ' create the OCR engine settings
        Dim settings As New Vintasoft.Imaging.Ocr.Tesseract.TesseractOcrSettings(language)
        ' initialize the OCR engine
        tesseractOcr.Init(settings)
    
        ' ...
    
        ' shutdown the OCR engine
        tesseractOcr.Shutdown()
    End Using
    


    Параметры Tesseract OCR

    Tesseract OCR 5 имеет множество параметров.

    Вы можете получить значение любого параметра, используя метод TesseractOcr.GetVariable.
    Вы можете установить значение любого параметра, используя метод TesseractOcr.SetVariable.

    Вот C#/VB.NET код, который демонстрирует, как использовать параметр "белый список символов":
    /// <summary>
    /// Specifies that text contains only the limited set of characters and
    /// recognizes the text in image.
    /// </summary>
    /// <param name="filename">The name of file, which stores images with text.</param>
    public static void OcrImageWithDigits(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
                tesseractOcr.Init(new Vintasoft.Imaging.Ocr.OcrEngineSettings(
                    Vintasoft.Imaging.Ocr.OcrLanguage.English));
    
                // set the "white list" of recognizing characters
                tesseractOcr.SetVariable(
                    "tessedit_char_whitelist", "01234567890");
    
                // for each image
                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>
    ''' Specifies that text contains only the limited set of characters and
    ''' recognizes the text in image.
    ''' </summary>
    ''' <param name="filename">The name of file, which stores images with text.</param>
    Public Shared Sub OcrImageWithDigits(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
                tesseractOcr.Init(New Vintasoft.Imaging.Ocr.OcrEngineSettings(Vintasoft.Imaging.Ocr.OcrLanguage.English))
    
                ' set the "white list" of recognizing characters
                tesseractOcr.SetVariable("tessedit_char_whitelist", "01234567890")
    
                ' for each image
                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