Поиск/извлечение текста

  • Автор темы Автор темы antabu
  • Дата начала Дата начала
Ответ: pdf-recode.pl

Немного неаккуратно Вы добавили строки, например очевидно, что U0020 как бы занят. Ну да ладно, фрагмент такой:

Код:
"<00B3>", "<0456>", # і
"<00BF>", "<0457>", # ї
"<00B2>", "<0406>", # І
"<00BA>", "<0454>", # є
"<00AA>", "<0404>", # Є
"<00B4>", "<0491>", # ґ
"<00AF>", "<0407>", # Ї
"<00A5>", "<0490>", # Ґ
#"<00A2>", "<0463>", # ? (ять мал.)
"<00B8>", "<0451>", # ё
"<00A2>", "<045E>", # ў
"<00A1>", "<040E>" # Ў (большая)

Собственно, поэтому достаточно было фрагмента, все равно я его ставил в исходник. "Ять" не нашел, где оно в выложенном файле? См. обещанный exe http://ifolder.ru/20611915.

Да, ставите Perl (в виндоуз, Activestate or Strawberry), dependencies (они сами должны поставиться с ppm, но...), + не помешает :-) исправить баги в использованной пдф библиотеке
 
pdf-recode041210.exe

1998, Спасибо!
Да вот только...
Текст из pdf-ов конвертированных pdf-recode041210.exe в буфер копируется правильно ( в т.ч. и украинские буквы). Это +
НО поиск по документу перестал работать... Вернее Acrobat находит совсем не тот набор символов, который вводишь в поле поиска.
После старого pdf-recode поиск работал нормально,
Да без конвертации вообще он работал нормально (правда искать нужно было кракобязы) и поэтому док. не индексировался Гуглом....
Все не слава богу... где-то грабельки...
')'
 
Ответ: pdf-recode041210.exe

Что если рискнуть и почистить кэш поиска в префах Акробата?
 
Ответ: pdf-recode041210.exe

1998,
Ну да... Foxit ищет нормально!
И акробат стал искать правильно после Edit>Preferences>Search>Purge Cache
(А я и не знал про такую фишку)

'thank'

Кстати, буква ять есть в этом фраменте (см. эттачмент)
А букву ў так толком и не конвертирует
(вот пример белорусских неправильных пдф-ов
http://www.ostrovets.by/wp-content/uploads/2010/10/Ostrovets_82_27.10.2010.pdf
http://www.marakou.by/pub/file/vynishchenne.pdf

Я не слишком наглею? 8*)

Спасибо еще раз!
'happy'
 

Вложения

Ответ: pdf-recode041210.exe

Рано радовался...
Тут вот какая петрушка.
Первый том той энциклопедии набран основным шрифтом 1251Times Type1 (Embeddd Subset)
И этот том pdf-recode конвертировала (за искл. ять .
А вот следующие тома набраны шрифтом 1251Times TrueType (Embeddd Subset)
Их pdf-recode не обрабатывает, пишет "nothing to fix!"

Что делать?

(вижу 3 пути:
1. ковыряться в pdf-recode - это мне не по силам
2. поменять в пдф ТТ на Т1 pitstop-ом - попробовал в неск. абзацах - работает. Но делать это в 5-ти томах по 600 стр. - о-очень долго! (А может PitStop умеет менять шрифт сразу во всем файле, только я об этом не догадываюсь?)
3. Может можно как-то перепечатать весь пдф с заменой шрифтов? (ни TT ни Т1 1251Times в системе у меня не стоят и где их взять не знаю (гугл не нашел где скачать).)
Может какие-то еще идеи?

:Help:
вот образец
 

Вложения

Ответ: pdf-recode041210.exe

Видимо, вся энциклопедия набрана системным Times New Roman, просто в одном случае выводили в ps-файл с установкой в драйвере "Send true-types as outlines", а в втором - "as native true-types".
TrueType (Embeddd Subset). Их pdf-recode не обрабатывает
It's by design. We didn't want to mess with TrueType. Not with worst cases, at least. Хотя, под файл из сообщения 46 скрипт модифицируется довольно легко, что я, собственно, давно хотел сделать.
А букву ў так толком и не конвертирует
Разве не очевидно :-), что в "белорусских" файлах "выстреливает" случай Lut2, который мы не трогали?
Который кодируется как "ў". Кого будем обижать, белоруссов или сторонников царизма и соответствующей орфографии? Которым, сделаешь "ять", появятся недовольные "а как же "фита" и прочие?" Мы подходим к необходимости чего-то типа Iceni Gemini -- в смысле хотя бы интерфейса, а не мало-пригодного результата.
с заменой шрифтов?
Вы легко можете пересохранить через постскрипт с галкой "convert true-type to type1". Но это неспортивно. Будет ахинея с "description:title" и проч. Не надо.
Что?! Три случая, на которые не надо отвечать в форуме:
1) у которых "-ться" вместо "-тся", и наоборот;
2) у которых "может, кто-нибудь сможет помочь", + деривативы;
3) которые "возьмите питстоп".
:-)
 
