Автоматизированная система оптического распознавания текста

 


 


Введение

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

В настоящее время первое место по использованию занимают телефоны, оснащенные операционной системой Android [1] предназначенной для мобильных устройств. Такие операционные системы в принципе аналогичны используемым на стационарных компьютерах и ноутбуках системам (Windows, Linux и т.д.), но они, во-первых, пока несколько проще и, во-вторых, ориентированы в большей степени на беспроводную связь.

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

Отсутствие проводов делает интерфейс Wi-Fi одним из наиболее удобных и популярных среди современных пользователей. При наличии мобильного устройства с операционной системой Android и интерфейса Wi-Fi на расстоянии можно управлять своими презентациями, совместно просматривать музыкальные файлы, фотографии и тематические истории, с друзьями или членами семьи. Так же смотреть фильм, не вставая с любимого дивана. Данный подход управления персонального компьютера (ПК) обеспечивает высокий уровень комфорта при работе.

На платформе ПК появляется огромное количество игр. Заметную часть выпускаемых компьютерных игр составляют автосимуляторы. Поэтому неудивительно, что с каждым годом возрастает число игровых манипуляторов, выполненных в виде органов управления наземных транспортных средств — рулей и педалей.

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

 

1 Анализ  и постановка задачи

1.1 Описание предметной области

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

Беспроводные технологии — подкласс информационных технологий, служат для передачи информации на расстояние между двумя и более точками, не требуя связи их проводами [3]. Для передачи информации может использоваться инфракрасное излучение, радиоволны, оптическое или лазерное излучение. В настоящее время существует множество беспроводных технологий, наиболее часто известных пользователям по их маркетинговым названиям, таким как Wi-Fi, WiMAX, Bluetooth. Каждая технология обладает определёнными характеристиками, которые определяют её область применения.

Интерфейс Wi-Fi был создан в 1991 году.

Данный вид интерфейса осуществляется с помощью беспроводного подключения, что является весомым преимуществом по сравнению с предыдущими типами интерфейса. Отсутствие проводов делает интерфейс 
Wi-Fi одним из наиболее удобных и популярных среди современных пользователей.

Интерфейс Wi-Fi обладает преимуществами.

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

2. Позволяет иметь доступ к сети мобильным устройствам.

3. Wi-Fi устройства широко распространены на рынке. Гарантируется совместимость оборудования благодаря обязательной сертификации оборудования с логотипом Wi-Fi.

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

1.2 Классификация сетей передачи данных

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

В соответствии с рисунком 1 сети передачи данных могут быть классифицированы по территориальной распространенности:

- автономные локальные сети (потоки данных территориально замкнуты в пределах предприятия, офиса, дома, квартиры);

- локальные сети с выходом в транспортную (первичную) сеть (часть потребителей имеет выход за пределы локальной сети, например, в Интернет) в пределах города или области;

- сети непосредственного доступа потребителей в транспортную сеть на территории государства или группы государств.

Ниже перечислены определения, использующиеся в соответствии с рисунком 1.

1. Абонентский терминал (АТ) — приемно-передающее радиоустройство небольших размеров с внутренней или внешней антенной. Конечное пользовательское оборудование подключается непосредственно к абонентскому терминалу и через радиоканал имеет доступ к сети связи.

Рисунок 1 – Классификация сетей

2.Точка доступа (ТД) — устройство, обеспечивающее связь абонентов сети доступа с телекоммуникационной (первичной) сетью доступа.

3.Точка распределения (ТР) — элемент первичной сети, обеспечивающий организацию сети распределения с точками доступа.

По скорости передачи информации компьютерные сети делятся на низко, средне и высокоскоростные:

- низкоскоростные сети – до 10 Мбит/с;

- среднескоростные сети – до 100 Мбит/с;

- высокоскоростные сети – свыше 100 Мбит/с.

По типу среды передачи сети разделяются на:

- проводные (на коаксиальном кабеле, на витой паре, оптоволоконные);

- беспроводные с передачей информации по радиоканалам или в инфракрасном диапазоне.

 

1.3 Постановка задачи

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

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

1.Использование экрана мобильного телефона в качестве «touchpad» для управления курсором мышки на персональном компьютере. Возможность перемещения курсора в области монитора ПК. Нажатие левой и правой кнопки мыши.

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

3. Использование акселерометра мобильного устройства в качестве игрового манипулятора (контроллера) для управления игрой на ПК.

В соответствии с рисунком 2 приведена функциональная схема такой программы.

Рисунок 2 – Структура программы дистанционного управления

1.4 Обоснование выбора средств реализации

В качестве среды разработки была выбрана среда Eclipse Helios так как данная среда позволяет разрабатывать приложения для операционной системы Android. Это свободная интегрированная среда разработки модульных кроссплатформенных приложений. В силу бесплатности и высокого качества, Eclipse во многих организациях является корпоративным стандартом для разработки приложений [2].

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

Для создаваемой программы был выбран язык программирования Java. Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры.

Достоинство подобного способа выполнения программ в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

1.5 Иерархия целей и задач

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

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

Иерархический подход позволяет проектировать сложные системы по принципу «сверху вниз» с позиции назначения и наилучшего решения основной задачи.

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

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

 

2 Анализ данных

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

Для подключения к серверу необходимо ввести IP адрес, который хранится в классе Settings в качестве строковой переменной и называется ip. При вводе IP адрес считывается с виджета EditText (текстовое поле для пользовательского ввода). Входными данными так же являются настройки чувствительности мыши, скорость прокрутки, возможность щелчка на тачпаде, которые являются атрибутами класса Settings и хранятся в качестве переменных: sensitivity типа int, scrollSensitivity типа int, tapToClick типа boolean. Класс Settings, определяющий настройки тачпада, представлен в приложении Г.

При перемещении указателя пальцем на сенсоре телефона, учитывается пространство нажатое пальцем на сенсоре. При  этом вызывается метод moveMouseFromSensors() в котором хранятся прошлое нажатое пространство lastSpace, считывается текущее currSpace, вычисляются координаты и вызывается метод передачи сообщения серверу о перемещении мыши sendMouseEvent. Прошлому пространству присваивается значение текущего.

Используя игровой манипулятор, необходимо считывать положение акселерометра телефона, значения которого задано тремя переменными координатами x, y, z. Данные координаты представляют положение телефона в пространстве. Изменение положения телефона фиксируются при помощи метода onSensorChanged и считываются при помощи значения акселерометра values[DATA_X].

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

Таблица 1 – Некоторые коды клавиш

Имя клавиши

Код клавиши в Android

Код клавиши в Windows

"q"

"45"

"81"

"w"

"51"

"87"

"e"

"33"

"69"

"r"

"46"

"82"

"t"

"48"

"84"

"y"

"53"

"89"

"u"

"49"

"85"

"i"

"37"

"73"

"o"

"43"

"79"

"delete"

"67"

"8"

"enter"

"66"

"32"

","

"55"

"44"

"trackup"

"19"

"38"

"trackdown"

"20"

"40"

"trackleft"

"21"

"37"

"trackright"

"22"

"39"


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

 

3 Анализ алгоритмов

Для обеспечения функционирования программы были разработаны следующие алгоритмы:

- поиск доступных компьютеров в сети;

- подключение  к серверу;

- передача  команд управления мыши;

- передача  команд управления клавиатурой.

Рассмотрим алгоритм подключения к серверу, блок-схема которого представлена в соответствии с рисунком 3. При подключении к серверу вызывается метод onConnectButton, который считывает IP адрес из EditText. Затем производится проверка корректности введенного IP адреса. Если IP адрес правильный, он сохраняется в классе Settings, который отвечает за хранение настроек, после чего приложение переключается на форму PadActivity. PadActivity в свою очередь запускает Pad_Layout.xml и служит для работы с тачпадом и клавиатурой. Если IP адрес не корректен, то выводится соответствующее сообщение об ошибке в соответствии с рисунком 4.

При применении тачпада используется алгоритм передачи команд управления мыши, передача новых координат осуществляется в методе moveMouseFromSensors. В этом методе производится вычисление новых координат курсора и передача их серверу методом sendMouseEvent(int type, float x, float y). Описание алгоритма приведено в приложении В.

Алгоритм поиска доступных в сети компьютеров сканирует сеть на наличие видимых компьютеров и отображает их в виде списка их адресов в стартовом окне, где простым нажатием на адрес можно подключиться к необходимому компьютеру. Данный алгоритм хранится в классе FoundHostsAdapter, для обновления списка компьютеров используется метод updateHostList().

Подробное описание алгоритмов используемых в программе приведено в приложении В.

Рисунок 3 – Блок схема алгоритма подключения

Рисунок 4– Сообщение об ошибке ввода IP адреса

 

4 Модульная структура

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

- усиление  внутренних связей модулей;

- ослабление  взаимосвязи между модулями.

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

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

Описание основных модулей приведено в таблицах2 и 3.

Таблица 2 – Описание основных модулей клиентской части

Название модуля

Назначение

DiscoverThread

Поток для работы с сокетами

FoundHostsAdapter

Класс для хранения и поиска хостов

CoordinateSpace

Класс для работы с координатами


Продолжение таблицы 2

PadActivity

Класс для работы с пользователем

ControlDroid

Класс, реализующий стартовое окно программы

Settings

Класс настроек программы


Таблица 3 – Описание основных модулей серверной части

Название модуля

Назначение

DiscoverThread

Поток для работы с сокетами

AppFrame

Содержит класс для создания главного фрейма

KeyCodeData

Содержит класс хранения кодов клавиш

OSCWorld

