Чи можливо видалити лігатури з скопійованого тексту?


10

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

Чи є простий спосіб їх видалити під час копіювання тексту з PDF? (тобто, коли я вставляю, я хотів би, щоб це було наклеєне як ff).

Я копіюю багато тексту з цих PDF-файлів у відповіді на стек переповнення і вважаю, що лігатури в кращому випадку неприємні (добре, я визнаю, я дуже прискіпливий :-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.


2

Читач Evince здається декодувати лігатури , коли я відчув це.

Btw. для документів pdflatex ви можете використовувати це в преамбулі для відображення лігатур у документі PDF, але копіювати окремі символи:

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

1

Однією з можливостей було б використовувати улюблений текстовий редактор і просто замінити їх.

Іншим способом було б написати сценарій, який використовує sed. .. але я боюся, що це буде * NIX-системи.


GnuWin32 і у вас є sed на windows.
mbq

@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)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.