Est-il possible de supprimer les ligatures du texte copié?

10

J'ai quelques PDF qui contiennent des ligatures dans le texte (par exemple, ffsont combinés en un seul caractère, ).

Existe-t-il un moyen simple de les supprimer lors de la copie du texte du PDF? (c'est-à-dire que lorsque je colle, j'aimerais que le soit collé ff).

Je copie beaucoup de texte de ces PDF dans les réponses sur Stack Overflow et je trouve les ligatures au mieux désagréables (ok, j'avoue, je suis vraiment difficile :-P); les ligatures n'apparaissent pas non plus correctement lorsqu'elles sont copiées dans d'autres endroits (par exemple, si je les copie dans le Bloc-notes, elles apparaissent sous forme de blocs).

Je ne peux pas modifier les PDF.

J'utilise à la fois Adobe Acrobat Reader et Foxit Reader, mais je serais prêt à essayer un nouveau lecteur PDF.

James McNellis
la source

Réponses:

3

En python, ce serait:

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

Vous pouvez combiner cela avec pyPdf pour lire les fichiers pdf.

SiggyF
la source
2

Le lecteur Evince semble ligatures decode quand je teste cela.

Btw. pour les documents pdflatex, vous pouvez utiliser ceci dans le préambule pour afficher les ligatures dans le document PDF mais copier des caractères individuels:

\ input {glyphtounicode.tex}
\ pdfgentounicode = 1%
jusqu'à
la source
1

Une possibilité serait d'utiliser votre éditeur de texte préféré et de simplement le remplacer.

Une autre façon serait d'écrire un script qui utilise sed. ..mais ce ne serait que * NIX-Systems, je le crains.

Policier
la source
GnuWin32 et vous avez sed sur windows.
mbq
@mbq: C'est aussi inclus dans ça? très bon. THX.
Bobby
0

J'ai répondu à une question similaire plus en profondeur - Pourquoi le texte «fi» est-il coupé lorsque je copie à partir d'un PDF ou que j'imprime un document?

Vous pouvez remplacer les mots «cassés» dans le texte copié si vous avez un mappage des mots cassés aux mots originaux. J'ai écrit un script pour générer ce mappage en supprimant les ligatures des mots et en vérifiant si le mot résultant est unique. Pour mon dictionnaire de mots anglais, 99,5% de tous les mots possibles cassés sont remplaçables, et 92,3% des mots qui contiennent une séquence de ligatures ( ff, fi, fl, ffiou ffl) peut être récupéré. La différence entre ces deux pourcentages est dû au nombre étonnamment élevé de mots légitimes qui sont créés en supprimant les ligaments d'autres mots légitimes (comme butterfly --> buttery, fluffs --> us, et misfits --> mists).

Voici un CSV de mots "cassés" remplaçables garantis (et les mots qu'ils étaient): http://www.filedropper.com/brokenligaturewordfixes

Jan Van Bruggen
la source
C'est génial que vous offriez le fichier. En réalité, cependant, personne de bon sens ne téléchargerait un fichier inconnu (en particulier à partir d'un nouvel utilisateur). Ne le prenez pas personnellement si le fichier ne reçoit pas beaucoup de trafic. Cela ne signifie pas que vos efforts ne sont pas appréciés.
fixer1234
Oui, je comprends. Je souhaite qu'il y ait un moyen simple de vérifier des liens comme ça, ou même simplement de garantir le type de fichier. Merci!
Jan Van Bruggen
0

Ma façon était simplement de copier et coller du PDF vers le bloc-notes (pour supprimer toute mise en forme), puis du bloc-notes vers Microsoft Word.

Dans Word, toutes les ligatures sont modifiées avec d'autres polices de mise en forme.

J'utilise find et replace pour chacun d'eux (comme ^ l pour l'interruption manuelle de la ligne et ^ m pour l'interruption manuelle de la page et ainsi de suite, vous pouvez tous les trouver facilement en ligne) et je remplace par un formulaire correct.

En 4 ou 5 étapes, je couvre toutes les possibilités assez rapidement. Il est également utile de supprimer les interruptions de paragraphe supplémentaires (^ P)

Gentili Giuliano
la source