Tipp-/Scanfehler bzw. Schreibweisen ohne Umlaute korrigieren (Python/Calibre)

Code-Stücke können hier veröffentlicht werden.
Antworten
belegear
User
Beiträge: 1
Registriert: Dienstag 19. Mai 2020, 00:29

Dienstag 19. Mai 2020, 02:26

Zum zusammenstellen meiner Kurzgeschichten-Sammlungen nutze ich Calibre. Die Texte stammen aus verschiedensten Quellen und wurden, vor Erhalt, in verschiedensten Formen konvertiert.

Die meisten Probleme lassen sich relativ einfach mit der "search & replace"-Funktion mit RegEx lösen.
Aber diese Lösungen sind absolut, wenn ich z.B. ae durch ä ersetzen lasse oder ss durch ß, wird dies ohne Rücksicht auf Richtigkeit getan.

Bevor ich meinen letzten Rechner schrottete hatte ich einen Python-Code für dieses Problem, für die Englische Sprache gefunden, (bin durch Zufall darauf gestoßen,) in Unkenntnis der Programmiersprache, sowie des Englischen hatte ich es mir irgendwie hingemogelt.
Daher weiß ich jetzt was ich möchte und habe keine blasse Ahnung wie ich selbst es erstellen soll, denn für nur eine Anwendung lohnt es nicht Python zu lernen, bin froh, RegEx relativ gut zu meistern.

Ich hoffe, andere sind ebenfalls am Thema interessiert, und wenn auch nur an der Herausforderung,
und Ihr könnt mir hierbei helfen - Danke!


Die Herausforderung:

Den Text würde ich gerne wie folgt aufrufen:

Code: Alles auswählen

>[^<>]+<
oder mit

Code: Alles auswählen

(?<=>)[^<>]+(?=<)
dann sollte in Python
1. eine Abstimmung der Worte im Textblock mit dem geladenen Dictionary erfolgen.
2. bei den Worten die mit false zurückgegeben werden wird die 1. Auswechselung vorgenommen
3. eine Abstimmung der Worte mit dem geladenen Dictionary erfolgt.
4. bei den Worten die mit false zurückgegeben werden wird die 2. Auswechselung vorgenommen
...
n. Worten die mit true zurückgegeben werden, werden in den Text ausgegeben.

Die "Versuche" sollten variable gestaltet werden z.B.

ß könnte nacheinander mit s, ss oder sss oder gar ßs ersetzt werden um ein true zu erhalten.

ae könnte nacheinander mit ä, Ä oder Ae oder gar ea, Ea ersetzt werden um ein true zu erhalten.

I11 könnte nacheinander mit W, w, M oder m ersetzt werden um ein true zu erhalten.


Die zweite Schwierigkeitsstufe wäre dann, bei Wörtern wie Reisverschluß mehr als eine Ersetzung vor der Prüfung vorzunehmen.

Und die dritte Schwierigkeitsstufe wäre dann, eine Behinderung zwischen den Auswechselungen auszuschließen.

I11irkiich unsehiine 5centcliler1 (Wirklich unschöne Scanfehler!)


Und wichtig ist, das der Code im Python von Ebook-edit (Calibre) läuft.

Infos: https://manual.calibre-ebook.com/de/
Antworten