Ist es möglich, Ligaturen aus kopiertem Text zu entfernen?

10

Ich habe ein paar PDFs, die Ligaturen im Text enthalten (z. B. ffin einem einzigen Zeichen zusammengefasst ).

Gibt es eine einfache Möglichkeit, sie beim Kopieren des Textes aus der PDF-Datei zu entfernen? (dh wenn ich einfüge, möchte ich, dass das als eingefügt wird ff).

Ich kopiere viel Text aus diesen PDFs in Antworten auf Stack Overflow und finde die Ligaturen bestenfalls widerlich (ok, ich gebe zu, ich bin wirklich wählerisch :-P); Die Ligaturen werden auch beim Kopieren an andere Stellen nicht korrekt angezeigt (z. B. wenn ich sie in den Editor kopiere, werden sie als Blöcke angezeigt).

Ich kann die PDFs nicht ändern.

Ich verwende sowohl Adobe Acrobat Reader als auch Foxit Reader, bin aber offen für einen neuen PDF-Reader.

James McNellis
quelle

Antworten:

3

In Python wäre dies:

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

Sie können dies mit pyPdf kombinieren , um die PDF-Dateien zu lesen.

SiggyF
quelle
2

Der Leser evince scheint zu dekodieren Ligatur , wenn ich diese getestet.

Übrigens. Für pdflatex-Dokumente können Sie dies in der Präambel verwenden, um Ligaturen im PDF-Dokument anzuzeigen, aber einzelne Zeichen zu kopieren:

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

Eine Möglichkeit wäre, Ihren bevorzugten Texteditor zu verwenden und ihn einfach zu ersetzen.

Eine andere Möglichkeit wäre, ein Skript zu schreiben, das verwendet sed. ..aber das wäre nur * NIX-Systems, fürchte ich.

Bobby
quelle
GnuWin32 und Sie haben auf Windows sediert.
mbq
@mbq: Ist es auch darin enthalten? sehr gut. Danke.
Bobby
0

Ich habe eine ähnliche Frage ausführlicher beantwortet. Warum wird der Text "fi" abgeschnitten, wenn ich aus einer PDF-Datei kopiere oder ein Dokument drucke?

Sie können die "gebrochenen" Wörter im kopierten Text ersetzen, wenn Sie eine Zuordnung von gebrochenen Wörtern zu Originalwörtern haben. Ich habe ein Skript geschrieben, um diese Zuordnung zu generieren, indem ich Ligaturen aus Wörtern entfernt und prüfe, ob das resultierende Wort eindeutig ist. Für meinen Wörterbuch der englischen Worte, 99,5% aller möglichen gebrochenen Worte sind austauschbar, und 92,3% der Worte , die eine Ligatur - Sequenz enthalten ( ff, fi, fl, ffi, oder ffl) zurückgewonnen werden. Der Unterschied zwischen diesen beiden Prozentsatz beruhen auf die überraschend große Anzahl von Worten , die legitimen durch Bänder aus anderen legitimen Worten (wie das Entfernen erstellt werden butterfly --> buttery, fluffs --> usund misfits --> mists).

Hier ist eine CSV mit garantiert ersetzbaren "kaputten" Wörtern (und den Wörtern, die sie früher waren): http://www.filedropper.com/brokenligaturewordfixes

Jan Van Bruggen
quelle
Es ist großartig, dass Sie die Datei anbieten. Realistisch gesehen würde jedoch niemand mit gesundem Menschenverstand eine unbekannte Datei herunterladen (insbesondere von einem brandneuen Benutzer). Nehmen Sie es nicht persönlich, wenn die Datei nicht viel Verkehr hat. Das bedeutet nicht, dass Ihre Bemühungen nicht gewürdigt werden.
Fixer1234
Ja ich verstehe. Ich wünschte, es gäbe eine einfache Möglichkeit, solche Links zu überprüfen oder sogar nur den Dateityp zu garantieren. Vielen Dank!
Jan Van Bruggen
0

Mein Weg war einfach, von der PDF-Datei in den Editor zu kopieren und einzufügen (um jegliche Formatierung zu entfernen) und dann vom Editor in Microsoft Word.

In Word werden alle Ligaturen mit anderen Formatierungsschriftarten geändert.

Ich verwende find and replace für jeden von ihnen (wie ^ l für manuelle Leitungsunterbrechung und ^ m für manuelle Seitenunterbrechung usw., Sie können alles leicht online finden) und ersetze durch korrektes Formular.

In 4 oder 5 Schritten decke ich alle Möglichkeiten ziemlich schnell ab. Es ist nützlich, zusätzliche Absatzunterbrechungen zu entfernen (^ P).

Gentili Giuliano
quelle