Формат PDF уже давно прижился как средство сохранения документов, которые затем не предполагается редактировать. Все PDF файлы можно условно разделить на два класса. Первый – это документы, которые были свёрстаны в цифровом виде, и затем были сконвертированы в PDF. Инструкция к какому-нибудь устройству будет, скорее всего, именно таким файлом. Внутри он выглядит как текст и графика плюс команды форматирования, описывающие, как надо располагать элементы на странице.
Второй класс – это документы, полученные в результате сканирования бумажных изображений. Их можно пропустить через ABBYY FineReader, и они превратятся в первый тип, а можно просто сохранить в PDF как картинки. И этим часто имеет смысл пользоваться, когда хочется сохранить исходный вид документа. Несмотря на то, что ABBYY FineReader довольно хорошо распознаёт документы, возникают ошибки распознавания, какие-то важные элементы на странице не находятся, в общем, то, что получается, по виду несколько отличается от исходного документа.
Поэтому часто имеет смысл сохранять в PDF изображение исходной картинки, а под него подкладывать распознанный текст для того, чтобы можно было найти документ по ключевым словам или воспользоваться copy-paste. Смущает только один момент – такие PDF-файлы имеют немаленький размер, от полумегабайта на страницу и больше. Соответственно, если отсканировать среднего размера учебник по матанализу, получится файл мегабайт на 200.
Такой размер объясняется тем, что внутри в PDF отсканированные, растровые изображения сжаты обычными картиночными кодеками, JPEG, JPEG2000, LZW или ZIP. Соответственно, меньше, чем занимают обычные JPEG-файлы для таких страничек, не получается. Чтобы уменьшить размер, обычно прибегают к разного рода ухищрениям – уменьшают разрешение, сильно занижают сжатие картинки, в результате чего сильно страдает качество текста в таких PDF.
Или тогда приходится отказываться от PDF и сохранять всё в DjVu. Получается довольно маленький размер, но действительность такова, что не все пользователи полученного файла с лёгкостью смогут его прочитать – всё-таки Adobe Acrobat стоит на гораздо большем числе компьютеров, чем DjVu-просмотрщик.
И тут на помощь приходит технология PDF MRC (от “Mixed Raster Content”) – ответ Adobe формату DjVu. Это тот же PDF, но заимствующий многие элементы из DjVu, и может читаться всеми популярными PDF-читалками. При использовании MRC размер страницы уменьшается раза в 4 при сохранении качества отсканированного изображения. Это происходит благодаря решению разделить изображение на слои и каждый слой сжимать наиболее подходящим кодеком. Текст сжимается кодеком JBIG2, всё остальное сжимается с помощью JPEG/JPEG2000/ZIP с разным качеством.
Как устроен внутри PDF MRC? Рассмотрим простой пример, а затем постепенно будем его усложнять.
Пускай у нас есть скан белой страницы с чёрным текстом, например, страницы из книги (все картинки кликабельны).
Скан, JPEG, 1,2 Мб
Полезная информация – только буквы, всё остальное можно игнорировать. Найдём весь текст на странице, например, логично для этого запустить FineReader и распознать страницу. Затем выделяем весь найденный текст в отдельный слой, и сжимаем его с помощью кодека JBIG2. Получаем 50 килобайт на страницу против 400 у JPEG и 200 у чёрно-белого факсового кодека CCITT4.
JBIG2 специально создан для сжатия текста. При работе он объединяет внешне похожие изображения букв в кластеры. Примерами таких кластеров, например, могут служить все буквы ‘a’, напечатанные одним шрифтом одинакового размера. Немного отличающиеся буквы ‘a’, например, с искажениями от сканирования, или напечатанные другим шрифтом, попадут в другие кластеры. В результате получается словарь, в котором объединены часто встречающиеся одинаковые буквы. Затем для каждой буквы запоминается её место. Получается весьма компактно.
JBIG2, 50 Кб. PDF с дополнительной информацией имеет размер 80 Кб
Теперь усложним задачу. Пускай у нас есть неравномерный фон, который не хочется терять.
Tiff, 500 Кб
Для этого нам понадобится уже два слоя. Первым из них по-прежнему будет текст, сжатый JBIG2. А во второй слой попадёт всё, что остаётся от исходной картинки после вырезания букв и закрашивания дырок от них. Второй слой мы можем достаточно сильно сжать с помощью JPEG, так как на нём обычно нет особо ценной информации.
Итоговый PDF имеет размер 35 Кб против 190, которые мы бы получили, просто сжав всю картинку в JPEG.
Текст, JBIG2, 18 Кб
Фон, 11 Кб, JPEG
Итоговый PDF MRC, 35 Кб
Следующее усложнение. До сих пор мы выводили только чёрно-белый текст. Пусть теперь у нас будет встречаться цветной текст.
Tiff, 700 Кб
По-прежнему жмём текст чёрно-белым кодеком JBIG2, но под цветные буквы подкладываем так называемую цветовую маску – ещё один слой, который видно в «прорезях», сделанных буквами. Этот слой содержит мало цветов, и прекрасно упаковывается, например, с помощью ZIP.
Текст, JBIG2, 11 Кб
Цветовая маска, ZIP, 3 Кб
Текст + цветовая маска выглядят так:
Фон, JPEG, 40 Кб
Со сжатием фона важно не переусердствовать – на него может попасть текст, который не был распознан как текст. И если мы сожмём его слишком сильно, такой текст будет трудно читать.
Итоговый PDF MRC, 60 Кб
Итак, набралось уже 3 слоя: текст, цветовая маска, которая раскрашивает текст, и фон. Осталось разделаться с элементами, которые не являются ни текстом, ни фоном. Например, это картинки или фотографии. С ними ничего особенного сделать нельзя, и мы просто добавим их в фон, сжимая JPEG или JPEG 2000 с высоким качеством.
Tiff, 600 Кб
Текст, JBIG2, 25 Кб
Цветовая маска, ZIP, 5 Кб
Фон, JPEG, 40 Кб
PDF MRC готов. Он содержит несколько слоёв, каждый из которых содержит разные кусочки картинки и сжат наиболее подходящим кодеком.
Итоговый PDF MRC, 72 Кб
Конечно же, есть изображения, которые не выигрывают в размере от использования MRC. Например, пытаться сжать так фотографию пейзажа нет никакого смысла, меньше, чем JPEG не получится. Или текст, напечатанный на фоне, содержащем много мелких деталей.
Из такой картинки PDF MRC не получится
Однако для многих документов, которые мы встречаем в повседневной жизни, MRC даёт отличные результаты.
И напоследок – несколько примеров PDF MRC, которые можно получить с помощью ABBYY FineReader, ABBYY FineReader Engine или ABBYY Recognition Server:
Итого, мы получаем сжатие в 2-6 раз при том же качестве, и это не предел. PDF MRC – ещё очень молодая технология, и она продолжает активно развиваться. Будут улучшения и в сторону улучшения качества, и в сторону уменьшения размера.
Все примеры PDF, приведённые в этой статье, получены с помощью ABBYY FineReader Engine 10, настройки по умолчанию.
Василий Панфёров,
Департамент продуктов для разработчиков
Второй класс – это документы, полученные в результате сканирования бумажных изображений. Их можно пропустить через ABBYY FineReader, и они превратятся в первый тип, а можно просто сохранить в PDF как картинки. И этим часто имеет смысл пользоваться, когда хочется сохранить исходный вид документа. Несмотря на то, что ABBYY FineReader довольно хорошо распознаёт документы, возникают ошибки распознавания, какие-то важные элементы на странице не находятся, в общем, то, что получается, по виду несколько отличается от исходного документа.
Поэтому часто имеет смысл сохранять в PDF изображение исходной картинки, а под него подкладывать распознанный текст для того, чтобы можно было найти документ по ключевым словам или воспользоваться copy-paste. Смущает только один момент – такие PDF-файлы имеют немаленький размер, от полумегабайта на страницу и больше. Соответственно, если отсканировать среднего размера учебник по матанализу, получится файл мегабайт на 200.
Такой размер объясняется тем, что внутри в PDF отсканированные, растровые изображения сжаты обычными картиночными кодеками, JPEG, JPEG2000, LZW или ZIP. Соответственно, меньше, чем занимают обычные JPEG-файлы для таких страничек, не получается. Чтобы уменьшить размер, обычно прибегают к разного рода ухищрениям – уменьшают разрешение, сильно занижают сжатие картинки, в результате чего сильно страдает качество текста в таких PDF.
Или тогда приходится отказываться от PDF и сохранять всё в DjVu. Получается довольно маленький размер, но действительность такова, что не все пользователи полученного файла с лёгкостью смогут его прочитать – всё-таки Adobe Acrobat стоит на гораздо большем числе компьютеров, чем DjVu-просмотрщик.
И тут на помощь приходит технология PDF MRC (от “Mixed Raster Content”) – ответ Adobe формату DjVu. Это тот же PDF, но заимствующий многие элементы из DjVu, и может читаться всеми популярными PDF-читалками. При использовании MRC размер страницы уменьшается раза в 4 при сохранении качества отсканированного изображения. Это происходит благодаря решению разделить изображение на слои и каждый слой сжимать наиболее подходящим кодеком. Текст сжимается кодеком JBIG2, всё остальное сжимается с помощью JPEG/JPEG2000/ZIP с разным качеством.
Как устроен внутри PDF MRC? Рассмотрим простой пример, а затем постепенно будем его усложнять.
Пускай у нас есть скан белой страницы с чёрным текстом, например, страницы из книги (все картинки кликабельны).
Скан, JPEG, 1,2 Мб
Полезная информация – только буквы, всё остальное можно игнорировать. Найдём весь текст на странице, например, логично для этого запустить FineReader и распознать страницу. Затем выделяем весь найденный текст в отдельный слой, и сжимаем его с помощью кодека JBIG2. Получаем 50 килобайт на страницу против 400 у JPEG и 200 у чёрно-белого факсового кодека CCITT4.
JBIG2 специально создан для сжатия текста. При работе он объединяет внешне похожие изображения букв в кластеры. Примерами таких кластеров, например, могут служить все буквы ‘a’, напечатанные одним шрифтом одинакового размера. Немного отличающиеся буквы ‘a’, например, с искажениями от сканирования, или напечатанные другим шрифтом, попадут в другие кластеры. В результате получается словарь, в котором объединены часто встречающиеся одинаковые буквы. Затем для каждой буквы запоминается её место. Получается весьма компактно.
JBIG2, 50 Кб. PDF с дополнительной информацией имеет размер 80 Кб
Теперь усложним задачу. Пускай у нас есть неравномерный фон, который не хочется терять.
Tiff, 500 Кб
Для этого нам понадобится уже два слоя. Первым из них по-прежнему будет текст, сжатый JBIG2. А во второй слой попадёт всё, что остаётся от исходной картинки после вырезания букв и закрашивания дырок от них. Второй слой мы можем достаточно сильно сжать с помощью JPEG, так как на нём обычно нет особо ценной информации.
Итоговый PDF имеет размер 35 Кб против 190, которые мы бы получили, просто сжав всю картинку в JPEG.
Текст, JBIG2, 18 Кб
Фон, 11 Кб, JPEG
Итоговый PDF MRC, 35 Кб
Следующее усложнение. До сих пор мы выводили только чёрно-белый текст. Пусть теперь у нас будет встречаться цветной текст.
Tiff, 700 Кб
По-прежнему жмём текст чёрно-белым кодеком JBIG2, но под цветные буквы подкладываем так называемую цветовую маску – ещё один слой, который видно в «прорезях», сделанных буквами. Этот слой содержит мало цветов, и прекрасно упаковывается, например, с помощью ZIP.
Текст, JBIG2, 11 Кб
Цветовая маска, ZIP, 3 Кб
Текст + цветовая маска выглядят так:
Фон, JPEG, 40 Кб
Со сжатием фона важно не переусердствовать – на него может попасть текст, который не был распознан как текст. И если мы сожмём его слишком сильно, такой текст будет трудно читать.
Итоговый PDF MRC, 60 Кб
Итак, набралось уже 3 слоя: текст, цветовая маска, которая раскрашивает текст, и фон. Осталось разделаться с элементами, которые не являются ни текстом, ни фоном. Например, это картинки или фотографии. С ними ничего особенного сделать нельзя, и мы просто добавим их в фон, сжимая JPEG или JPEG 2000 с высоким качеством.
Tiff, 600 Кб
Текст, JBIG2, 25 Кб
Цветовая маска, ZIP, 5 Кб
Фон, JPEG, 40 Кб
PDF MRC готов. Он содержит несколько слоёв, каждый из которых содержит разные кусочки картинки и сжат наиболее подходящим кодеком.
Итоговый PDF MRC, 72 Кб
Конечно же, есть изображения, которые не выигрывают в размере от использования MRC. Например, пытаться сжать так фотографию пейзажа нет никакого смысла, меньше, чем JPEG не получится. Или текст, напечатанный на фоне, содержащем много мелких деталей.
Из такой картинки PDF MRC не получится
Однако для многих документов, которые мы встречаем в повседневной жизни, MRC даёт отличные результаты.
И напоследок – несколько примеров PDF MRC, которые можно получить с помощью ABBYY FineReader, ABBYY FineReader Engine или ABBYY Recognition Server:
PDF, JPEG | PDF, MRC |
524 Кб | 218 Кб |
618 Кб | 175 Кб |
412 Кб | 113 Кб |
Итого, мы получаем сжатие в 2-6 раз при том же качестве, и это не предел. PDF MRC – ещё очень молодая технология, и она продолжает активно развиваться. Будут улучшения и в сторону улучшения качества, и в сторону уменьшения размера.
Все примеры PDF, приведённые в этой статье, получены с помощью ABBYY FineReader Engine 10, настройки по умолчанию.
Василий Панфёров,
Департамент продуктов для разработчиков