Можно ли в С# сделать распознавание текста с экрана? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, можно ли на си шарп распознавать символы на экране компьютера, если знать приблизительное место где они находятся на активном открытом окне в win 7, из символов букв - цифр (их немного, не более 5) и размер шрифта тоже известен. Или на этом языке трудно настроить подобное распознавание? Этот язык программирования мне нравится за свою относительную простоту и хорошую русификацию, но не уверен, что он может использоваться в этом направлении. Поэтому решил спросить у знатаков. Если можно, то в какую сторону следует двигаться? Если нет, то какой язык программирования мог бы подойти?

Решение задачи: «Можно ли в С# сделать распознавание текста с экрана?»

textual
Листинг программы
using System;
using System.Drawing;
using System.Windows.Forms;
using Tesseract;
 
namespace WindowsFormsApplication334
{
    public partial class Form1 : Form
    {
        private Point oldLocation;
        private TesseractEngine engine;
 
        public Form1()
        {
            InitializeComponent();
 
            engine = new TesseractEngine(AppDomain.CurrentDomain.BaseDirectory, "rus");
 
            Application.Idle += delegate
                                    {   
                                        if(Location != oldLocation)
                                        {
                                            oldLocation = Location;
                                            Recognize();
                                        }
                                    };
        }
 
        private void Recognize()
        {
            using(var bmp = new Bitmap(lbWindow.Width, lbWindow.Height))
            using(var gr = Graphics.FromImage(bmp))
            try
            {
                //capture screen
                gr.CopyFromScreen(PointToScreen(lbWindow.Location), Point.Empty, lbWindow.Size);
                engine.DefaultPageSegMode = PageSegMode.Auto;
                //recognize
                using (var page = engine.Process(bmp))
                    lbResult.Text = page.GetText();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы