Содержание
Введение................................................................................................................. 3
Технические параметры................................................................................... 4
Возможности системы.............................................................................................................................. 4
Аппаратное обеспечение......................................................................................................................... 4
Программное обеспечение...................................................................................................................... 4
Описание структуры системы и принципа ее работы.......................... 5
Описание метода........................................................................................................................................ 6
Описание программы................................................................................................................................ 7
Структура базы для хранения эталонных символов....................................................................... 9
Текст программы...................................................................................................................................... 12
В настоящее время, с ростом числа персональных компьютеров, огромное количество информации вводится с бумажных носителей на магнитные диски компьютеров. Разумеется это очень утомительная работа. И было бы неплохо иметь в своем распоряжении программное средство, которое было бы способно воспринимать входное изображение документа, которое вообще говоря является картинкой, и преобразовывать его в текст, отбрасывая при этом все лишнии детали изображения
( такие как линии разметки, обрамления и т.п. ).
Этот вопрос волнует многие фирмы по разработке программного обеспечения и сейчас в мире разработано несколько программ для распознавания машинописного текста. Но это только начальный этап на пути решения данной задачи. Данные программные продукты распознают текст с довольно большой вероятностью ошибки при условии некачественного изображения. О том, чтобы распознавать рукописный текст пока даже не приходится и говорить.
Целью разработки данной программной системы является детальное изучение данного вопроса и создание алгоритма, позволяющего преобразовывать графическое изображение в текст. Единственное отличие данной системы от разработанных ранее это то, что распознавать предстоит иероглифы. Эти знаки имеют существенное отличие от привычной нам кириллицы и латинских символов. Уже одно то, что они состоят из множества различных узоров отбрасывает идею строить распознавание на апроксимировании изображения символа с помощью какой либо функции. Хотя здесь можно попробовать использовать фрактальные преобразования, с помощью которых можно описать любое сколь угодно сложное изображение. Но теория, описывающая применение данных преобразований является коммерческой тайной и является недоступной.
Система обеспечивает ввод сканированного изображения текста из графического файла, записанного в одном из форматов: PCX, BMP, WMF, JPEG, GIF. Размер изображения не должен превышать 3000 х 3000 точек. Режим сканирования должен быть выбран так, чтобы размеры отдельного символа (иероглифа) не превышал 30 пикселов и был не менее 5 пикселов. Допускается наклон строк к горизонтали не более чем на 6°. Расстояние между отдельными строками текста не должно быть меньше 1/5 максимальной высоты иероглифа. Система обеспечивает разделение введенного текста на отдельные строки и на отдельные символы. Результатом работы является визуальное разделение текста на строки и символы, а также текстовый файл, содержащий координаты каждого выделенного символа текста в порядке выделения. При разделении символов система использует правило начертания иероглифов, в соответствии с которым отдельный иероглиф вписывается в более или менее правильный квадрат. Следовательно, не гарантируется, что тексты, начертание символов которых не соответствуют данному правилу, будут разбиваться на символы корректно.
Также в качестве дополнения к обработке изображения система способна выделять отдельно вертикальные и горизонтальные линии. Данная возможность может быть использована для анализа изображения по отдельным линиям.
Сделаны пробные эксперименты по афинным преобразованиям. Эти преобразования в будущем обещают дать много полезного в области обработки изображений.
Для работы системы требуется:
1. IBM - совместимый персональный компьютер с процессором не ниже Intel80486sx33, объемом ОЗУ не менее 4 Мб.
2. Сканер любого типа.
1. Операционная оболочка Windows 95, либо Windows NT или Windows версии 3.1 или 3.11 в комплекте с MS-DOS версии не ниже 3.30.
2. Программное обеспечение для сканера, обеспечивающее возможность сохранения сканированного изображения в одном из форматов PCX, JPG, BMP, WMF.
Описание структуры системы и принципа ее работы
В качестве среды для разработки данной системы выбрана операционная оболочка Microsoft Windows. Это обусловлено тем, что Windows поддерживает работу с графическими изображениями на уровне разработчика приложений. Тем самым из работы исключается вопрос о кодировании своих средств по работе с графикой. Естественно скорость работы системы со стандартными графическими средствами много ниже, чем непосредственная запись в видеопамять, но на данном этапе работы вопрос упирается не в скорость.
Для разработки системы была выбрана среда программирования Borland Delphi производства фирмы Borland International® USA, California. Delphi представляет собой среду, поддерживающую визуальное проектирование приложений для Windows. При этом интерфейс пользователя создается путем комбинирования и редактирования стандартных компонентов (форм (окон), меню, полей ввода, статических текстов, списков различной формы, экранных кнопок и т.п.), имеющихся в стандартной библиотеке визуального конструктора. Среда визуального программирования выбрана потому, что она обеспечивает возможность максимально простого, быстрого и качественного создания стандартных фрагментов программы[1].
По сравнению с другими системами визуального программирования (Visual FoxPro, DBase for Windows, Microsoft Visual Basic, Microsoft Visual C++, Gupta SQLWindows и пр.) Delphi имеет следующие преимущества.
· Все вышеперечисленные системы являются интерпретаторами, то есть для выполнения созданных в них программ требуется загрузка модуля интерпретатора языка, либо псевдокомпиляторами, которые формируют программу в виде EXE-модуля, содержащего псевдокод программы (определенным образом закодированный текст) и модуль интерпретации, выполняющего этот псевдокод. В Delphi™ результатом генерации проекта является программа на языке Object Pascal™, который компилируется компилятором Borland Pascal 8.0™ в EXE - модуль, либо DLL - библиотеку. EXE - модуль содержит процессорный код и может быть запущен непосредственно из Windows™. DLL-библиотеку может использовать любое Windows™ - приложение, в том числе написанное на другом языке. Действительная компиляция обеспечивает значительно большее быстродействие и дает выигрыш по памяти и дисковому пространству (если учитывать ресурсы, потребляемые модулем интерпретации в интерпретирующих системах).
· В отличие от ряда систем (Visual FoxPro™, DBase for Windows™, Microsoft® Visual Basic™) Delphi™ обеспечивает возможность визуального конструирования не только интерфейса, но и ряда стандартных модулей программы, не отображаемых на экране. Кроме того, Delphi™ имеет стандартные средства создания собственных экранных и невидимых компонентов, что позволяет неограниченно расширять набор объектов, использование которых возможно в любом проекте и ничем не отличается от использования стандартных объектов библиотеки Delphi™.
· В Delphi™ доступны тексты программы, порожденной визуальным конструктором, причем изменения в них не влияют на возможность дальнейшей обработки их конструктором. Это дает возможность производить требуемую коррекцию работы объектов программы, если она не обеспечивается визуальным конструктором.
Таким образом, Delphi удовлетворяет требованиям удобства, быстроты и качества разработки. Кроме того, использование языка Pascal позволяет обеспечить приемлемую скорость выполнения преобразований, требующих большого объема вычислений за счет действительной компиляции и возможности непосредственной работы с памятью компьютера.
Первоначально планировалось создать алгоритм кодирования символа, который бы позволял осущесвлять его однозначную идентификацию ( рис. 1 ).
рис. 1Так в нем планировалось белые пикселы кодировать 0, а черные - 1 и рассматривать их ни как отдельные а группой, т.е. группа белых пикселов - это 0, далее группа черных - 1 и т.д. В результате, символ, заключенный в прямоугольную ( рис. 1 ) рамку дает следующий код:
010 01010
01010 0101010
010 01010
01010 0101010
010 01010
01010 0101
010 010
01010
0101
01
010
Но на практике оказалось, что данный способ не подходит для решаемой задачи, т.к. он очень сильно привязан к начертанию символа. При изменении размера символа или при немного отличном начертании его код изменяется очень существенно. При увеличении размера символа появляются дополнительные строки, а значит и дополнительные символы кода. Следовательно однозначное декодирование символа при данных обстоятельствах не представляется возможным.
Но данный опыт не прошел даром. Были сделаны соответствующие выводы, а именно:
* Нельзя привязываться к начертанию символа, т.е. к отдельным пикселам.
* Нужно анализировать изображение не по пикселам, а по отдельным элементам, таким как линии, кружочки, крючечки.
* Альтернативой предыдущему выводу является определение плотности изображения в отдельных его частях.
В разрабатываемой системе используется именно третий метод, т.е. определение плотности изображения в отдельных его частях.
Его суть заключается в следующем: