Разработка технологии заполнения шаблона документа по печатному бланку, заполненному от руки

Заполнение форм данными из печатного бланка с рукописными данными, описание проблемы. Алгоритм распознавания текста. Разработка тестового приложения, написание программы. Пример разбиения области символа на занимаемые точками сектора. Метод косинусов.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 10.01.2017
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

[Введите текст]

Введение

В современном мире многие сферы затронуты таким явлением как документооборот. Сейчас во многих отраслях используются различные формы документов, заполняемые как от руки, так и с помощью цифровых машин или компьютеров. С развитием цифровой техники стала необходимость взаимодействия аналогового и цифрового мира. Т.е. взаимодействие привычных человеку ощущений и величин с компьютерами. Это стало возможным, благодаря использованию различных блоков аналого-цифрового преобразования. Насущной проблемой явилось и возможность унификации человеческого письма с цифровыми данными. Несмотря на то, что часто бланки документов часто заполняются вручную посредством таких программ как Word, ручное письмо не потеряло актуальность. В отличие от машинного кода ручное письмо легче идентифицировать. Особенно актуален этот момент в криминалистике, для предотвращения возможных актов мошенничества и т.д. Поэтому со временем стал актуален вопрос переноса ручного письма из бланков в язык, понятный компьютеру. Т.е. возникла необходимость в технологии, которая с должной степенью вероятности могла бы распознавать рукописный текст, сопоставлять данному тексту машинный и использовать его в своих нуждах. Например, заполнять встроенные формы печатными символами, введенными ранее на специальном бланке от руки, производить расчеты на основе распознанных цифр. Технически сложилось, что более точные технологии в данной области являются одновременно и более сложными. Работы по совершенствованию системы распознавания рукописного письма актуальны до сих пор.

1. Заполнение форм данными из печатного бланка с рукописными данными. Описание проблемы

В настоящее время при заполнении форм в компьютерном виде часто необходимо данную форму заполнить данными из ранее напечатанного бланка, который был заполнен от руки. Для этого печатный документ сканируется, и специальная программа распознает написанные в нем символы. В основе данного процесса лежит алгоритм распознавания текста.

Системы распознавания текста или OCR-системы (Optical Character Recognition) предназначены для автоматического ввода документов в компьютер. Это может быть страница книги, журнала, словаря, какой-то рукописный документ (заполненная анкета, заполненый бланк тестирования, результаты опроса и т.д.) -- все, что угодно, что было уже напечатано, либо написано от руки и должно быть преобразовано в электронную форму.

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

На следующем этапе каждый символ сравнивается со специальным словарем символов, и если находится соответствие, то этот символ считается распознанным. В итоге мы получаем набор распознанных символов, то есть искомый текст.

Современные OCR-системы представляют собой достаточно сложные программные решения. Ведь текст может быть замусорен, искажен, загрязнен, и программа должна это учитывать и уметь правильно обрабатывать такие ситуации. Кроме того, современные OCR-системы позволяют также получить копию печатного документа в электронном виде с сохранением форматирования, стилей, размеров текста и видов шрифтов и т.д.

ArioForm - решение для обработки большого объема данных, оформленных по определенному шаблону (таких как результаты тестов и опросов, бланки, отчеты, различные формы). Возможности программы позволяют создавать и распознавать формы практически любой сложности, содержащие печатный текст, поля ввода рукописного текста, поля выбора одного или нескольких параметров, графические элементы. Программа также имеет набор уже созданных шаблонов.

Распознавание рукописного ввода -- это способность компьютера получать и интерпретировать рукописный ввод. Распознавание текста может производиться «офлайновым» методом из уже написанного на бумаге текста или «онлайновым» методом считыванием движений кончика ручки, к примеру по поверхности специального компьютерного экрана.

Данные методы широко используются в различных сферах, например, образовании. Здесь данная технология используется, чтобы подсчитывать баллы по результатам какого-либо тестирования, и т.д. Бланки для тестирования знаний имеют определенную форму, куда тестируемый заносит данные (буквы и символы). Используются подобные бланки и в миграционной и налоговой службах. Например, на рисунке 1.1. показан бланк уведомления о временном прибытии иностранного гражданина на территорию Российской Федерации.

Рисунок 1.1 - Бланк уведомления о прибытии иностранного гражданина

На данном бланке все данные вносятся в специальные поля, причем шрифтом, максимально схожим с тем, что дан в верхней части для образца. Это обеспечит точное распознавание текста в соответствии с написанным. Бланк имеет темно серый фон. Вверху по краям углом расположены маркеры положения - черные квадраты. По данным меткам программа ориентирует точное положение отсканированного документа, после чего начинает последовательный анализ записанных данных.

2. Описание алгоритма распознавания текста

Для описания алгоритма распознавания текста необходимо определить, что собой представляет рукописный и машинный текст.

Рукописный ввод -- это рисование рукой определенной фигуры. Представление аналогичных фигур в компьютерных системах -- это сохранение в графической памяти информации обо всех пикселях графического контекста. В компьютерных системах графическое содержание описывается пикселями, расположенных на определенных координатах. Алгоритм распознавания текста для перевода его из рукописного в компьютерный представляет собой нахождения корреляции между написанным текстом и одной из базовых фигур, определяющих тот или иной символ. Данный алгоритм распознавания будет анализировать предоставленный ему набор точек (пикселей) и пытаться в нем отыскать наиболее возможную и подходящую фигуру. Фигура, в свою очередь представляет некий каркас, содержащий лишь основные (контрольные) точки, делающие фигуру уникальной.

Основой алгоритма является теорема Косинусов. При известных координатах трех точек на плоскости, можно легко определить угол, который описан вершиной угла, образованным этими точками. При этом вершина угла образуется второй по счету точкой.

Рисунок 2.1 - Теорема косинусов для треугольника, образованного точками

Расстояние между любыми двумя точками можно найти, используя теорему Пифагора. Вычислив косинус, можно найти угол.

Из общего набора точек, которые подаются на вход алгоритма, необходимо сравнить положение данных точек с положением точек, образующих различные базовые каркасы фигур. Из имеющихся каркасов необходимо выделить наиболее подходящее решение. Весь алгоритм включает в себя следующие шаги:

Выбирается первая и последняя точка каркаса фигуры. После этого необходимо найти третью точку для последующего вычисления величины угла.

Поиск третьей точки осуществляется методом перебора всех последующих точек после первой.

Для каждой такой последующей точки делается анализ:

- Подстановка точки на место третьей заключительной и проверка образованного угла на совпадение с тем углом, который образован каркасом реальной фигуры.

- Проверить соотношение сторон образованного треугольника (из вершины угла) с теми сторонами, которые образованы каркасом реальной фигуры для данной точки.

Если данные условия совпадают, то можно принять решение о включении точки в набор точек, образованный заданном каркасом. В этом случае увеличивается вероятность того, что рукописная фигура совпадет с искомой, образованной каркасом.

Для примера, допустим, что имеется несколько каркасов искомых символов. Для примера возьмем два похожих каркаса по форме - “8” и “5”. И если результат распознавания для какой-то фигуры в процентном соотношении больше, то принимается решение о том, что рукописная фигуры была именно этим символом. Величина сходства в процентном соотношении подобности фигур высчитывается несложно: сразу суммируются все наборы точек с точками, совпавшими в каркасе и находится отношение. Если, например, сошлось m точек, а каркас искомой фигуры имеет n точек, тогда процент подобности или сходства:

Для наглядности можно рассмотреть процесс распознавания написанного числа “6”.

Рисунок 2.2 - Нахождение сходства между рукописной фигурой и каркасом

Если данные условия совпадают, то можно принять решение о включении точки в набор точек, образованный заданном каркасом. В этом случае увеличивается вероятность того, что рукописная фигура совпадет с искомой, образованной каркасом.

На рисунке цифрами обозначены точки образованных углов. Счет ведется, начиная с последнего угла. Если полагать, что символ рисуется с точки 2, а заканчивается на точке 1, тогда первые две точки, с которых необходимо начинать анализ каркаса являются именно точки 1 и 2. После этого производится поиск точки 3. Параметры расположения данной точки должны совпадать с параметрами аналогичной в каркасе символа. После этого можно начинать поиск точки 4. Поиск точки 4 ведется уже с использованием определенного положения точек 2 и 3. Подобные шаги выполняются до тех пор, пока не будут проанализированы все точки каркаса.