Служит для получения данных от сервера и эмуляции их на ПК

ControlDroidServer

Запуск главного фрейма


 

5 Тестирование

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

Проверка с использованием широкого диапазона тестовых наборов данных помогает довольно тщательно и точно оттестировать функции. Это позволяет на более поздних этапах реализации и тестирования при возникновении ошибок значительно реже возвращаться к уже оттестированным участкам программы.

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

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

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

 

6 Документирование

6.1 Техническое задание

1 Введение

Программа «Использование мобильного устройства в качестве игрового манипулятора, мыши и клавиатуры для дистанционного управления персональным компьютером» предназначена для пользователей персональных компьютеров имеющих в расположении мобильное устройство с операционной системой Android. Это полезный инструмент для управления мультимедийными особенностями персонального компьютера, например проигрывания файлов MP3 или DVD-видео. Указанная программа так же может использоваться при проведении презентаций, для автоматизации управления ходом презентации.

2 Основания для разработки

Перечень документов, на основании которых ведется разработка:

– техническое описание и полные технические характеристики мобильных устройств с операционной системой Android;

– настоящее техническое задание.

Полное наименование программы: «Использование мобильного устройства в качестве игрового манипулятора, мыши и клавиатуры  для дистанционного управления персональным компьютером»

Краткое наименование программы: «Мобильный игровой манипулятор, мышь и клавиатура для дистанционного управления ПК»

Плановые сроки начала и окончания работы по созданию системы.

Плановый срок начала работ по созданию программы по использованию мобильного устройства в качестве игрового манипулятора, мыши и клавиатуры  для дистанционного управления ПК – 1 марта 2011 года.

Плановый срок окончания работ по созданию программы по использованию мобильного устройства в качестве игрового манипулятора, мыши и клавиатуры  для дистанционного управления ПК – 10 июня 2011 года.

3 Назначение и цели создания системы

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

Основными целями создания программы являются:

– повышения удобства дистанционного управления ПК;

– повышение эффективности использования мобильного устройства для дистанционного управления ПК.

4 Требования к программе

Требования к функциональным характеристикам.

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

Программа должна выполнять ниже перечисленные функции.

1. Использование экрана мобильного устройства в качестве тачпада для управления курсором мышки на персональном компьютере. Возможность перемещения курсора в области монитора ПК. Нажатие левой и правой кнопки мыши.

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

3. Использование акселерометра мобильного устройства в качестве игрового манипулятора (контроллера) для управления игрой на ПК.

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

– при входящем вызове на мобильное устройство;

– при ошибках сети выводить соответствующие сообщения;

– при ошибках в работе аппаратных средств (кроме носителей данных и программ) восстановление функции системы возлагается на ОС;

– при ошибках, связанных с программным обеспечением (ОС и драйверы устройств), восстановление работоспособности возлагается на ОС.

При эксплуатации программы, должна присутствовать поддержка интерфейса Wi-Fi, как на ПК, так и на мобильном устройстве. Пользователь должен уметь пользоваться мобильным устройством с операционной системой Android.

Требования к составу и параметрам технических средств.

В необходимый состав технических средств входят: мобильное устройство, Wi-Fi роутер и персональный компьютер.

Для обеспечения надежного функционирования программы необходимо наличие в мобильном устройстве акселерометра, интерфейса Wi-Fi, а также операционной системы Android , установленной клиентской программной части и поддержки  Java. Для ПК необходима поддержка интерфейса Wi-Fi и установленной серверной части программы.

Минимальные технические характеристики ПК пользователя:

– процессор с тактовой частотой не менее 2 ГГц;

– объем оперативной памяти – не менее 512 Мб;

– свободное место на диске – 50 Мб;

– поддержка интерфейса Wi-Fi.

Минимальные технические характеристики мобильного устройства пользователя:

– процессор с тактовой частотой 600 МГц;

– поддержка интерфейса Wi-Fi;

– операционная система Android 2.2;

– объем оперативной памяти (RAM) 256 Мб.

Требования к информационной и программной совместимости.

При разработке должны использоваться следующие языки программирования:

- для  серверной части программы должны  использоваться язык программирования С++ и среда разработки Visual C++;

- для  клиентской части программы должны  использоваться язык Java c использованием среды программирования Eclipse, так как это кроссплатформенная разработка.

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

Требования к лингвистическому обеспечению системы.

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

5 Требования к  программной документации

Программа должна иметь полное руководство пользователя.

6 Стадии и этапы разработки

Этапы разработки представлены в таблице 4.

Таблица 4 – Этапы разработки

Этапы

Содержание работ

1

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

2

Проектирование подсистем, их взаимодействия и реализации


Продолжение таблицы 4

3

Реализация серверной части

4

Реализация клиентской части

8

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

9

Генеральное тестирование и отладка программы

12

Разработка документов эксплуатации программы

Автоматизированная система оптического распознавания текста