Страница 1 из 1

[FAQ] Почему плохо извлекается текст из файлов PDF и DJVU?

Добавлено: 10 ноя 2018 15:45
balabolka
Текст из файлов форматов PDF и DjVu извлекается иногда хорошо, иногда плохо. Из разных файлов по-разному. Иногда появляются разрывы строк в абзацах, иногда извлекаются "кракозябры" вместо букв, иногда это "мусор" вместо текста. Почему так происходит?


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

Отсюда проистекают проблемы с извлечением текста. В файле формата PDF хранится не текст - там хранятся объекты различных типов. Повезёт, если объект - это абзац текста; но это может быть только одна строка текста или даже одна буква (например, первая буква текста главы книги, буквица - большая буква, написанная другим шрифтом, с орнаментом или виньеткой, как в старинных рукописях). У меня был случай: "Балаболка" извлекала из документа сначала текст абзаца без знаков препинания, а затем сами знаки препинания, один за другим. Оказалось, что каждый знак препинания был отдельным объектом, расположенным поверх большого объекта с текстом абзаца (буквы были написаны одним шрифтом, знаки препинания - другим). Пришлось повозиться, прежде чем удалось вернуть запятые и точки на их законные места внутри абзаца.

Еще одна сложность с форматом PDF - это использование подмножеств встраиваемых шрифтов. Иногда в документ внедряют не весь шрифт целиком (файл шрифта бывает слишком большим), а только его часть. Подмножество шрифта содержит только те символы, которые используются в документе. И если таблица кодировки подмножества шрифта не использует стандартные коды символов, то "Балаболка" вместо текста извлечет совершенно другие символы. Эту проблему исправить невозможно, надо создавать файл PDF заново, без подмножества шрифта.

Формат DjVu служит для хранения изображений (например, сканированных книг и журналов). Если в файле и хранится текст, то только как дополнительный текстовый слой. Этот текст не предназначен для просмотра: он позволяет осуществлять полнотекстовый поиск по файлу. Самый распространенный метод создания текстового слоя - выполнение оптического распознавания книги. Успешность распознавания текста зависит от многих факторов, и результат может быть не всегда удачным.

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