Если PDF выглядит правильно, но при вставке в текстовый редактор появляются другие символы, проверьте причину, прежде чем менять шрифты или запускать OCR. Сопоставление между фигурой, нарисованной на странице, и символом, который она представляет, может быть неправильным. Исправление текстовых ошибок PDF начинается с определения того, какая часть этого процесса не удалась.
Почему текст может выглядеть правильно, но копироваться неправильно?
Текстовое содержимое PDF может хранить исходные коды символов, специфичные для шрифта, а не текст Unicode. Программа чтения PDF использует информацию о шрифте и кодировке для поиска и рисования глифа. Копирование также требует перевода этих кодов в значимые символы.
Таким образом, рисование буквы A не гарантирует, что извлечение вернет A. ToUnicode — это сопоставление в словаре шрифтов, которое связывает исходные коды символов PDF с последовательностями символов Unicode. Это различие между отображением и извлечением текста описано в Справочник Adobe PDF, раздел 5.9.

Что на самом деле означает отображение шрифтов?
Эти три понятия связаны, но не являются взаимозаменяемыми:
| Картирование | Главная роль |
|---|---|
Таблица cmap внутри файла шрифта. | Сопоставляет коды символов с индексами глифов; В подтаблицах Unicode используются коды Unicode. |
| Кодировка PDF; составные шрифты могут использовать Encoding CMap | Интерпретирует исходные коды символов PDF и помогает найти глиф для рисования. |
PDF ToUnicode | Сопоставляет исходные коды символов PDF с текстом Unicode для копирования и извлечения. |
Для первого типа см. OpenType cmap спецификация. Обсуждаемый здесь ремонт нацелен на третий; он не перестраивает файл шрифта и не заменяет глифы на странице.
Отсутствие сопоставления ToUnicode не всегда приводит к искажению текста. Программа чтения PDF иногда может восстановить текст из стандартной кодировки, известных имен глифов или коллекции символов. И наоборот, таблица сопоставления может существовать и по-прежнему содержать неправильные ассоциации.
Сначала проверьте, является ли отображение проблемой
Скопируйте короткий отрывок в текстовый редактор и сравните его с исходной страницей:
| Симптом | Что проверить в первую очередь |
|---|---|
| Страница выглядит правильно, но скопированные символы постоянно превращаются в другие символы. | Отсутствующие или неправильные сопоставления символов |
| Вы можете выбрать только изображение, а не текст | Отсутствует текстовый слой или текст преобразован в контуры; рассмотрите исходный файл или OCR |
| Текст может быть выделен на отсканированной странице, но он не соответствует изображению | Результаты распознавания в текстовом слое OCR |
| Отдельные символы верны, но столбцы или таблицы не в порядке. | Порядок чтения и извлечение макета |
| Сама страница содержит пропущенные символы или поля. | Ресурсы шрифтов, покрытие глифов или кодировка отображения. |
Это подсказки для устранения неполадок, а не диагнозы, основанные только на внешнем виде. Встраивание шрифтов и правильное копирование также являются отдельными проблемами; см. Встраивание шрифтов PDF и их подмножества.
Как исправить скопированный текст, используя исходные глифы?
Предположим, что исходный код <0001> в определенном шрифте рисует A, но неправильно сопоставляется с 错 (U+9519). Это иллюстративный фрагмент сопоставления, а не полный файл CMap:
Before: <0001> <9519>
After: <0001> <0041>
<0001> — это исходный код PDF в этом шрифте, а не символ Unicode U+0001. Сопоставление его с U+0041 указывает, что глиф представляет A. ligature (несколько букв, использующих один глиф) также может нуждаться в сопоставлении с несколькими символами Unicode, например fi.
Убедившись, что восстановление сопоставления подходит, используйте PDF инструмент для восстановления текста:
- Выберите PDF, затем выберите шрифт для исправления.
- Сравните исходные глифы в сетке и введите правильный текст под каждым глифом.
- Экспортируйте отремонтированный PDF и сохраните оригинал для сравнения.
Изменение применяется везде, где используются один и тот же шрифт и исходный код. Проверяйте разные шрифты отдельно, даже если их имена совпадают. Если OCR неправильно распознал хотя бы одно слово, глобальное переназначение символа может также повредить уже правильный текст.
Как проверить ремонт?
Снова откройте экспортированный файл, скопируйте и найдите образец текста в целевой программе чтения PDF. Проверьте другие вхождения того же кода и шрифтов, которые вы не редактировали. Сравните внешний вид страницы и проверьте пунктуацию, лигатуры и цифры, а не проверяйте только первый неверный символ.
Некоторые PDF-файлы также используют ActualText для предоставления замещающего текста, который может предпочесть вспомогательное программное обеспечение. Если изменение ToUnicode не решает проблему, проверьте наличие этого переопределения. Текущий инструмент предупреждает о ActualText, но не редактирует его. См. PDF Объяснение ассоциации.
В случае ошибок OCR исправьте или распознайте текстовый слой еще раз. Если у вас есть исходный файл макета, рассмотрите возможность его исправления и экспорта нового PDF. К файлам, которые не открываются или вызывают структурные ошибки, нужен другой подход; см. когда уместно восстановление формата PDF.
Как только вы обнаружите проблему с сопоставлением символов шрифта, исправьте ее с помощью локальный инструмент восстановления текста PDF. Файлы обрабатываются в вашем браузере без их загрузки. После экспорта вам все равно следует проверить скопированный текст и внешний вид страницы.