Однако такой метод имеет свои недостатки, особенно когда точек немного и расположение точек рукописного символа может отличаться на некоторое расстояние от точек каркаса. Вероятность того, что кто-то напишет фигуру с точками, точь в точь совпадающими с контрольными точками каркаса крайне мала. Поэтому устанавливают допустимый предел, на который точки рукописной фигуры могут отклоняться от прямых, образующих каркас символа. Поэтому, часто всю область, занимаемую эталонным символом, условно делят на сектора. Если точки рукописного текста попадают по своим координатам в область (сектор), в котором также находятся точки каркаса, то вероятность того, что написанный символ совпадет со сравниваемым, повышается.

3. Разработка тестового приложения. Написание программы

Разработку тестового приложения и написание программы в данном случае будем осуществлять, используя среду разработки C++ Builder Embarcadero 7. Данная среда разработки широко используется для создания приложений для Windows. Имеет в своем составе конструктор форм и базовые элементы для более удобной работы и ускорения процесса программирования.

Внешний вид среды C++ Builder Embarcadero представлен на рисунке 3.1. Во всех остальных версиях внешний вид рабочего окна почти ничем не отличается. В основе проекта с использованием пользовательского интерфейса лежит форма, на которой можно разместить различные компоненты управления. Для создания приложения с формой в меню Создать->Проект выбираем VCL Application. После этого можно непосредственно приступать к написанию кода.

При тестировании приложения можно запускать его как и в реальном (рабочем) варианте в режиме Release, так и в режиме отладки Debug, при котором можно протестировать написанное приложение по шагам.

Рисунок 3.1 - Рабочее окно среды разработки C++ Builder Embarcadero

Создадим тестовую программу для демонстрации процесса распознавания текста из бланка и занесем данные в специальную форму. Для облегчения задачи условимся, что программа будет распознавать только определенный набор символов. Например, цифры. Формат печатного бланка (его имитацию) сделаем произвольным.

В качестве основного рабочего компонента в программе будем использовать компонент под названием Image. У данного компонента имеется свойство - Canvas, т.е. канва или холст. С помощью данного свойства компонент Image представляет собой холст, наподобие того, который мы видим при открытии программы Paint. С помощью данного компонента в него можно помещать изображения, программно редактировать цвет точек, объединять нарисованные элементы в структуры, задавать их положение и другие атрибуты. В данный холст будет подгружаться бланк с имитированным рукописным текстом. Программа точно задает положение этого бланка, поэтому все позиции символов ей будут известны. Зная, что фон каждой позиции символа белый, а цвет текста синий или черный, то по анализу цвета пикселей легко считать форму написанного символа. Далее используется принцип, описанный в разделе 2.

Для добавления компонента Image в правой части C++ Builder имеется панель - Tool Pallete. В ней размещены и отсортированы по свиткам все компоненты, которые можно добавить в проект. Вторым обычно идет свиток - Additional. Развернув его, в нем можно найти искомый компонент Image и перетащить его на форму.

Слева внизу располагается меню свойств на заданный компонент, который выделен мышью на форме. Выделив компонент Image зададим в свойствах Height и Width значения 330 и 490 соответственно. По умолчанию цвет фона Image у нас серый. Но используя свойство Canvas его можно изменить на белый:

Image1->Canvas->Brush->Color=clWhite;

Image1->Canvas->Rectangle(0,0,490,330);

Image1->Canvas->LineTo(250,250);

После этого создадим в приложении MS Paint изображение, имитирующее бланк с заполненными данными. Готовое изображение бланка разместим в корневой папке скомпилированного приложения. Внешний вид изображения, имитирующего бланк с заполненными данными показан на рисунке 3.2. Размер изображения совпадает с установленными размерами компонента Image, размещенного на форме.

Для примера на бланке размещены цифры, например, период с какого-то по какой-либо год. Размеры поля для каждого символа составляют 40*50 точек. Расстояние между областями под каждый символ составляет 40 точек. Знание координат расположения данных областей также необходимо.

Данные цифры необходимо сравнить с готовым имеющимся набором базовых символов. Для этого необходимо создать каркас всех символов, которые могут находится в полях. Как было условлено выше, создадим массив из каркасов цифр от 0 до 9.

Рисунок 3.2 - Изображение, имитирующее заполненные поля в печатном бланке

Для загрузки изображения в компонент Image на форму необходимо поместить компонент Button. В обработчике события нажатия на кнопку напишем код (здесь с комментариями):

Graphics::TBitmap *bitmap=new Graphics::TBitmap;

