Кракозябры (иероглифы) при копировании с PDF документа

1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 [0 Голоса (ов)]

Электронные книги вошли в нашу повседневную жизнь и продолжают укреплять свою позицию. PDF один из самых популярных форматов, который можно встретить на интернет просторах, посещая сайты и магазины. Но бывают досадные ситуации, когда текст, который мы хотим скопировать, просто превращается в непонятные символы. Кто-то на них говорит иероглифы, другие кракозябры ... Как же исправить такую ситуацию?

Я не уверен, что следующие советы помогут для всех решить проблему, но частичное решение ее все же возможно.

Давайте сразу отбросим отсканированые и нераспознанные PDF документы, из которых просто невозможно скопировать текст. Это равносильно попытке копирования текста из обычной фотографии, сделанной на ваш смартфон. В таком случае текст нужно распознать специальной программой, вроде ABBYY FineReader.

Наша книга (тестовая) полностью поддерживает копирование текста и изображений. Но при попытке перенести такой текст в Microsoft Office Word, можно видеть такие нечитабельные символы как на скриншоте сверху статьи.

Способ 1 (длинный).

Вся проблема в шрифтах и системе кодирования. PDF документ, с которого производится копирование имеет встроенные шрифты. И если такие шрифты отсутствуют в вашей операционной системе, то вы увидите такие кракозябры.

Чтобы можно было видеть нормальные буквы, при переносе текста нужно устанавливать соответствующие шрифты.

Чтобы узнать какие именно нужно инсталлировать на компьютер шрифты, нужно открыть наш PDF документ поддерживаемой программой (на примере PDF-XChange Viewer). Далее идем в «Файл» → «Свойства документа» (можно нажать сочетание клавиш Ctrl + D).

кракозябры

Далее нажимаем на параметр «Шрифты» и видим список шрифтов, установленных в документе. Их и нужно найти в интернете и установить на компьютер. Для этого на загруженном шрифте два раза нажимаем левой клавишей мыши (то есть, открываем его), а потом нажимаем на кнопку «Установить».

кракозябры

кракозябры

Далее копируем и вставляем текст из PDF документа, выделяем его в Microsoft Office Word (или в другом офисном редакторе, который у вас установлен) и выбираем из списка недавно установленный шрифт. Все должно быть нормально. Снизу на скриншоте видно, что я намеренно применил нужный шрифт только на одно предложение, другую часть текста прочитать невозможно.

кракозябры

Способ 2 (быстро и удобно).

кракозябры

Другой, более правильный и простой вариант это использование программы (или плагина к редактору Notepad ++), которая называется Shtirlitz. Программа старая, давно не обновлялась, однако работает отлично. Прямо на лету выполняется вставка нормального текста. Никаких шрифтов не требуется. После копирования текста с данной программы и дальнейшей вставкой его в редактор Microsoft Office Word, все буквы и символы будут читаться и с использованием любого шрифта. Первый вариант не позволяет изменить шрифт. То есть, всегда, и на каждом компьютере нужно будет инсталлировать нужные шрифты для чтения только определенного документа. А если таких документов несколько сотен? Поэтому желательно воспользоваться этой программой для декодирования.

Скачать программу и плагин для Notepad ++ Shtirlitz (даю прямую ссылку, поскольку сайта уже давно нет)

Способ 3 (онлайн).

Кто не хочет использовать программу Shtirlitz или она не работает, может использовать следующие онлайн сервисы для перекодирования (отдельные сервисы имеют ограничения по объему текста).

кракозябры

Обратите внимание, что кодирование нашей тестовой книги windows-1252. Для нас нужна кодировка windows-1251. Поэтому переходим на сервис online-decoder.com.

Там можно видеть окно, где написано «Скопируйте сюда текст». Вставляем наш непонятный текст и нажимаем на кнопку «Подбор». Такой способ будет правильно использовать если вам неизвестна система кодирования. Декодер попытается подобрать ее автоматически. Если вы знаете исходное кодирование своей кракозябры, то можете смело нажимать кнопку «Точно», указав перед этим кодирование, напротив текста «Я знаю нужные кодировки».

Открыть сервис «online-decoder.com»

кракозябры

Второй сервис «artlebedev.ru». Есть два способа для декодирования: «Просто» и «Сложно». Первый вариант работает на автомате. Второй дает возможность, при необходимости, указать исходное и конечное кодирование.

Открыть сервис «artlebedev.ru»

кракозябры

Третий онлайн сервис для декодирования текста «2cyr.com» имеет отличие от предыдущих в том, что позволяет выбирать язык. Кроме русского, доступен также и украинский язык интерфейса (и надеюсь, что кодирования также, просто не было возможности проверить).

Есть также два режима: автоматический и режим эксперта. Во втором можно указывать исходное и конечное кодирование. Рекомендуется автоматический режим. После того как вставили текст, напротив слов «Выберите кодировку :», нужно выбрать «Автоматически (рекомендуется)» и нажать на кнопку «Ок».

Открыть сервис «2cyr.com»

Все три сервиса отлично работали на моей тестовой книге в формате PDF с кракозябрами.

