Картинка из точек
В результате сканирования документа получается его электронный
образ, представляющий собой как бы цифровой рисунок, состоящий из точек — растра.
Из точек состоит всё — и фон, и само изображение. Говоря о точках, мы будем подразумевать
не круглые элементы изображения, как это интуитивно принято считать, а квадратики,
на которые изображение разбивается в сканере воображаемой сеткой из горизонтальных
и вертикальных линий (рис. 1).
Полученный электронный образ документа хранится в сформированном файле, где все
точки рисунка описываются именно как точки на плоскости, каждая со своими координатами,
цветом и другими атрибутами. В таком файле и текст, и цифры, и другие элементы изображения
записаны одинаково — как графические изображения, состоящие из точек.
Графический растровый файл, хранящийся в Windows, можно узнать по расширению — трём
последним буквам, стоящим после точки в имени файла: *.tif, *.png, *.bmp, *.jpg
и т. д.
И не только точками
Отдельно нужно сказать о файлах с расширением *.pdf, разработанных фирмой Adobe.
Их также можно считать графическими, но при этом они не относятся к растровым, точечным.
Принципы хранения изображения в них другие. Этот формат файлов заслуживает упоминания
хотя бы потому, что он весьма широко используется, например, для распространения
информации через интернет, для хранения образов документов в системах документооборота
и т. д. Удобен PDF-формат и для хранения цветных изображений: он довольно компактен,
так что файлы имеют относительно малый размер.
Большое преимущество PDF-файлов — возможность при необходимости сильно увеличить
изображение без потери качества. При увеличении же изображения, хранящегося в растровом
файле, начинают проявляться элементы, из которых оно состоит. Различие видно на
рис. 2. Оно сыграет роль, если понадобится рассмотреть, например, подписи или регистрационный
номер, выполненный микрошрифтом на печати, проставленной на документе, электронный
образ которого хранится в системе документооборота.
Просматривать PDF-файлы можно при помощи бесплатно распространяемой программы Adobe
Reader, специально разработанной для этого той же фирмой. На подавляющем большинстве
сайтов, предлагающих скачать свои PDF-файлы (это могут быть описания продуктов,
инструкции, статьи и даже газеты), есть ссылка для скачивания последней версии программы
Adobe Reader, предназначенной для чтения таких файлов.
Ограничимся этой краткой информацией о PDF-файлах и Adobe Reader, а пока будем рассматривать
только растровые, точечные файлы.
Графика и арифметика
Сохранённый в графическом файле электронный образ документа можно увидеть на мониторе
компьютера при помощи средств просмотра, встроенных в систему Windows (правда, им
доступны файлы не всех форматов). Кроме того, можно воспользоваться какой-либо отдельно
поставляемой программой — графическим редактором, например Adobe Photoshop. Такие
редакторы позволяют не только просматривать изображение из графических файлов, но
и изменять его.
Над числами в сформированном образе документа, хранящимися, как и весь документ,
в виде графики, нельзя выполнять арифметические операции, например складывать или
умножать. Невозможно обращаться и со словами документа, которые находятся в графическом
файле, так же легко и просто, как в редакторе Word: вставлять или удалять слова,
буквы, предложения или целые абзацы.
Однако может возникнуть вопрос: а как же мы тогда работаем в редакторах Word или
Excel — ведь если там посмотреть на увеличенное изображение чисел и букв на экране,
задав масштаб побольше, то можно легко увидеть, что все цифры и буквы тоже составлены
из точек (рис. 3 и 4). Получается, что Word и Excel всё же как-то могут работать
с графическими файлами?
Действительно, упомянутые программы используют в своей работе графику, но этот процесс
— второстепенный, обслуживающий. Главное его назначение — показывать пользователю
в удобном виде, что именно он делает при работе с файлом и каковы результаты работы.
А главный, основной процесс вычислений или редактирования текста, т. е. работа с
данными, содержащимися в файле, практически скрыт от глаз пользователя. Он не видит,
как на самом деле всё выполняется, что происходит внутри. Да и мало кого, кроме
специалистов, интересуют такие подробности. Надо ещё добавить, что и данные в обрабатываемых
файлах хранятся по-другому, не так, как в графических, на что указывают и расширения
в именах файлов: *.xls для Excel и *.doc для Word.
Что касается других программ или систем (в том числе таких как “1С”, “Инфобухгалтер”,
“БЭСТ”, “Галактика” и др.), основным процессом в которых является обработка числовой
или текстовой информации, то эта информация хранится в них в числовом или текстовом
форматах, но никак не в графическом формате, описывающем лишь рисунок, графический
образ числа или слова.
Текст из графики
Логика подсказывает, что неплохо было бы иметь программу, которая “переводила” бы
графический формат отсканированного документа, например накладной, в текстовый или
числовой форматы той программы или системы, в которой мы работаем. Скажем, для того,
чтобы суммировать данные из введённых накладных на поступившие товары. Или при помощи
функции поиска находить строку с названием нужного товара в объёмной накладной.
Такие программы (иногда их называют системами) для преобразования графических образов
цифр и букв в нужный формат хранения существуют. Они, последовательно обрабатывая
электронный графический образ документа, состоящий из точек, распознают, определяют,
что это за конкретная очередная буква или цифра документа, что за слово. Процесс
называется оптическим распознаванием символов, или по-английски OCR — Optical Character
Recognition, а сами программы — OCR-программами. В народе их часто именуют “распознавалками”,
в ходу также название “программа распознавания текста”.
Вообще, имеются три основных направления: распознавание печатного, рукопечатного
и рукописного текста.
Последняя задача — распознавание рукописного текста — самая сложная из этих трёх.
Проблема заключается в том, что количество возможных вариантов начертания любой
буквы или цифры практически бесконечно. Поэтому распознавать рукописный текст не
просто сложно, а очень сложно.
В качестве примера можно сказать, что наверняка каждому хоть раз в жизни попадался
образец почерка, который совершенно невозможно разобрать обычному человеку, не то
что программе. Почерк врачей — это уже классика. Кто не пытался подолгу угадывать,
что написано в рецепте или в истории болезни?
Задача полегче — распознавание рукопечатного текста, т. е. текста, написанного от
руки печатными символами, иногда в специальном начертании. Способы решения этой
задачи достаточно отработаны, но пока оставим их за пределами рассмотрения.
Рассмотрим первую из перечисленных задач — задачу распознавания обычного печатного
текста, полученного типографским способом или с применением средств оргтехники.
В основе работы программ распознавания печатного текста лежит достаточно серьёзный
математический аппарат. И это оправдано сложностью задачи, особенно самого процесса
распознавания. Мы же попытаемся применительно к нашей аудитории, к нашим читателям
показать работу OCR-программы упрощённо, “на пальцах”, осознавая, что при этом могут
проявиться некоторые неточности и неполнота изложения. Да простят нас специалисты
— и вперёд!
Проверим осязание
Чтобы объёмнее уяснить работу программы распознавания, надо представить себе, что
в квадратную доску через равные небольшие промежутки друг от друга вколочены ряды
чуть торчащих гвоздей. Головки одних гвоздей срезаны и остры, других — не тронуты
и поэтому плоски. Плоские головки, как точки, образуют буквы и слова, острые головки
— фон. Все буквы для простоты узнавания — русские. Но чтобы нельзя было по паре-тройке
букв угадать слово и дальше не щупать, слова лишены смысла и представляют собой
просто наборы букв.
Для приближения задачи к реальности доска должна быть в абсолютно тёмной комнате.
Теперь определим на ощупь, какие слова образованы точками-гвоздями. Очевидно, что
при поиске сначала надо нащупывать каждую строку, а потом определять буквы в строке
одну за другой. При этом важно нащупать интервалы между буквами и между словами.
После проведённых экспериментов обычно приходит глубокое осознание функционирования
программы OCR, кроме такого важного момента, что в реальности она должна ещё отделить
текст на странице от графического изображения, которое может находиться рядом с
текстом.
OCR в действии
Итак, на первом этапе программа должна разбить страницу на блоки и найти среди них
те, которые содержат текст, учитывая при этом особенности его расположения: с выравниванием
вправо, влево или по ширине страницы, а также возможное форматирование в несколько
колонок.
Теперь распознанные блоки с текстом разбиваются на строки.
Несмотря на кажущуюся простоту, это не такая очевидная задача, так как на практике
могут быть небольшие перекосы изображения всей страницы или её фрагментов. Даже
небольшой наклон строки может привести к тому, что левый край одной строки становится
ниже правого края следующей. Это особенно заметно при маленьком интервале между
строками и обилии надстрочных элементов. В результате возникают трудности с определением
строки, к которой относится тот или иной фрагмент изображения. Например, для символов
с надстрочными элементами вроде букв “j”, “i”, “ё”, “в”, “х” при небольшом наклоне
сложно определить, к какой строке относится верхняя, надстрочная часть символа.
Ведь она может быть воспринята как точка из строки сверху (рис. 5).
Далее программа пытается разбить строку на области изображения, разделённые пробелами,
предполагая, что каждая такая область и есть символ, т. е. буква или цифра.
Алгоритм распознавания делает предположение, какому из символов, хранящихся в памяти
программы, соответствует рассматриваемая область. Программа OCR хранит данные о
символах в виде эталонов, с которыми сравнивается выделенный объект. Наиболее подходящий
эталон и будет соответствовать искомому символу.
Однако такой подход не позволяет добиться по-настоящему высокого качества распознавания,
как бы он ни был усовершенствован. Главный его недостаток заключается в том, что
в программе должно храниться очень большое количество эталонов, учитывающих все
варианты написания символа. Тем не менее вариантов изображения той или иной буквы
или цифры в реальности всё равно оказывается больше. Поэтому как только программа
сталкивается с нестандартным написанием буквы или цифры, эталона которого в ней
нет, она либо не может распознать символ вообще, либо распознаёт его неправильно.
Современные, усовершенствованные алгоритмы распознавания строятся на разных принципах.
Так, например, в современных алгоритмах использующих принципы целостности,
целенаправленности и адаптивности, процесс распознавания основан на выдвижении и
проверке гипотез. На основе общих признаков программа выдвигает некоторое количество
гипотез о том, что может быть на изображении. Затем эти гипотезы целенаправленно
проверяются. Если какой-то признак в изображении отсутствует, проверка этой гипотезы
сразу прекращается, ограничивая перебор вариантов на ранних стадиях. Одновременно
с выдвижением гипотез об отдельных символах программа выдвигает гипотезы и о целых
словах. При этом результаты распознавания отдельных знаков используются, во-первых,
для выдвижения гипотез, а во-вторых, как один из источников для оценки слова. Для
окончательной проверки правильности гипотез о целых словах используется словарь.
В большинстве OCR программ заложены алгоритмы самообучения, реализующие принцип адаптивности.
Они позволяют запомнить не встречавшиеся ранее ситуации и использовать их в дальнейшей
работе.
Не по-нашему писано
В программу OCR закладываются словари разных языков, модели словоизменения. Алгоритмы
распознавания должны учитывать не только словарный состав языка, но и графическое
исполнение букв. Например, в польском тексте, кроме того, что в нём используется
латиница, существуют не только надстрочные, но и подстрочные элементы букв, играющие
смыслоразличительную роль. Могут также возникать затруднения в различении символов
“t”, “l” и “l” (рис. 6, вверху).
В более тяжёлых условиях программе распознавания приходится работать, например,
с венгерским текстом: хотя в нём нет подстрочных элементов, но ситуацию компенсируют
надстрочные, среди которых есть как чёрточки, так и точки, причём заменять одни
другими нельзя, так как смысл может поменяться (рис. 6, внизу). В условиях “грязного”
документа, например плохой ксерокопии, отличить точки от чёрточек нелегко.
Современные OCR-программы, могут обрабатывать текст, содержащий
одновременно слова разных языков. Нужно только указать — каких. Подобные тексты
нередко встречаются в деловой практике.
И что получаем?
Итак, в результате работы алгоритмов программы OCR страница преобразуется из набора
графических образов в символы текста, причём в заданном формате, например в формате
Word или Excel. При этом сохраняется внешний вид, т. е. форматирование исходного
документа, сохраняются таблицы, графические элементы и т. д. Помимо XLS и DOC программой
обычно поддерживаются все известные текстовые и графические форматы и форматы электронных
таблиц, а также форматы Internet Explorer и упоминавшийся ранее Adobe PDF.
В современных программах OCR используются довольно изощрённые алгоритмы, приводящие
к весьма высоким результатам. При чистых, контрастных изображениях, составленных
из стандартных, широко распространённых шрифтов, обычно достигается точность распознавания
99,5–99,8 %. Несмотря на то что такая точность распознавания кажется очень высокой,
количество ошибок всё же нельзя считать пренебрежимо малым. Если принять, что на
стандартной странице находится 1800 символов, то при коэффициенте успешного распознавания
99,5 % в среднем на каждой странице может появиться до девяти неверно распознанных
символов. Конечно, результат будет сильно варьироваться в зависимости от многих
факторов.
Документ документу — рознь
Конечно, лучше всего алгоритмы распознавания будут работать с образами, состоящими
только из чёрных и белых точек, — тогда можно сосредоточиться исключительно на процессе
распознавания. Однако жизнь вносит свои коррективы: документы могут отличаться один
от другого по качеству, как небо и земля, могут быть разноцветными. Желаемая контрастность
и равномерность по всему полю документа иногда так и остаются мечтой.
Если текст отпечатан на устройстве с красящей лентой, например на матричном принтере,
то трудно ожидать высокого качества полученного электронного образа, если лента
старая или сильно выбита. Но это ещё ничего по сравнению с печатью на обычной, неэлектрической
пишущей машинке, когда контрастность меняется от символа к символу в зависимости
от силы удара разными пальцами.
Не добавляет качества и непрофессиональная печать, когда по клавишам не бьют, а
нажимают на них (это называется “давить клопов”). Буквы на документе получаются
смазанные, и OCR трудно их распознавать. Криво напаянный шрифт даёт неравномерность
в пределах символа. Но самый плохой вариант — документ, напечатанный через копирку,
особенно бледного цвета.
Ещё встречаются, особенно на периферии, документы, напечатанные на древних огромных
АЦПУ — алфавитно-цифровых печатающих устройствах при ЕС ЭВМ с их прыгающими в строке
буквами и прыгающим вместе с буквами качеством.
Однако эти документы, созданные при помощи старых технологий, постепенно уходят
в историю, хотя матричные принтеры несколько задерживаются там, где за один проход
надо напечатать сразу несколько копий.
Но даже при современных технологиях программы распознавания не всегда работают без
затруднений.
Сразу надо сказать о плохих ксерокопиях, когда слабый текст лежит на фоне произвольно
рассыпанных по листу мелких точек и полос.
Не лучше и текст, специально напечатанный на фоне линий или точек для исключения
подделок (рис. 7, вверху, внизу — результат распознавания).
Если читатель видел послания, вышедшие из факс-аппарата, то он сразу оценит трудности
распознавания из-за искажений от неравномерности протяжки ленты. И поймёт преимущества
электронной почты, не использующей никакой механики, да и работающей значительно
быстрее.
Небезразличен вид шрифта, которым выполнен документ. Шрифт с декоративными элементами,
с засечками (серифами) выглядит красивее, но ухудшает распознавание, потому что
буквы трудно отделить друг от друга (рис. 8). Есть шрифты, созданные специально
для электронной обработки, но их эстетический аспект оставляет желать лучшего (рис.
9, две верхние строки). Поэтому при создании документов, которые будут сканироваться,
лучше выбирать шрифт с одинаковой толщиной всех элементов, например Arial (рис.
9, две нижние строки). Кстати, этот шрифт был специально создан для документов,
передаваемых по факсу, так как тонкие элементы букв у других шрифтов исчезали после
передачи, что ухудшало разборчивость (рис. 10, вверху “красивый” шрифт до и после
передачи по факсу, внизу — Arial).
Значительные трудности возникают при оцифровке документов, созданных с использованием
сразу нескольких способов нанесения надписей. Например, это может быть накладная,
бланк которой сделан в типографии, графы заполнены на матричном принтере и есть
ещё надписи простым карандашом. И в довершение что-то выделено цветным маркером.
Такую смесь с трудом “переварит” любая OCR-программа.
Надписи, сделанные на цветном фоне с плавно изменяющимися цветами и интенсивностью,
предохраняют документ от подделки. Человек легко читает такие надписи, он как бы
не видит фона. Точно так же мы можем сосредоточиться на голосе собеседника и не
слышать других разговоров в комнате. Но сканер видит всё и оцифровывает всё, магнитофон
слышит всё и записывает всё. Вот если бы все наши приборы могли так же, как человек,
воспринимать только нужное... Увы, пока программам распознавания трудно работать
с документами, защищёнными от подделок таким образом. Ещё труднее, если на бумаге
есть элементы или текст, светящийся в невидимых лучах, а лампа сканера вместе с
обычным светом, может оказаться, как раз их и излучает. В этом случае трудно сказать,
понравится нам выходной файл или нет.
Не всё так плохо
Надо сказать, что разработчики программ распознавания не сидят сложа руки. Мало
того, ими достигнуты впечатляющие успехи, значительно расширен круг успешно обрабатываемых
типов документов.
Для улучшения условий распознавания выполняется предварительная обработка отсканированного
образа.
Обычно для распознавания используется только чёрно-белое изображение, поэтому предварительное
преобразование серого или цветного изображения исходного документа в чёрно-белое
контрастное является необходимым этапом процесса обработки. На этом этапе для повышения
качества распознавания подбор контрастности производится не на всём листе сразу,
а последовательно, по участкам, с учётом особенностей каждого элементарного участка.
Общее изображение при этом значительно выигрывает из-за того, что его не “стригут
под одну гребёнку”. Применение при этом технологии удаления фоновой текстуры существенно
повышает качество распознавания.
Если назвать основные виды предварительной обработки, используемые в OCR-программах,
то получится такой список:
· устранение перекосов изображения, полученного со сканера;
· удаление пустых страниц многостраничного документа;
· разделение двойных страниц, если отсканирован сразу весь разворот книги;
· очистка изображения удалением случайного “мусора” — излишних точек на поле документа,
особенно вблизи границ символов;
· цифровое увеличение изображения;
· автоматический поворот страниц, вошедших в сканер не той стороной;
· обрезка “черноты” по краям документа, размер которого оказался меньше поля сканера,
и т. д.
Обработка изображений OCR-программами на компьютере называется программной, так
как здесь основную работу выполняет программа.
В промышленных сканерах высокого класса производится так называемая аппаратная обработка
с корректировкой изображения “на лету”, в процессе сканирования. Чтобы обрабатывать
изображение аппаратно, в сканер встраиваются специальные электронные платы, значительно
ускоряющие его работу. При этом основную работу выполняют электронные компоненты
— транзисторы, микросхемы, иногда процессоры. Аппаратная обработка обычно быстрее
программной. Качество обработки остаётся высоким, так как эти платы обычно производятся
теми же фирмами, которые выпускают программы распознавания и программы улучшения
изображения.
Следует заметить, что с развитием техники довольно быстро идёт процесс стирания
грани между аппаратной и программной обработкой: иногда бывает трудно отделить их
друг от друга.
Технология — внутри, результат — снаружи
Удачный выбор алгоритмов распознавания и их взаимодействия является залогом эффективной
работы программы и, как производное, определяет финансовое благополучие фирмы-разработчика.
Поэтому каждый разработчик программы OCR применяет свою, авторскую “смесь” известных
алгоритмов распознавания в сочетании с собственноручно разработанными, используя
свою, проверенную опытом специфическую “тонкую подстройку”. На этом фоне любовь
к подробным рассказам обо всех тонкостях наблюдается весьма редко или не наблюдается
совсем.
А нам и не нужно... В принципе для пользователя важны не детали, видимые только
под микроскопом, а эффективная работа программы и высокое качество распознавания.