Распознавание текста на изображении с C# и Tesseract

Распознавание текста на изображении с C# и Tesseract

Распознавание текста на изображении с C# и Tesseract

Технология распознавания символов с изображения в редактируемый текст достаточно непростая задача. Для подобных целей используется технология OCR — Optical Character Recognition(оптическое распознавание символов). Данная технология хорошо реализована в таких фреймворках как FineReader, IronOcr для платформы .NET, Tessarect и др. Мы будем использовать последнюю библиотеку.

В статье мы опишем создание оконного приложения на C# и Windows Form в программе Visual Studio 2012. Также понадобится установить пакет Tesseract и файл для распознавания символов языка.

И так приступим.

Шаг 1. Откройте программу и создайте новый проект.

Нажмите «Готово». Приложение Windows Form будет создано, как показано ниже.

Распознавание текста на изображении с C# и Tesseract

Распознавание текста на изображении с C# и Tesseract

Шаг 2. Установка пакета Tesseract через менеджер пакетов.

Прежде чем продолжить, нам нужно установить пакет NuGet для Tesseract.

Перейдите во вкладку сервис > диспетчер пакетов NuGet > консоль диспетчера пакетов, в появившемся окне введите Install-Package Tesseract и нажмите Enter. Дождитесь окончания загрузки.

Распознавание текста на изображении с C# и Tesseract

Распознавание текста на изображении с C# и Tesseract

Шаг 3. Проектирование внешнего вида Windows Form
Откройте панель элементов во вкладке Вид.
Перетащите одну метку lable(для маркировки нашей программы), две кнопки button(одну для выбора изображения и другую для преобразования изображения в текст), одно текстовое поле TextBox для отображения пути к изображению, одно поле изображения для отображения изображения PictureBox, и одно поле Rich Text Box для отображения извлеченного текста.

Распознавание текста на изображении с C# и Tesseract

Дизайн формы по вашему выбору. Я разработал его следующим образом:

Распознавание текста на изображении с C# и Tesseract

Шаг 4. Создание логики и привязка ее к кнопкам на экране.
После установки пакета Nuget необходимо вручную установить языковые файлы в папку проекта. Можно сказать, что это недостаток именно этой библиотеки. Загрузите языковые файлы по следующей ссылке. Разархивируйте его и скопируйте папку tessdata в папку debug вашего проекта.
Дважды щелкните мышью по кнопке на форме. Visual Studio сгенерирует следующий код:


private void button1_Click(object sender, EventArgs e)
        {

        }

Затем напишите следующий код внутри функции button1_Click:

private void button2_Click(object sender, EventArgs e)
        {
              OpenFileDialog open = new OpenFileDialog();
              
            open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp; *.png)|*.jpg; *.jpeg; *.gif; *.bmp; *.png";
            if (open.ShowDialog() == DialogResult.OK)
            {
                 
                pictureBox1.Image = new Bitmap(open.FileName);
                  
                ImagePath.Text = open.FileName;
            }
        }

Также щелкните дважды по второй кнопке. В начало кода добавьте пространство имен: using Tesseract;.


private void button2_Click(object sender, EventArgs e)
        {
           
            var ocrengine = new TesseractEngine(@".tessdata", "rus+eng", EngineMode.Default);
            var img = Pix.LoadFromFile(ImagePath.Text);
            var res = ocrengine.Process(img);
            richTextBox1.Text = res.GetText();

        }

Шаг 5. Запуск проекта.

Нажмите Ctrl+F5 для запуска:

Распознавание текста на изображении с C# и Tesseract

Где это может пригодиться? При сканировании или распечатке документов может понадобиться их редактируемая копия.
Например, если вы сканируете бумажный документ или фотографию на принтере, принтер, скорее всего, создаст файл с цифровым изображением. Файл может быть в формате JPG/TIFF или PDF. Затем вы можете загрузить этот отсканированный электронный документ в программу OCR. Программа OCR распознает текст и преобразует документ в редактируемый текстовый файл.
Таким образом, вы сможете извлекать текст из изображений с помощью C# в Windows Forms или ASP.Net для веб страницы.

Источник