bitmap->LoadFromFile("blank.bmp"); //Загрузили изображение

Image1->Canvas->Draw(0,0,bitmap); //Вывели на канву формы в точке (0,0)

delete bitmap; //Освободили память

Для работоспособности данного, когда необходимо, чтобы бланк был изображением с именем blank и расширением bmp. А так же, чтобы данный файл находился в одной папке с исполняемым файлом программы.

Определим шаблоны каркасов для всех возможных символов. Каркасы и области для конкретного символа показаны на рисунке 3.3.

Рисунок 3.3 - Каркасы распознаваемых символов

Анализ для каждого символа можно производить сегментарно (каждый символ можно разбить на сегменты, образующие его каркас) анализируя форму получившейся линии с заданной, либо по матрице подобия, которая образуется каждым из каркасов. Изобразим матрицу на примере числа “2”.

Рисунок 3.4 - Разбиение области символа на занимаемые точками сектора

Т.е. чем больше рукописных точек, попадающих в тот или иной сектор, тем больше вероятность того, что написан тот или иной символ. Очевидно, что для каждого анализируемого числа необходимо создать общую структуру, параметрами которой будут:

- массив занимаемых секторов;

- указатель на количество точек, из которых состоит каркас.

Сразу определим размерность секторов. Вспомним, что размерность области, отведенного под символ имеет размеры 40*50 точек. Тогда условно можно принять размеры одного сектора равными 10*10 точек. Общее количество секторов для каждой области в таком случае составит 20. Счет секторов в области ведем слева направо и сверху вниз от 0 до 19-ти.

Таким образом в программе можно объявить структуру с именем S_carcas:

typedef struct

{

int sectors[20];

int points;

int scnt;

}S_carcas;

Здесь переменная типа int sectors[20] указывает на массив секторов в каждой области. Если точки каркаса эталонного символа входят в область сектора i, тогда переменная sectors[i] в массиве принимает значение 1. В противном случае - 0. Int scnt - общее количество секторов, занимаемым данным эталонным символом.

Переменная points описывает общее количество точек, входящих в каркас. Создаем массив структуры для всех символов от 0 до 9-ти:

S_carcas etalon[10];

Теперь для каждого эталонного символа можно заполнить структуру. Сразу запишем сектора, в которых располагаются точки каждого эталонного символа.

Для “0”: сектора 1,2,5,6,9,10,13,14,17,18

Для “1”: сектора 2,5,6,10,14,17,18

Для “2”: сектора 1,2,6,9,10,13,17,18

Для “3”: сектора 1,2,6,9,10,14,17,18

Для “4”: сектора 5,6,9,10,14,18

Для “5”: сектора 1,2,5,9,10,14,17,18

Для “6”: сектора 1,2,5,9,13,14,17,18

Для “7”: сектора 1,2,6,10,14,18

Для “8”: сектора 1,2,5,6,9,10,13,14,17,18

Для “9”: сектора 1,2,5,6,9,10,14,17,18

Замечаем, что цифра “8” занимает те же сектора, что и число “0”. В этом случае одним из решений было бы увеличить число секторов (разбить области символов на более мелкие участки), но предположим, что верный символ определится без ошибок с помощью оценки вероятности соответствия.

Заполнение структур для каждого символа осуществляется в функции void fill_struct(). Код данной функции довольно длинный, поэтому для примера приведем заполнение структуры для числа “0”:

etalon[0].sectors[0] = 0;

etalon[0].sectors[1] = 1;

etalon[0].sectors[2] = 1;

etalon[0].sectors[3] = 0;

etalon[0].sectors[4] = 0;

etalon[0].sectors[5] = 1;

etalon[0].sectors[6] = 1;

etalon[0].sectors[7] = 0;

etalon[0].sectors[8] = 0;

etalon[0].sectors[9] = 1;

etalon[0].sectors[10] = 1;

etalon[0].sectors[11] = 0;

etalon[0].sectors[12] = 0;

etalon[0].sectors[13] = 1;

etalon[0].sectors[14] = 1;

etalon[0].sectors[15] = 0;

etalon[0].sectors[16] = 0;

etalon[0].sectors[17] = 1;

etalon[0].sectors[18] = 1;

etalon[0].sectors[19] = 0;

etalon[0].points = 100;

etalon[0].scnt = 10;

