Можно ли удалить лигатуры из скопированного текста?

10

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

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

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

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

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

Джеймс МакНеллис
источник

Ответы:

3

В Python это будет:

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

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

SiggyF
источник
2

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

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

\ Вход {glyphtounicode.tex}
\ pdfgentounicode = 1%
пока
источник
1

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

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

Бобби
источник
GnuWin32 и вы сидели на окнах.
МБК
@mbq: Это также входит в это? отлично. Спасибо.
Бобби
0

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

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

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

Ян Ван Брюгген
источник
Здорово, что вы предлагаете файл. Реально, однако, никто со здравым смыслом не загрузит неизвестный файл (особенно от совершенно нового пользователя). Не принимайте это на свой счет, если файл не получает много трафика. Это не значит, что ваши усилия не оценены.
fixer1234
Да, я понял. Хотелось бы, чтобы был простой способ проверить ссылки вроде этого или даже просто гарантировать тип файла. Спасибо!
Ян Ван Брюгген,
0

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

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

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

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

Джентили Джулиано
источник