9

У меня есть несколько PDF-файлов, которые содержат лигатуры в тексте (например, ff объединяется в один символ, ).

Есть ли простой способ удалить их при копировании текста из PDF? (т.е. когда я вставляю, я бы хотел, чтобы вставлялся как ff).

Я копирую много текста из этих PDF-файлов в ответы на Stack Overflow и нахожу лигатуры в лучшем случае противными (хорошо, я признаю, я действительно требователен :-P); лигатуры также не отображаются правильно при копировании в другие места (например, если я копирую их в Блокнот, они отображаются как блоки).

Я не могу изменить PDF-файлы.

Я использую как Adobe Acrobat Reader, так и Foxit Reader, но я был бы готов попробовать новый PDF reader.

5 ответов5

2

Читатель Evince кажется декодировать лигатуры , когда я испытал это.

Btw. для документов pdflatex вы можете использовать это в преамбуле для отображения лигатур в документе PDF, но копировать отдельные символы:

\input{glyphtounicode.tex}
\pdfgentounicode=1 %
1

Одна из возможностей - использовать ваш любимый текстовый редактор и просто заменить их.

Другой способ - написать скрипт, который использует sed . ..но это будет только * NIX-Systems, боюсь.

1

В питоне это будет:

import unicodedata
# \uFB00 is the ff ligature.
unicodedata.normalize('NFKD',u'\uFB00').encode('ascii','ignore')

Вы можете объединить это с pyPdf для чтения файлов PDF.

0

Мой способ был просто скопировать и вставить из PDF в блокнот (чтобы удалить любое форматирование), а затем из блокнота в Microsoft Word.

В Word все лигатуры заменены другими шрифтами форматирования.

Я использую поиск и замену для каждого из них (например, ^ l для ручного прерывания строки и ^ m для ручного прерывания страницы и т.д., Вы можете легко найти все онлайн) и заменяю на правильную форму.

В 4 или 5 шагов я покрываю все возможности довольно быстро. Также полезно удалить дополнительные прерывания абзаца (^ P)

0

Я ответил на аналогичный вопрос более подробно - почему текст `fi` обрезается, когда я копирую из PDF или печатаю документ?

Вы можете заменить "разбитые" слова в скопированном тексте, если у вас есть отображение из разбитых слов в исходные слова. Я написал скрипт для генерации этого сопоставления, удалив лигатуры из слов и проверив, является ли полученное слово уникальным. Для моего словаря английских слов, 99,5% всех возможных сломанных слов являются заменяемыми, и 92,3% слов, которые содержат последовательность лигатур (ff , fi , fl , ffi или ffl), могут быть восстановлены. Разница между этими двумя процентами связана с удивительно большим количеством законных слов, которые создаются путем удаления связок из других законных слов (таких как butterfly --> buttery масло , fluffs --> us и misfits --> mists).

Вот CSV из гарантированно заменяемых "сломанных" слов (и слов, которыми они раньше были): http://www.filedropper.com/brokenligaturewordfixes

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .