Кракозябри (ієрогліфи) при копіюванні із 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 документа Павло 14.06.2021, 11:10
Дуже дякую, допомогли. Все чітко і по факту.
# RE: Кракозябри (ієрогліфи) при копіюванні із PDF документа Дімас 18.04.2021, 23:50
Zheka, величезне Вам дякую, ви врятували мене і мій курсач!
# RE: Кракозябри (ієрогліфи) при копіюванні із PDF документа Zheka 18.04.2021, 23:54
Радий був допомогти.