gianthare: (Default)
[personal profile] gianthare
Я тут неожиданно ознакомился с форматом 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 при помощи виртуального принтера, который в низ каждой страницы впендюривает полный путь файла и номера страниц.

Date: 2010-01-25 05:36 pm (UTC)
nechaman: (Default)
From: [personal profile] nechaman
Может быть вы можете объяснить, как они это делают на Hebrewbooks. Там они выставляют файлы в текстовом PDF, но все выглядит так, как в древней книге. Но вот если копируешь текст, то некоторые буквы оказываются совсем другими. Скажем вметос ламед - каф.

Date: 2010-01-25 06:57 pm (UTC)
From: [identity profile] gianthare.livejournal.com
Ну вот так и делают видимо - описали красивый шрифт в начале файла, но соответствию между кодами и буквами не стандартное. Если совсем дикие, то могли и английские буквы использовать - я однажды искал палеобиблейский (?) шрифт - нашел, но буквы там соответствовали латинским и писать надо было с конца. Но шрифт красивый. А могли взять ивритскую кодировку не такую, как Windows ожидает - их же несколько, на Маке совсем своя, даже интервал другой.

На самом деле, там вообще какой-то бардак. Я попробовал - там часть букв соответствует, часть нет и, что хуже всего, одна и та же буква может перевестись в разные, или разные в одну. Там по-моему, даже кол-во букв при копировании не сохраняется. Если они этот PDF своей программой генерировали, то можно еще и не то натворить - можно каждой букве отдельно шригт определять, только размер файла тогда будет вообще убийственный

Date: 2010-01-25 07:08 pm (UTC)
nechaman: (Default)
From: [personal profile] nechaman
"одна и та же буква может перевестись в разные, или разные в одну. " - вот это то и странно.
Файл видно не такой уж и громадный, скачивается довольно быстро.
И поиск там у них работает, хотя иногда и ошибается.
Наверное там у них какая-то своя программа это все делает. Да и дешифровка таких текстов, совсем не простое дело. Ивритские OCR жутко дорогие, вообще. А тут еще книги написанные шрифтом Раши...

Date: 2010-01-25 07:11 pm (UTC)
From: [identity profile] gianthare.livejournal.com
Ну вот, мы пришли к одному выводу, по-моему - это неудачный OCR (наложенный на скан)

Date: 2010-01-25 07:15 pm (UTC)
From: [identity profile] gianthare.livejournal.com
Так и есть - при поиске находится то же, что копируется.
Так ינמק находит יצחק, потому что в шрифте Раши похоже

Date: 2010-01-25 07:16 pm (UTC)
nechaman: (Default)
From: [personal profile] nechaman
Да.

О!

Date: 2010-01-25 07:10 pm (UTC)
From: [identity profile] gianthare.livejournal.com
У меня лучше идея - в PDF можно сделать два слоя - картинак и текст. То что мы видим - это картинка, а текстовой слой составлен из примерно похожик современных ивритских бкв. От этого такие дикие расхождения. Например, этого можно добиться, если этой картинке сделать OCR программой рассчитанной на современный ивритский шрифт, тогда все странности это просто ошибки распознавания ( а те кто это так выложил - вредители)

Re: О!

Date: 2010-01-25 07:15 pm (UTC)
nechaman: (Default)
From: [personal profile] nechaman
Интересная мысль! Так наверное и есть.
Но не надо их вредителями обзывать. Могли бы выложить просто картинками. А так, многое можно найти через поиск, хоть иногда и ошибки есть.
И там есть книги, которых нигде больше не найдешь. Во всяком случае пока.

Re: О!

Date: 2010-01-25 07:16 pm (UTC)
From: [identity profile] gianthare.livejournal.com
Я смайлики не всегда ставлю. Хотя мне кажется, лучше было без OCR положить, чтобы не путать. Или предупредить

Re: О!

Date: 2010-01-25 07:21 pm (UTC)
nechaman: (Default)
From: [personal profile] nechaman
Я понимаю, что вы не в серьез. И понимаю, что обидно, что копировать смысла нет.
Но тут выбор - вычитывать все, это огромная работа. А вместо этого, они выкладывают больше книг.
И все таки, мне кажется, этот OCR больше помогает, чем путает.

Re: О!

Date: 2010-01-25 07:33 pm (UTC)
From: [identity profile] gianthare.livejournal.com
Наверное, можно посетителей сайта запрячь. Просто предложить - сгрузил файл, не будешь ли так добр вычитать страничку. Сколько это займет, минут 5-10? Я бы вычитал.

Re: О!

Date: 2010-01-25 07:49 pm (UTC)
nechaman: (Default)
From: [personal profile] nechaman
Не знаю. Может быть.
Я бы не вычитала. Дислектик я, не вижу ошибок. Т.е. конечно некоторые вижу, но не все...

Profile

gianthare: (Default)
gianthare

February 2026

S M T W T F S
1234567
891011121314
15161718192021
222324 25 262728

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 7th, 2026 12:30 am
Powered by Dreamwidth Studios