Ich habe mit pdftotext ein pdf konvertiert. Das hat mehr oder weniger geklappt. Was überhaupt nicht funktioniert hat ist die Silbentrennung.
So sieht es im pdf aus:
<code>dies ist eine Test-$
zeile und das ist eine$
weitere Testzeile mit Silben-$
trennung.</code>
So sieht es in der Textdatei aus:
<code>dies ist eine Test $
zeile und das ist eine$
weitere Testzeile mit Silben $
trennung.</code>
Es fehlt der Trennungsstrich, dafür steht dort ein whitespace, der aber kein whitespace ist. Die Fläche ist einfach leer.
Ich habe das mit diesem Befehl getestet:
<code>sed 's/\(.*\) /\1@/'</code>
Hierbei wird das letzte whitespace einer Zeile durch ein @ ersetzt. Das sieht im Ergebnis so aus:
<code>dies ist eine@Test $
zeile und das ist@eine$
weitere Testzeile mit@Silben $
trennung.</code>
Die Zeilenumbrüche $ kann ich mit sed, tr oder awk beliebig manipulieren, aber nicht das "whitespace" davor.
Wenn ich gvim aufrufe und versuche die "whitespaces" die keine whitespaces sind, durch einen Trennstrich - zu ersetzen, dann klappt das. Ich markiere eines dieser "whitespace" mit der Maus und ersetze anschließend in der gesamten Textdatei diese "whitespaces" durch den Trennstrich. Gvim hat dafür extra ein Menü mit Auswahloptionen. Die echten whitespaces bleiben dabei unangetastet.
Ich möchte das Ersetzen automatisieren. Wie mache ich das?
[erledigt] whitespaces ersetzen die keine whitespaces sind
[erledigt] whitespaces ersetzen die keine whitespaces sind
Zuletzt geändert von mino23 am 31.08.2022 14:58:10, insgesamt 1-mal geändert.
Re: whitespaces ersetzen die keine whitespaces sind
Du müsstest mal mit einem hexeditor schauen welches Zeichen da steht. Vermutlich ist es 0xA0 (non-breaking space) oder 0xAD (soft hyphen).
Wenn du weißt was pdftotext da hinschreibt, sollte es ein einfaches sein, dass mit sed zu ersetzen.
Wenn du weißt was pdftotext da hinschreibt, sollte es ein einfaches sein, dass mit sed zu ersetzen.
Re: whitespaces ersetzen die keine whitespaces sind
0xAD war es in meinem Fall, dazu noch zwei andere unentdeckte.
Mit der hex Anzeige des vim bin ich nicht klar gekommen. Ich habe mir daher die betreffende Datei mit
aufgerufen. Das zeigt mir alle Zeichen außerhalb des ASCII Bereichs in rot an. Leider auch die deutschen Umlaute. Danach bin ich die Zeichen mit sed angegangen, wobei ich das Zeichen mit der Maus markierte und anschließend händisch in die sed Zeile kopiert habe.
Ursprünglich wollte ich die pdf Datei mit pdf2htmlex und nicht mit pdftotext konvertieren. Leider wird das Programm nicht mehr gepflegt und wird nicht mehr für Debian angeboten. Ansonsten gäbe es noch PDFBox. Auf meinem System hätte ich mir dafür rund 700 MB zusätzlich an Software installieren müssen. Was es kann weiß ich nicht. Die Quellen dazu sind rar. pdf2htmlex hingegen wird gelobt. Im Vergleich zu pdftotext ist es wohl ein Unterschied wie der einer Axt zu einer Motorsäge.
Mit der hex Anzeige des vim bin ich nicht klar gekommen. Ich habe mir daher die betreffende Datei mit
Code: Alles auswählen
grep --color='auto' -P -n "[^[:ascii:]]"
Ursprünglich wollte ich die pdf Datei mit pdf2htmlex und nicht mit pdftotext konvertieren. Leider wird das Programm nicht mehr gepflegt und wird nicht mehr für Debian angeboten. Ansonsten gäbe es noch PDFBox. Auf meinem System hätte ich mir dafür rund 700 MB zusätzlich an Software installieren müssen. Was es kann weiß ich nicht. Die Quellen dazu sind rar. pdf2htmlex hingegen wird gelobt. Im Vergleich zu pdftotext ist es wohl ein Unterschied wie der einer Axt zu einer Motorsäge.
Re: whitespaces ersetzen die keine whitespaces sind
Danke fuer den ausfuehrlichen Bericht.
Du haettest die Umlaute einfach zwischen die zwei schliessenden eckigen Klammern schreiben koennen, dann waeren sie auch ignoriert worden:mino23 hat geschrieben:31.08.2022 14:57:16Ich habe mir daher die betreffende Datei mit
aufgerufen. Das zeigt mir alle Zeichen außerhalb des ASCII Bereichs in rot an. Leider auch die deutschen Umlaute.Code: Alles auswählen
grep --color='auto' -P -n "[^[:ascii:]]"
Code: Alles auswählen
grep --color='auto' -P -n "[^[:ascii:]ÄÖÜäöüß]"
Use ed once in a while!
Re: [erledigt] whitespaces ersetzen die keine whitespaces sind
@Meillo, danke. Habe ich mir für den nächsten Einsatz gemerkt.