Знай врага в лицо: формат PDF
Jan. 25th, 2010 05:26 pmЯ тут неожиданно ознакомился с форматом PDF и теперь ищу, на кого бы излить распирающее меня знание. Один пострадавший уже есть, но этого мало.
- Официальная спецификация PDF занимает 530 страниц (я полагаю в PDF :) ) и продается ISO за 70 франков. Правда, есть неофициальная, где содержится вся та же информация и которую можно сгрузить бесплатно. Поэтому, как сказано на одном из сайтов "редкий программист воплощает весь стандарт в одиночку", но генерировать PDF относительно просто.
- Во-первых, к моему удивлению, PDF оказался текстовым форматом, точнее он был задуман, как чисто-текстовой формат, а когда выяснилось, что некоторые почтовые программы режут 8-мой бит, его переопределили, как "нетекстовой" и во вторую строку вписывают комментарий со "странными" (>127) символами. Тем не менее, элементами PDF в первом приближении являются текстовые команды записанными нормальными ASCII символами, его можно открыть в текстовом редакторе и почитать.
- Это, разумеется, несколько неэффективно с точки зрения об'ёма, поэтому отдельные секции, например страницы заменяются своим ужатым текстом - но это его не превращает в бинарный, так же как зазипованный XML это все равно текст - его сначала надо раскрыть и только потом обрабатывать. А здесь это верно для отдельных секций. Ужимаются они алгоритмом Flate, являющимся разновидостью Zlib, и нигде больше не использующимся. По крайней мере, я их раскрыть не смог ничем, кроме специальной утилиты, которая делает uncompress PDF.
- PDF представляет из себя контейнер для подмножества Postscript - из Postscript выкинуты функции и т.п., зато PDF добавляет мета-информацию - описание струкуры документа, деление на страницы, оглавление и т.п., поэтому по PDF документу гораздо проще передвигаться, чем по PostScript
- Т.к. это Postscript, то он жестко прописывает для каждого кусочка текста, где тот находится. Именно поэтому, PDF non-reflowable, т.е. жестко привязан к размеру листа, на котором его собираются печатать, в подавляющем большинстве случаев A4. И поэтому из него так муторно извлекать текст. Особенно когда текст набран в два столбца, т.к. эти столбцы исключительно визуальные, внутри PDF столбец как таковой никак не обозначен, просто часть текста размещена при помощи координат в одном месте листа, а часть в другом.
- Т.к. для любого куска текста можно указать шрифт и определение шрифта можно включить в сам файл, то можно не заморачиваться указанием кодировки, а просто для отрывка на определенном языке указать шрифт, который его правильно отобразит. Я даже не выяснил еще, есть ли вообще в PDF возможность указать кодировку, если хочется. Поэтому при попытке извлечь нелатинский текст из PDF получается фигня, а именно, в случае русского, буквы с акцентами (диакритическими значками: умалуты, правые штрихи, левые штрихи и т.п.)
- Из-за всего вышеуказанного, все чужие утилиты (Adobe не Reader не проверял) позорно валятся на сложном PDF, портят текст, не понимают кодиривок, не понимают колонок, оставляют headers and footers посреди текста и т.д. И что делать - непонятно. Хотя для каждой конкретной книги несложно (реально) сделать custom script, который извлечет ее содержимое и сохранит часть форматов.
- Это я еще часть и забыл и немного остыл.
- Все это превращает PDF в формат, абсолютно не подходящий для передачи информации, если не считать таковой печать. Читать его даже с экрана компьютера неудобно, потому что скролится он не гладко, а постранично, а уж с меньшего устройства только при отсутствии выбора.
- В общем, тех кто отсканированные и распознанные книги выкладывает в PDF надо
вешать на первом попавшемся сукузаставлять из этого PDF извлекать обратно текст, вручную. А особенно тех, кто создавал PDF при помощи виртуального принтера, который в низ каждой страницы впендюривает полный путь файла и номера страниц.
no subject
Date: 2010-01-25 05:36 pm (UTC)no subject
Date: 2010-01-25 06:57 pm (UTC)На самом деле, там вообще какой-то бардак. Я попробовал - там часть букв соответствует, часть нет и, что хуже всего, одна и та же буква может перевестись в разные, или разные в одну. Там по-моему, даже кол-во букв при копировании не сохраняется. Если они этот PDF своей программой генерировали, то можно еще и не то натворить - можно каждой букве отдельно шригт определять, только размер файла тогда будет вообще убийственный
no subject
Date: 2010-01-25 07:08 pm (UTC)Файл видно не такой уж и громадный, скачивается довольно быстро.
И поиск там у них работает, хотя иногда и ошибается.
Наверное там у них какая-то своя программа это все делает. Да и дешифровка таких текстов, совсем не простое дело. Ивритские OCR жутко дорогие, вообще. А тут еще книги написанные шрифтом Раши...
no subject
Date: 2010-01-25 07:11 pm (UTC)no subject
Date: 2010-01-25 07:15 pm (UTC)Так ינמק находит יצחק, потому что в шрифте Раши похоже
no subject
Date: 2010-01-25 07:16 pm (UTC)О!
Date: 2010-01-25 07:10 pm (UTC)Re: О!
Date: 2010-01-25 07:15 pm (UTC)Но не надо их вредителями обзывать. Могли бы выложить просто картинками. А так, многое можно найти через поиск, хоть иногда и ошибки есть.
И там есть книги, которых нигде больше не найдешь. Во всяком случае пока.
Re: О!
Date: 2010-01-25 07:16 pm (UTC)Re: О!
Date: 2010-01-25 07:21 pm (UTC)Но тут выбор - вычитывать все, это огромная работа. А вместо этого, они выкладывают больше книг.
И все таки, мне кажется, этот OCR больше помогает, чем путает.
Re: О!
Date: 2010-01-25 07:33 pm (UTC)Re: О!
Date: 2010-01-25 07:49 pm (UTC)Я бы не вычитала. Дислектик я, не вижу ошибок. Т.е. конечно некоторые вижу, но не все...