Czy można usunąć ligatury z skopiowanego tekstu?

10

Mam kilka plików PDF, które zawierają ligatury w tekście (np. ffSą łączone w pojedynczy znak, ).

Czy istnieje prosty sposób na ich usunięcie podczas kopiowania tekstu z pliku PDF? (tzn. kiedy wklejam, chciałbym, aby był wklejony jako ff).

Kopiuję dużo tekstu z tych plików PDF do odpowiedzi w Stack Overflow i uważam, że ligatury są co najmniej wstrętne (ok, przyznaję, jestem naprawdę wybredna :-P); ligatury również nie wyświetlają się poprawnie po skopiowaniu do innych miejsc (np. jeśli skopiuję je do Notatnika, pojawią się jako bloki).

Nie mogę modyfikować plików PDF.

Używam zarówno Adobe Acrobat Reader, jak i Foxit Reader, ale chętnie wypróbuję nowy czytnik PDF.

James McNellis
źródło

Odpowiedzi:

3

W pythonie byłoby to:

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

Możesz połączyć to z pyPdf, aby odczytać pliki pdf.

SiggyF
źródło
2

Czytelnik ewince zdaje się dekodować ligatury, kiedy to testowałem.

Btw. w przypadku dokumentów pdflatex można użyć tego w preambule, aby wyświetlić ligatury w dokumencie PDF, ale skopiować pojedyncze znaki:

\ input {glyphtounicode.tex}
\ pdfgentounicode = 1%
do
źródło
1

Jedną z możliwości byłoby użycie ulubionego edytora tekstu i po prostu ich zastąpienie.

Innym sposobem byłoby napisanie skryptu, który wykorzystuje sed. .. ale obawiam się, że byłoby to tylko * Systemy NIX.

Konstabl
źródło
GnuWin32 i masz sed w systemie Windows.
mbq
@mbq: Jest to również uwzględnione? bardzo dobre. Dzięki.
Bobby
0

Bardziej szczegółowo odpowiedziałem na podobne pytanie - Dlaczego tekst `fi` jest odcinany, gdy kopiuję z pliku PDF lub drukuję dokument?

Możesz zamienić „złamane” słowa w skopiowanym tekście, jeśli masz mapowanie ze złamanych słów na oryginalne. Napisałem skrypt do wygenerowania tego mapowania poprzez usunięcie ligatur ze słów i sprawdzenie, czy powstałe słowo jest unikalne. Dla mojego słownika angielskich słów, 99,5% wszystkich możliwych rozbitych słowa są wymienne, i 92,3% słów, które zawierają sekwencję ligatury ( ff, fi, fl, ffi, i ffl) można odzyskać. Różnica pomiędzy tymi dwoma procentach jest z uwagi na zaskakująco dużą liczbę słów dozwolonych, które są tworzone przez usunięcie więzadeł innych uzasadnionych słowa (na przykład butterfly --> buttery, fluffs --> usi misfits --> mists).

Oto plik CSV „łamanych” słów, które można zastąpić (i słów, którymi były kiedyś): http://www.filedropper.com/brokenligaturewordfixes

Jan Van Bruggen
źródło
Wspaniale, że oferujesz ten plik. Realistycznie jednak nikt o zdrowym rozsądku nie pobierałby nieznanego pliku (zwłaszcza od nowego użytkownika). Nie bierz go osobiście, jeśli plik nie generuje dużego ruchu. To nie znaczy, że twoje wysiłki nie są doceniane.
fixer1234
Tak, rozumiem. Chciałbym, aby istniał prosty sposób weryfikacji takich linków, a nawet zagwarantowania typu pliku. Dzięki!
Jan Van Bruggen,
0

Moim sposobem było po prostu skopiować i wkleić z pliku PDF do notatnika (aby usunąć formatowanie), a następnie z notatnika do programu Microsoft Word.

W programie Word wszystkie ligatury są zmieniane za pomocą innych czcionek formatujących.

Używam znajdź i zamień dla każdego z nich (jak ^ l dla ręcznego przerywania linii i ^ m dla ręcznego przerywania strony i tak dalej, wszystko można łatwo znaleźć online) i zastępuję prawidłową formą.

W 4 lub 5 krokach dość szybko obejmuję wszystkie możliwości. Przydatne jest również usunięcie dodatkowych przerw w akapicie (^ P)

Gentili Giuliano
źródło