Способ 4 (с помощью макросов для Microsoft Office Word ).

Еще один вариант для программы Microsoft Office Word. Никаких шрифтов ставить не нужно. Создаем макрос со следующим кодом:

Код 1: «Перекодирование 1252 в 1251»

Sub Corr1252_1251()
Dim s$, i&, j&
  s = Selection
  For i = 1 To Len(s)
    j = AscW(Mid$(s, i, 1))
    If j < 256 Then
        Mid$(s, i, 1) = Chr(j)
'       Debug.Print i & vbTab & Mid$(s, i, 1) & vbTab & j & vbTab & Chr(j)
    End If
  Next
  Selection.Text = s
End Sub

Код 2: «Перекодирование 1252 в 1251 (с учетом русской буквы Ё)»

Sub changeToRus()
'
' Замена кракозябр на кириллические буквы
' CP1252 -> CP1251
'
    For i = 192 To 255
        a1 = i
        a = Trim("^u") & Trim(Str(a1))
        ' Формирование запроса для поля Найти
        sRus = Array("А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", _
        "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", _
        "а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", _
        "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я")
        ' Формирование массива кириллических букв для поля Заменить
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = a
            .Replacement.Text = sRus(i - 192)
            .Forward = True
            .Wrap = wdFindContinue
            .MatchCase = True
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        ' Выполнение замены по тексту
    Next i

        ' Замена Ё и ё
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ChrW(168)
        .Replacement.Text = "Ё"
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ChrW(184)
        .Replacement.Text = "ё"
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Выделяем вставленный текст с иероглифами. Тогда запускаем макрос на выполнение и получаем нормальный текст, который можно спокойно редактировать, изменять шрифты и т.д.

Для добавления готового макроса в Word делаем следующее:

Открываем редактор и переходим в «Вид».

кракозябры

Там находим кнопку «Макросы» и нажимаем на нее.

кракозябры

кракозябры

Даем для макроса имя (любое, оно будет автоматически изменено при полном копировании кода выше).

кракозябры

Откроется окно в котором можно заметить название нашего макроса. При желании можете оставить свое имя. Но лучше, чтобы не было ошибок, полностью заменить весь код на готовый (код смотрите сверху).

кракозябры

Как видно, макрос начинается так:

Sub названиемакроса()
дальше идет код макроса
End Sub

Название макроса может любым, но не цифры и не должно быть пробелов. Может быть так: декодирование_кракозябр_с_ё. Но не может быть так: декодирование кракозябр с ё.

То есть, для нас нужно заменить для нашего созданного пустого макроса весь текст с кодом, который показан выше.

После того как заменили, нужно закрыть окно редактирования макросов (можно нажать на иконку сохранения, хотя изменения сохраняются автоматически). Далее выделяем наш иероглифический текст, открываем макросы, выбираем из списка (если их у вас несколько) нужный и нажимаем на кнопку «Выполнить».

кракозябры

Ваш текст должен стать читабельным.

кракозябры

Источник макросов для Microsoft Office Word: http://wordexpert.ru

Как ни крути, но это не полное решение ситуации. Поиск после данных действий в самом PDF документе работать не будет. Проблема остается. Кто может подсказать ее решение, просьба писать в комментариях.

Добавить комментарий


Комментарии   

# RE: Кракозябры (иероглифы) при копировании с PDF документаЕлена Бондаренко 23.11.2020 12:02
Большое человеческое спасибо! Уже не знала что делать, книга в пдф 680 страниц, запретов в ней нет, но не копируется, хоть ты тресни. Очень помогла ваша статья, хоть частями, но всё-таки копировать можно, через онлайн-декодер. Спасибо ещё раз.
Ответить
# RE: Кракозябры (иероглифы) при копировании с PDF документаZheka 25.11.2020 22:42
Рад, что смог помочь.
Ответить
# RE: Кракозябры (иероглифы) при копировании с PDF документаbawlo 13.07.2020 20:07
Вот еще пример корректно работающего кода макроса для Word, в т.ч. с украинскими символами:

Sub Corr1252_1251()
' http://wordexpert.ru/forum/viewtopic.php?id=1278
' 19.05.2015 22:54:51
' Вот еще пример корректно работающего кода
' Выделить текст с кракозябрами и запустить макрос

'
Dim s$, i&, j&
s = Selection
' Debug.Print "_i" & " Mid$() " & "_j " & "Chr(j)"
For i = 1 To Len(s)
j = AscW(Mid$(s, i, 1))
If j < 256 Then
Mid$(s, i, 1) = Chr(j)
' Debug.Print i & vbTab & "'" & Mid$(s, i, 1) & "'" & vbTab & j & vbTab & "'" & Chr(j) & "'"
End If
Next
Selection.Text = s
End Sub
Ответить
# Спасибо за советыИван 27.05.2020 01:22
Спасибо за эффективный совет! - Помог вариант с программой-перекодировщиком.
Ответить
# КракозябрыДмитрий 17.02.2020 12:22
На дворе 2020 год, а проблема осталась! Тоже давно ищу решение.... Никакие онлайн сервисы не могут перекодировать.
Ответить