Теперь внимание следует обратить на получение данных из заполненных рукописных ячеек. Для этого также объявим структуры:

typedef struct

{

S_sector Cur_sector[20];

int glob_x;

int glob_y;

}S_symbol;

Данная структуры S_symbol содержит:

Указатель на массив из элементов вложенной структуры S_sector;

Указатель на координату `x' текущей области символа;

Указатель на координату `y' текущей области символа.

Следует помнить, что в компоненте Image координатная прямая X направлена слева направо, а Y - сверху вниз. Т.е. начало координат будет располагаться в верхнем левом углу холста.

Вложенная структура S_sector описывает каждый из 20-ти секторов, присущих данной области:

typedef struct

{

int cheked; //1 - если в секторе имеются точки

int num_points; //общее количество точек в секторе

int sector_x; // координата x начала сектора

int sector_y; // координата y начала сектора

}S_sector;

Из образца бланка следует, что количество всех областей равно 8, поэтому объявить указатель на структуру символа нужно массивом:

S_symbol symbol[8];

Теперь внимание следует обратить на получение данных из заполненных рукописных ячеек. Для этого также объявим структуры:

За заполнение структуры областей символов отвечает функция fill_symbols(). В данной функции заполняются координаты областей и каждого сектора, входящего в состав данной области.

Функция имеет цикл, в котором происходит вычисление и заполнение значений координат для каждого из символов. В свою очередь для каждого символа выполняется дополнительно ещё один цикл для каждого из сектора. Там также заполняются координаты расположения каждого из секторов для данной области.