Ответ: pdf-recode041210.exe

Вы легко можете пересохранить через постскрипт с галкой "convert true-type to type1".
Что я и сделал, несмотря на "неспортивность". Спасибо за очередную дельную подсказку.
Правда, потом пришлось еще раз перепечатывать (pdf>pdf) (Hight Q print) т.к. тот пдф, что из пс конвертер не ел (can't save!), ну да ничего - все равно я хотел разбить тома на файлы поменьше (побуквенно), а bookmarks and articles и проч. наворотов "не для печати" в исх. нет.
Теперь, за исключением мелких, но неприятных косяков (неискабельный греч. текст и "обелорушенная" ять), получился вполне себе ничего электронный док.

Не по теме:

Кстати, мне нет дела ни до царистов, ни до белорусов, но если в доке буква ять, - желательно, чтобы она искалась, именно как ять
:)


Не устаю благодарить за помощь!
Если интересно, что за "ахинея" получилась внутри, - вот те же 2 страницы из 2-го тома
 

Вложения

Ответ: pdf-recode041210.exe

если в доке буква ять, - желательно, чтобы она искалась, именно как ять
Да будет так. Только найду DVD c файлами из этой темы, протестирую, не поломал ли чего в скрипте, тогда выложу... grand finale
 
Ответ: pdf-recode041210.exe

Вдогонку, для информации, PDF Reference говорит нам:

5.9 Extraction of Text Content...
5.9.1 Mapping Character Codes to Unicode Values

A consumer application can use the following methods, in the priority given, to map a character code to a Unicode value....

1) If the font dictionary contains a ToUnicode CMap (see Section 5.9.2, “ToUnicode CMaps”), use that CMap to convert the character code to Unicode...​
(В проблемных файлах либо нет этой таблицы, либо в ней содержится маппинг на расширенную латиницу, либо какой-нибудь трэш)
2) If the font is a simple font that uses one of the predefined encodings MacRomanEncoding, MacExpertEncoding, or WinAnsiEncoding, or that has an encoding whose Differences array includes only character names taken from the Adobe standard Latin character set... бла-бла-бла​
(Для кириллицы WinAnsiEncoding или Adobe standard Latin set как бы неактуальны)
3) If the font is a composite font that uses one of the predefined CMaps listed in Table 5.15 . бла-бла-бла, короче CJK (China Japan Korea), only​
(Ну, это к нам тоже не относится)
...
If these methods fail to produce a Unicode value, there is no f*****g(*) way to determine what the character code represents.

(*) - Я ни при чем, так и написано. Смотрите сами.

Это так, к слову :-).
 
Ответ: Поиск/извлечение текста

Это я удалил, т.к., как обычно -- невовремя, увидел, что хорошо бы внести пару правок. Откуда мне было знать, что Вы порешили в ту же ночь вдарить, так сказать, по софту? :-)

Бывает, что кириллические шрифты кодируются правильно, а ресурс CMap утерян. Ну например, набрать в ИД7 текст шрифтами type1 или cff-otf (что дает разную кодировку, если кому интересно), сохранить eps. Который снова заверстать, и экспортировать pdf. Ничего, казалось бы, предосудительного, однако текст в pdf получается неискабельным. Забавно, что при выводе через дисциллер этой проблемы, внезапно, нет. Cлучаи, наверное, нечастые, но и правки минимальные. Неохваченными всеобщим перекодированием остаются композитные (те самые CID) шрифты. Ну, видимо, как разводят руками сами разработчики -- "no f... way".

http://ifolder.ru/20730448
 
pdf-recode101210

работает.
Я так понимаю: final ?

