Сегодня мы обновили ABBYY FineReader 15 и выпустили его под брендом ABBYY FineReader PDF, потому что он объединяет все инструменты для работы с PDF. По этому поводу публикуем первый пост из серии материалов о фичах программы. В нем мы расскажем об одной интересной возможности, которая не первый месяц есть в программе, но, возможно, не все о ней знали.
Давно ли вы открывали PDF-файлы? Готовы поспорить, что совсем недавно. Скорее всего, на вашем компьютере точно найдется пара сканов, а может, еще и макет презентации, аналитическое исследование или техническая инструкция. Для каких задач обычно используют эти документы? По данным опроса ABBYY, 62% респондентов ищут информацию в PDF, 60% — копируют текст из документа, а 52% — редактируют: вносят в файл правки, исправляют ошибки и опечатки.
Даже сейчас не все знают, что можно редактировать текст в PDF. Да, изменение таких файлов устроено не так, как редактирование обычного текстового документа. ABBYY FineReader PDF с многофункциональным текстовым редактором для работы с PDF и сканами позволяет быстро внести изменения прямо в PDF, без утомительной конвертации файла в другие форматы. При редактировании текст в PDF плавно перетекает со строчки на строчку, как в MS Word. Можно добавить или удалить несколько слов, изменить целые абзацы или даже поменять их местами.
В этом посте мы раскроем технические подробности редактирования многострочных фрагментов текста в FineReader: как мы изменили движок программы, как редактирование устроено изнутри и как оно выглядит для пользователя. Поехали!
Форматом PDF пользуются по всему миру: его содержимое одинаково отображается на любых компьютерах, смартфонах и планшетах с разными операционными системами. Это удобно и помогает избежать неловких ситуаций. Например, когда вы написали текст в MS Word, отправили коллегам, а они открывают его LibreOffice'ом или Wordpad'ом,
Поговорим сначала о PDF, в которых текст есть. Чтобы редактировать PDF, надо понимать, как в нем записан текст. Открывали когда-нибудь PDF в блокноте? Если да, то вы видели такое:
Чтобы все это отображалось понятно для пользователя, нужно проделать большую работу.
Задача: понять PDF
Содержимое каждой страницы в PDF-файле хранится в виде потоков команд для отрисовки документа – это могут быть текст, изображения или векторная графика. Структуру файла определяют PDF-объекты, например, страница, картинка, комментарий (а абзацы, строчки текста и буквы – это всего лишь части объекта). Символ в PDF представляется глифом. То, как они записаны, определяется шрифтом. Каждый символ хранится отдельно: у него есть шрифт, код символа в шрифте и координаты его расположения на странице. То, где глифы расположены, определяется как раз потоком команд. Кроме того, буквы объединены в потоки текста (text run), но они не смысловые.
В PDF нет ни строк, ни абзацев, которые есть в документах текстовых форматов. Даже порядок текста не всегда определен. То есть вы видите текст, но на самом деле текста не существует. Это хаос из трудно понятных инструкций (как на изображении выше), которые нужно правильно отобразить в конкретных местах документа, с соответствующим форматированием.
«А как же текст?» – спросите вы.
Текст в PDF все же существует, и его даже получится редактировать. Для этого мы учим наши технологии понимать структуру текста, например, определять и выделять строки. Расскажем об этом подробнее.
Библиотеки PDF и как мы их поменяли
Чтобы сделать возможным редактирование целых абзацев, мы сильно поменяли нашу внутреннюю подсистему (библиотеку), которую мы называем PdfTools. Она занимается тем, что открывает PDF-файлы, парсит потоки команд (т.е. понимает, где расположен текст, где картинки, и воссоздает структуру документа) и помогает пользователям оперировать этими данными: прочитать, изменить, сохранить в PDF.
Подсистема PdfTools содержит все необходимые инструменты, чтобы прочитать содержимое и обернуть его в объекты (страница, картинка, комментарий), с которыми удобно работать программе. С этими объектами уже могут работать наши продукты, в частности ABBYY FineReader PDF и другие.
Как было раньше. В FineReader 14 мы умели редактировать текст только в рамках одной строчки. После редактирования необходимо было выполнить «рендеринг» — расставить глифы на свои новые места.
Вообще рендеринг — это визуализация. Но мы вкладываем в это слово иное понятие — расположение объектов в PDF на своих местах. Для PDF-специалистов это и есть визуализация, которую больше никто не видит. Когда мы говорим о визуализации в привычном понимании, то используем слово «растеризация».
Весь этот процесс располагался в подсистеме PdfTools. Она помогала нам собирать содержимое PDF в строчки и редактировать их. Например, надо поставить на 5-ое месте глиф «А». FineReader передавал подсистеме PdfTools, что на пятое место нужно поставить глиф «А» с заданным размером и шрифтом, а PdfTools вставляла «А» и перемещала на нужное место в строчке все глифы, которые следовали за буквой «А». Построчное редактирование довольно легкое: текст просто смещался вправо или, например, влево, если он записан на иврите или арабском языке. Это позволяло внести небольшие корректировки, например, исправить опечатку, но не давало возможность сделать более глобальные изменения в тексте PDF-документа.
Что решили изменить. Когда появилась задача многострочного редактирования, мы поняли, что в рамках одной библиотеки PdfTools это будет проблематично делать. Нам необходимо было научиться автоматически находить в тексте PDF более крупные фрагменты, например, «видеть» абзацы, понимать, где находятся их границы, какое форматирование должно быть у целого фрагмента текста и что происходит при переходе с одной строки на другую. Чтобы определить все эти параметры, мы решили привлечь для решения этой задачи и другие наши OCR-технологии — Document Analysis (DA) и Synthesis, которые умеют строить структуру документа.
Document Analysis и Synthesis
Чтобы определять в тексте блоки, ABBYY FineReader PDF использует технологию Document Analysis. Она позволяет найти абзацы, таблицы, картинки. Программа подсвечивает найденные блоки небольшими бледными рамками, чтобы пользователю удобнее было вносить правки:
Далее мы усовершенствовали другую подсистему нашей программы – Synthesis. Мы уже рассказывали на Хабре, зачем она нужна. Если вкратце, именно она определяет структуру и все характеристики распознанного текста: какие используются шрифты и размеры, какое начертание (bold, italic, underline), где заголовки, списки, отступы и многие другие параметры, которые можно настраивать в том же MS Word. Мы доработали Synthesis для того, чтобы при распознавании и воссоздании страницы очень точно восстанавливать исходные параметры текста.
Особенности подчеркнутого текста
В PDF нет такого атрибута текста как подчеркивание, привычного, например, пользователям MS Word. Подчеркивание в PDF – это векторная графика, никак не связанная с текстом. Без дополнительной доработки продукта при редактировании «подчеркнутого» текста символы бы перемещались привычным образом, а линии, обозначающие подчеркивания, оставались бы на месте. ABBYY FineReader PDF умеет определять и редактировать подчеркнутый текст привычным пользователю образом.
Редактирование таблиц в PDF
Изменилось и редактирование таблиц. Раньше программа «видела» таблицу, как отдельные строки, и редактировала ее так же. Теперь при работе с таблицами ABBYY FineReader PDF определяет содержимое каждой ячейки, умеет извлекать из них текст и работать с ним. Это удобно, когда надо исправить ошибку в цифре, поменять точку на запятую и при этом сохранить структуру таблицы, сделать это быстро и без конвертации PDF-документа в другие форматы.
Как отредактировать скан?
Возможность многострочного редактирования доступна и для сканов. Кстати, пользователю даже не надо задумываться, скан перед ним или нет. ABBYY FineReader PDF сам определит это и запустит нужные механизмы. Например, в дате договора — опечатка, или ФИО контрагента поменялось: оно стало длиннее и должно «перетечь» на следующую строчку.
В программе скан сначала распознается, а потом происходит подготовка к редактированию. Когда скан распознали, то текст получается не в нашем исходном документе, а в его виртуальном «двойнике». И именно в нем происходят все операции по редактированию.
Когда пользователь закончил редактировать документ, программа автоматически собирает все изменения со страницы и заменяет эти фрагменты в исходном документе. Наша задача — встроить текст обратно в PDF-документ, не повредив все то остальное, что уже есть в нем.
Редактирование скана позволяет не тратить время на конвертацию документа в другие форматы и обратно. Это удобно, когда нужно быстро внести забытую правку в дату или другой фрагмент текста.
Пример многострочного редактирования. Текст автоматически перераспределяется по строкам по мере добавления слов и предложений внутри абзаца.
Вместо заключения
Исправить опечатку в листовке, поменять местами текстовые блоки в инструкции, изменить целый абзац в скане договора или добавить несколько новых, поправить форматирование всего текста – все эти задачи теперь возможно решить:
- быстро,
- без конвертации документа,
- с помощью одной программы.
Попробовать можно прямо сейчас – скачайте триал-версию ABBYY FineReader PDF бесплатно.
В следующем посте через неделю мы расскажем о том, как научили ABBYY FineReader PDF еще одной интересной фиче и для чего может пригодиться новая функциональность.
Пишите в комментариях, о каких еще технологических особенностях нашей программы вам было бы интересно узнать?
PereslavlFoto
Разве можно редактировать текст в PDF? Разве это разрешено в бесплатных программах?
xtotdam
Спецификация не запрещает. Не очень просто, да, но возможно
PereslavlFoto
В какой бесплатной программе можно редактировать текст в PDF?
Спасибо.
xtotdam
Я вам не каталог софта и не гугл:)
PereslavlFoto
—
IDDQDesnik
LibreOffice. На самом деле тут больше вопрос к самому файлу, текст ли там. Он может оказаться набором векторной графики или кучей жпегов. Но, имхо, если у вас в принципе возникла такая потребность, вы что-то делаете не так.
PereslavlFoto
Спасибо.
eumorozov
Увы, в LibreOffice едут шрифты, рамки, и все остальное. Пробовал редактировать примитивный PDF из двух страниц.
Понять смысл можно, но выглядит всё ужасно. До сих пор не существует приличной альтернативы Acrobat'у. :(
justhabrauser
В статье, конечно, много
передёргиваниеумолчаний, но в одном автор прав — в неудачных (и не очень редких) случаях "текст" в pdf может быть и не текст вовсе, а пачка ничего не значащих векторных примитивов.Или как у нас в деревне был случай (какая-то дока от Samsung) — красиво расставленные отдельные слова. Смотрится как сплошной красивый текст, но сплошным текстом не является.
И там никакой акробат не поможет, ага.
eumorozov
Да, поэтому ABBYY в своём продукте наверное может сделать редактирование, так как они спецы по распознаванию текста. К сожалению, при всём желании их продуктом воспользоваться не могу, так как работаю в Linux, Windows у меня вообще нигде нет, даже в виртуалке.
PDF, кстати, может быть вообще набором отсканированных картинок.
mikleh
Акробат, я так понимаю, распознает по технологии OCR любые примитивы и превратит в текст с абзацами.
justhabrauser
Это абсолютно точная информация?
Или мысли вслух?
jeConf
Ну вот как он мне распознал Ваш вопрос с экрана, сохранённого в джипег:
При этом Акробат назначает либо скрытый, либо автоматически созданный на основе трассировки шрифт в зависимости от режима OCR. Абзацы он не распознаёт, но понимает блоки текста со строками.
mikleh
Это в статье написано. Вполне однозначно изложено в предпоследнем пункте: «Как отредактировать скан?»
P.S. Да простит меня фирма ABBYY, конечно же я имел в виду, что Finereader, а не Акробат, распознает и превратит. Прошу прощения за глупую описку.
Xitsa
Я однажды встретил PDF, где текст был набран побуквенно: т. е. бралась буква, например, «А» и размещалась по всей странице, потом бралась следующая, например, «Б» и т. д.
ABBYYTeam Автор
Статья как раз о том, что ABBYY FineReader PDF умеет редактировать текст и делает это теперь не хуже Акробата. Попробуйте сами: триал можно скачать здесь
eumorozov
Да я понимаю, только нет у меня Windows. Не буду же я ее ставить ради необходимости несколько раз в год отредактировать PDF...
PereslavlFoto
Беда в том, что FineReader ничуть не лучше Акробата. И там и там приходится искать ключ или номер. То и другое недоступно, если нет денег.
tri_ton
Раньше версия Master PDF Editor для Linux (но не для других ОС) была полностью бесплатна для использования, и последний бесплатный выпуск на данный момент всё ещё доступен с сайта производителя (ссылки в конце статьи). Конкретно эту версию не тестировал, но более старыми версиями пользуюсь много лет, хотя у меня довольно скромные запросы в плане функционала.
oji
К сожалению, как и многие другие бесплатные приложения, не полностью, а «free for non-commercial use». Из полностью бесплатного на память приходит только векторный редактор Inkscape. Но он, в силу своей направленности, умеет работать только с отдельными страницами, поэтому приходилось на работе сочетать его с PDF Split & Merge. Конечно, не очень удобно, зато лицензионно чисто.
ayakushev
В бизнесе в пдф сохраняют тексту документов и презентаций для того, чтобы их не меняли. Если нужна возможность редактирования, то присылают исходные файлы. Бывают случае, когда исходники не сохранились, а нужно составить договор на основе текущего, но в таком случае нужен не параграф, а весь текст.
Вопрос — а для каких кейсов все-таки нужно редактирование абзацев?