Даны pdf-файл, сделаны latex+dvips+ps2pdf, исходник утеряны или скрыты создателями :)
Если в adobe pdf reader выделить текст и скопировать куда-нибудь, скопируются крякозябры, например "Ñòîõàñòè÷åñêèé".
Вследствие плохой кодировки не работает, например поиск по файлу.
Для некоторых из имеющихся файлов помогает использование foxit вместо adobe для поиска, но хочется, чтобы любой ридер мог читать. Требуется, видимо, изменить кодировку чего-то внутри (или вне?) pdf. Порылся в интернетах, ничего полезного не нашёл, хотя проблема, вроде, не редкая. Посоветуйте какой-нибудь софт или последовательность действий, чтобы это исправить. Операционная система любая.
romakoks: Скачал Ghostscript c "ghostscript.com/download/gsdnld.html". Установил версию x64, Win 8.1. Затем запустил грубо указав полный путь к файлам^ C:\>"C:\Program Files\gs\gs9.19\bin\gswin64.exe" -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile="C:\test\output.pdf" "C:\test\Input.pdf"
Дмитрий Власов:
У меня при выполнении данных действий Ghostscript выдаёт ошибку:
Error: /undefined in C:\
Operand stack:
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-
- 2 %stopped_push --nostringval-- --nostringval-- %loop_continue --n
ostringval-- --nostringval-- false 1 %stopped_push .runexec2 --nostr
ingval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval
--
Dictionary stack:
--dict:1194/1684(ro)(G)-- --dict:0/20(G)-- --dict:78/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is 3
R80: попробуйте слеш в пути к файлу другую сторону развернуть, проверьте, что взяли пути в кавычки, или просто указывайте относительные пути вместо полных. Судя по "Last OS error: No such file or directory", не получилось распознать путь, который вы задали.
Чтобы не мучаться с путями, добавьте в PATH путь к бинарнику gs, тогда будет удобно и коротко, как в моем изначальном решении
Впрочем, через полтора месяца после вопроса это уже может быть и неважно :)
PoCTo: да нет, почему же, очень важно. Потому как имеющийся документ тянет почти на 300 страниц. Через OCR его заново прогонять просто дикость. Что касается GS, то попробовал сейчас ваши рекомендации относительно слэша и кавычек - всё тщетно. Кавычки стоят. Разворот слэша ничего не меняет. Вот фраза про добавление в PATH путь к бинарнику gs, мне, как полнейшему профану в этом деле, не совсем понятна.
Сейчас я действую по сценарию, описанному у Дмитрия. Я просто копирую его путь C:\>"C:\Program Files\gs\gs9.19\bin\gswin64.exe" -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile="C:\test\output.pdf" "C:\test\Input.pdf", естественно поместив в указанные папки нужные файлы с указанными наименованиями, и меняю gswin64.exe на gswin32c.exe. Может быть я где-то на этом этапе допускаю некую кощунственную ошибку, которая и является причиной гневных ответов gs в мой адрес? Хотелось бы разобраться.
Leonid Fedotov, Безусловно уже слегка поздновато, но вдруг пригодится еще кому-нибудь.
Для преобразование текста(без должно форматирования, к сожалению) можно сделать так:
Открыть notepad++, создать новый файл с кодировкой в которой у вас текст(выбрать кодировку в настройках их которой нужно конвертировать), сохранить, скопировать кракозабры(текст из pdf файла cp1252), заменить кодировку на cp1251 в меню.
После этого текст будет читаем и им можно будет воспользоваться.
Мне помогает в этом деле следующие. Я из pdf из которого не копируется кириллица, через ctrl+p создаю новую pdf используя принтер Adobe PDF и из новой pdf русский текст копирует.
Я восстановил файл (ТУ из ГОСТ с таблицами и формулами) с той же проблемой (без исходников и с сохранением формата) с помощью https://finereaderonline.com/ - наверное, то же самое можно сделать обычным FineReader'ом. Результат экспортируется в любой текстовый формат.
(понимаю, что некропостинг, но т.к. нормального рабочего ответа по восстановлению без исходников в сети не нашел, то может быть этот вариант будет еще кому-то полезен)
В онлайн-версии распознавание более 11 страниц платное, но я думаю в последующем при подобной проблеме можно и не пожмотиться (ABBYY продают пакеты страниц, не обязательно прогу покупать) ради благой цели. В этот раз мне хватило 10 страниц - я отметил выборочные.
Привет из могилы! Вариант хороший, но все-таки, если уже есть ocr у книжки, просто оказавшийся не в той кодировке, жалко платить за повторное распознавание уже распознанных страниц :)
Нашёл чуть более удобный способ для обывателей с Windows:
Необходимо экспортировать весь файл в PostScript (Encapsulated создаст для каждой страницы файл - нужен обычный). И далее собрать pdf заново.
Я это проделывал используя Acrobat DC и Acrobat Distiller.
У вас текст в кодировке CP1252 (слово «Стохастический»). Вам нужно вытащить весь текст из pdf, изменить кодировку и снова сохранить в pdf. Форматирование скорее всего потеряется, я не спец. Возможно, как-то можно преобразовать кодировку в каком-либо редакторе pdf.
это я тоже понял, воспользовавшись habrahabr.ru/post/147843/ :)
вопрос только в том, как мне вытащить ocr, сконвертить его и вернуть на место, пока лучший придуманный способ — прогнать через finereader и распознать заново, но это совсем уж в лоб
Удивительно, решение благодаря вам нашлось неожиданно!
Я пытался вырезать страничку из большой pdf-ки с помощью gs, и после вырезания эта страница работала с поиском! Видимо ghostscript сам проставил кодировку где-то.