Переменная cх указывает на смещение, или номер ряда, в котором располагается очередной сектор. В каждом ряду у нас имеется по 4 сектора, значит величина положения по оси `y' смещается через каждые 4 сектора.

void fill_symbols()

{

int i = 0;

int k = 0;

int cx;

for (i = 0; i < 8; i++) //для каждого символа выполняем

{

symbol[i].glob_x = 0+i*50; //вычисляем положение области x

if (i>3) //если порядковый номер символа больше 3-х, то переходим

//на новую строку (это видно из рисунка бланка)

{

symbol[i].glob_y = 60;

}

else

{

symbol[i].glob_y = 0;

}

for (k = 0; k < 20; k++) //для каждого сектора

{

cx = k/4; //число обработанных строк

symbol[i].Cur_sector[k].sector_x = symbol[i].glob_x + k*10-40*cx;

symbol[i].Cur_sector[k].sector_y = symbol[i].glob_y + (k/4)*10;

}

}

}

Функцию fill_sectors() также стоит добавить в тело обработчика кнопки, по нажатию которой загружается изображение бланка.

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

Запишем общую функцию для процесса нахождения точек для одного сектора:

void comp_sector(int pos, int number)

{

int xs;

int ys;

int cur_x = symbol[pos].Cur_sector[number].sector_x;

int cur_y = symbol[pos].Cur_sector[number].sector_y;

TColor col;

int p_count = 0;

for (ys = cur_y; ys < cur_y+10; ys++)

{

for (xs = cur_x ; xs < cur_x+10; xs++)

{

Form1->ListBox1->Items->Add(IntToStr(xs));

col = Form1->Image1->Canvas->Pixels[xs][ys];

if (col != clBlack && col != clWhite )

{

p_count = p_count+1;

}

}

}

symbol[pos].Cur_sector[number].num_points = p_count;

if (p_count>0)

{

symbol[pos].Cur_sector[number].cheked = 1;

}

}

В данной функции мы опрашиваем каждую координатную точку сектора. И если в нем имеются нарисованные пиксели, тогда в структуру заносится количество этих точек (p_count), и если это количество не равно нулю (т.е. сектор не пустой), устанавливаем флаг checked = 1.

Пробуем преобразовать первую строку (4 символа)

На форме необходимо расположить вторую кнопку, которая непосредственно будет отвечать за процесс преобразования. Код обработчика данной кнопки выглядит следующим образом:

int m;

float f;

float res=0;

int num_seek=0;

float* pf;

float a,b;

int i;

int k;

for (i = 0; i < 4; i++)

{

compare(i);

for(k=0; k<10;k++)

{

m = check_num(i,k);

pf=(float*)&m;

a=*pf;

pf=(float*)&etalon[k].points;

b = *pf;

f=a/b;

if (f>res)

{

res = f;

num_seek=k;

}

}

Form1->ListBox1->Items->Add(IntToStr(num_seek));

}

Переменная i указывает в цикле на текущий символ (у нас их 4 в каждой строке). Затем в переменную m передается общее количество точек, которые совпадают для каждого из 10-ти эталонных символов. После этого находим отношение количества точек, совпавших в общих секторах, к общему количеству точек эталонной фигуры.

На форму также добавлен компонент ListBox1. В каждую строку данного компонента после преобразования очередного символа записывается распознавшийся символ. Внешний вид программы на этапе выполнения примет вид как на рисунке 3.5:

Рисунок 3.5 - Выполнение распознавания текста

Как видим, в лист справа записалось 4 значения - 1,2,1,2. Что должно соответствовать числу 1212. Однако на бланке в первой строке введено число 1912. Очевидно, что число 9 распозналось как 2. В этом кроется недостаток использования больших по объему секторов. Как правило, при распознавании и переносе текста используется несколько методов для одного символа сразу. По итогам нескольких сопоставлений выбирается наиболее высокая общая вероятность.

Заключение

текст распознавание приложение символ

В данной работе рассмотрена проблема унификации данных, заполненных от руки с документами в цифровом формате. Использование данных, заполненных от руки в цифровом виде аргументировано тем, что эти данные весьма просто и удобно использовать различными программами для дальнейшей обработки. В работе описаны два основных метода распознавания текста, которые как правило, используются вместе. Один из них - метод косинусов, позволяющий уточнить форму исходного написанного символа. Данный алгоритм основан на анализе величину углов, образованных контрольными точками рукописной фигуры. Чем больше точек для анализа, тем сложнее алгоритм. Второй - метод наложения матрицы, в соответствии с которым исходная область символа делится на сектора, и оценивается вероятность совпадения точек рукописного текста, вошедшего в определенные сектора, с эталонными данными. Чем эта вероятность выше, тем в большей степени можно судить, что данный символ соответствует тому, а не иному.

В работе реализован в программе лишь метод распознавания по наложению матрицы рукописного символа на эталонный. Показано, что данный метод не совершенен, и в нем возможны ложные распознавания. Например, число 1912 у нас распозналось как 1212.

Как правило, при доработке подобных алгоритмов, и при использовании нескольких методов сразу для анализа одного символа, вероятность ошибки резко снижается. Также не следует забывать, что качественная работа алгоритма также зависит от качества самого отсканированного документа. Если символы отсканированного документа имеют расплывчатые контуры, то надежность безошибочной конвертации данных резко падает.

Таким образом, вероятность точного преобразования зависит от качества входного изображения и используемых алгоритмов для распознавания символов.

Преобразованные данные могут быть в дальнейшем использованы для различных целей.

Список литературы

1. Федоренко Ю.П. - Алгоритмы и программы на C++ Builder - ДМК Пресс, 544 с., М - 2010.

2. Р. Лафоре - Объектно-ориентированное программирование в С++ . ПИТЕР., СПб - 2004.

3. Травин А.И. - Технологии оптического распознавания текстов - “Электронный офис” - 1996

4. Барский А.Б. - Логические нейронные сети: учеб. Пособие. - Бином., М. - 2010.

Размещено на Allbest.ru

...

Подобные документы

  • Разработка многопоточного приложения, выполняющего обмен данными между двумя процессами и анализ содержимого служебной области системного диска. Описание логической структуры программы, создание программы-инсталлятора, методика и результаты испытаний.

    курсовая работа [4,3 M], добавлен 27.03.2011

  • Цель и основные составные части автоматизации. Характеристика ее объекта. Описание концептуальной модели предметной области. Обоснование выбора программного обеспечения. Разработка программы в среде Borland Delphi 7. Общий алгоритм работы приложения.

    курсовая работа [368,6 K], добавлен 21.05.2015

  • Необходимость в системах распознавания символов. Виды сканеров и их характеристики. Оптимальное разрешение при сканировании. Программы распознавания текста. Получение электронного документа. FineReader - система оптического распознавания текстов.

    презентация [469,2 K], добавлен 15.03.2015

  • Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика.

    дипломная работа [1,5 M], добавлен 09.11.2016

  • Проектирование программы, которая ведет учет книг в книгохранилище библиотеки. Выбор языка программирования. Разработка и элементы тестового приложения, его структура. Заполнение основных полей для добавления книги. Тестирование программы, ее алгоритм.

    курсовая работа [1,5 M], добавлен 20.11.2015

  • Методы распознавания образов (классификаторы): байесовский, линейный, метод потенциальных функций. Разработка программы распознавания человека по его фотографиям. Примеры работы классификаторов, экспериментальные результаты о точности работы методов.

    курсовая работа [2,7 M], добавлен 15.08.2011

  • Разработка алгоритмов на персональном компьютере, среда Турбо Паскаль. Работа программы для шифровки и дешифровки текста. Алгоритм шифрования: с помощью команды ORD. Функция Password а преобразовании символа, введенного пользователем ключа в его числовой

    курсовая работа [19,6 K], добавлен 17.10.2008

  • Проектирование приложения на языке С# в среде Microsoft Visual Studio 2008: составление алгоритмов сегментации текста документа и распознавания слова "Указ" в нем, создание архитектуры и интерфейса программного обеспечения, описание разработанных классов.

    курсовая работа [2,4 M], добавлен 05.01.2011

  • Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.

    курсовая работа [550,5 K], добавлен 08.06.2023

  • Проектирование базы данных для библиотеки и разработка программы для её удобного использования. Пример работы приложения на примере поиска статей по заданным условиям, а также основных операций с данными – добавления в базу, редактирования и удаления.

    курсовая работа [2,5 M], добавлен 23.02.2014

  • Редактирование текста как очень важная часть оформления документов. Разработка программы по работе с текстом "Текстовый редактор" в среде разработки C++Builder 6 как приложения, использующегося в качестве замены встроенного редактора "WordPad".

    курсовая работа [256,7 K], добавлен 08.12.2010

  • Этапы создания программы для учета рождаемости детей. Разработка базы из основной таблицы с оперативными данными и четырех таблиц-справочников с наименованиями кодов. Создание форм для заполнения таблиц и просмотра запросов с русифицированными кнопками.

    практическая работа [1,6 M], добавлен 13.07.2010

  • Изучение средств реализации, с помощью которых возможно построить веб-сайт, необходимый для поиска работы и работников на необходимые должности. Создание страниц блочным методом вёрстки. Разработка портфолио с данными по зарегистрированным пользователям.

    курсовая работа [1,0 M], добавлен 10.11.2014

  • Разработка адресных и технических требований к игре. Написание сценария. Общая концепция разработки приложения. Разработка схем алгоритмов приложения. Игровые технологии. Выбор среды и программированного языка. Описание пользовательского интерфейса.

    курсовая работа [1,6 M], добавлен 14.06.2014

  • Анализ современного состояния систем автоматизации управления данными; учет инфраструктуры информационной системы и требования к ресурсам организации. Разработка системы управления данными на базе SharePoint-сайта, программная реализация и внедрение.

    диссертация [4,1 M], добавлен 10.11.2011

  • Автоматизация процессов трудоустройства безработных; разработка приложения "DBcontrolle" для государственного учреждения "Ставропольская трудовая биржа". Управление данными в базе, триггеры. Обмен данными между серверной частью и клиентским приложением.

    курсовая работа [1004,9 K], добавлен 03.07.2011

  • Создание электрической схемы проектируемого устройства с помощью графического интерфейса. Улучшение кодовой базы с помощью рефакторинга. Разработка алгоритма работы программы. Использование методики Test driven development, написание тестового покрытия.

    курсовая работа [1,3 M], добавлен 15.02.2016

  • Методика разработки и листинг программы для управления динамиком системного блока, обеспечения установки частоты и длительности формируемых сигналов. Алгоритм и этапы работы проектируемого приложения, анализ полученных результатов. Пример его работы.

    лабораторная работа [79,0 K], добавлен 17.12.2015

  • Разработка графического интерфейса проекта (панель инструментов имеет 6 кнопок). Процедуры разделов программы: документа ThisDocument, программного модуля Module1 и пользовательских форм UserForm1, UserForm2 и Деление_амёбы. Тестирование программы.

    курсовая работа [29,5 K], добавлен 14.12.2010

  • Математическое описание, алгоритм и программа вычисления нелинейного уравнения методом дихотомии. Метод половинного деления. Метод поиска корней функции. Написание текста программы с комментариями. Проведение тестовых расчетов. Вывод ответа на экран.

    курсовая работа [67,2 K], добавлен 15.02.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.