:thank:
 
Ответ: pdf-recode101210

О да, финал... У меня, правда, последний "билд" от 11 числа, там еще некоторая правка (в основном, для жертв третьего дистиллера, см. ниже). Но я и так уже всем надоел с этим скриптом :-). Так что пусть так... Может, года через два снова проявится. Или раньше. Или уже никогда.


Не по теме:
Забавно, я ни разу не использовал эту программку по назначению. Так, лабораторка. Хочешь мира -- пара беллум. + (поверхностное) изучение нового языка.

Зашел на сайт журнала, с которого началось. Посмотрел последние пдф-статьи. Так они и не поправили ничего, в своем хозяйстве. Никому ничего не надо. : -( Совок шагает по планете, как и предсказано.

 
Ответ: pdf-recode101210

Здравствуйте!
Огромное спасибо модератору 1998 за его труд!
Иногда прогоняю файлы через GSVIEW32 (Ghostscript) с целью уменьшить размер, снять защиту, изменить версию pdf.
Но моему уму не дано понять, почему при этом часто, но не всегда, текст (кириллица) становится неизвлекаемым. Прога имеет множество непонятных настроек и возможность подключать дополнительные шрифты.
 
Ответ: pdf-recode101210

Добрый день (ночь), могу лишь подтвердить: девайс pdfwrite, при обработке pdf, записывает корректную таблицу ToUnicode только для правильных Type1 шрифтов. А для Truetype или композитных (CID) -- некорректную. Проще всего видимо для указанных Вами манипуляций использовать какой-то другой софт.
Можно найти интересное чтиво на сайте GS в разделе багов, если поискать по ToUnicode. Есть мнение, что при преобразовании в пдф (дистиллером или GS) таблица ToUnicode будет создана (только?) тогда, когда в пс-е в шрифте содержится (недокументированный в TFM) словарь GlyphNames2Unicoide. Но, возможно я не там ищу, но я не вижу в моих повседневных пс-ах такого словаря. Поэтому могу лишь предположить, что в случае тайп-1 шрифтов дистиллер (GS) (еще более недокументированно) генерит указанную таблицу опираясь лишь на пс-имена глифов. Собственно, дистиллер тоже при повторной генерации pdf-ps-pdf теряет ToUnicode для не-т1-шрифтов. Вопрос нуждается в дополнительном изучении. :-) Я думаю, что если ОНИ говорят, что ToUnicode может быть создана только если в пс есть GlyphNames2Unicoide, то -- ребята, вам и карты в руки, промежуточный ps из pdf генерится вами же, в исходном pdf есть ToUnicode, вот и сделайте из него ps с GlyphNames2Unicoide, который затем используйте при генерации pdf и ToUnicode в нем.
 
Ответ: pdf-recode101210

Навскидку, сохранил pdf из ОО (в линуксе, версия GS 8.71. Неохота перезагружаться), с тру-тайп шрифтом. После этого pdf2pdf с выводом некоторой диагностики, вот так:

gs -sDEVICE=pdfwrite -o out.pdf -c /PDFDEBUG true def -- in.pdf

Судя по вываливающемуся логу, словарь GlyphNames2Unicoide в промежуточном "ps" имеется, и содержит валидные данные. Но вот далее, в таблице ToUnicode получившегося pdf мало того что трэш, но еще и индексы вдруг с какого-то перепугу 2-байтовые. Налицо явный баг. Можно было бы запостить его, если не испугает обилие CLOSED, WONTFIX (или как-то так, по памяти) в ихней базе. Повторюсь, я-то сам не пользуюсь извлечением текста. За державу обидно. Поди, не то что тысячи, миллионы "электронных" документов, по качеству (в смысле индексируемости и т.п.) не намного лучше бумажных. Такими темпами нашу Империю Зла ожидает, кроме всего прочего, еще и Digital Dark Age. Кошмар... :-)
 

Вложения

  • Screenshot.png
    Screenshot.png
    49.4 КБ · Просм.: 1 243
Ответ: pdf-recode101210

Полностью с Вами согласен. То, что как-то можно простить популярному журналу совершенно неприемлемо для солидного научного издания. Вот пример такого безобразия в журнале "УФН": http://ufn.ru/ru/articles/2010/4/a/
Результат - текст статьи не индексирован, фразы не находятся ни Яндексом, ни Гуглом.