Text Ersetzen in ausgewählten Dateien Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

MichaelPundt
Posts: 5
Joined: 15 Feb 2024, 05:52

Text Ersetzen in ausgewählten Dateien

Post by MichaelPundt » 15 Feb 2024, 06:07

Ich benutze bereits ein Autohotkey Skript, um systemweit Rechtschreibfehler per Autokorrektur zu korrigieren. Es funktioniert prima und sieht im Prinzip so aus.

Code: Select all

#IfWinNotActive ahk_exe WINWORD.EXE
::Biespiel::Beispiel
#IfWinActive
Nun würde ich gerne mit Autohotkey Fehler in einer bereits fertigen Textdatei korrigieren. (Es handelt sich um die fehlerhafte OCR-Erkennung einer Frakturschrift.)
Dazu habe ich bereits nach obigem Beispiel eine Liste von Fehlern und Korrekturen erstellt. Hier ein Auszug:

Code: Select all

::wveg::weg
::tratie::kratie
::?tein::stein
::Dom::Vom
:: lahr:: Jahr
Wie kann ich nun die Korrekturen anwenden? Und zwar ...
1. rückwirkend
2. nur in dieser Datei

Für Eure Hilfe wäre ich sehr dankbar.

Frischling Michael ;)

just me
Posts: 9466
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Text Ersetzen in ausgewählten Dateien

Post by just me » 15 Feb 2024, 08:05

Moin und Willkommen im Club,

grundsätzlich kannst Du Dein Vorhaben mit AHK umsetzen. Problemlos geht es, wenn die OCR-Datei im einfachen Textformat (.txt) vorliegt, wie z.B. mit Editor/Notepad erstellt.
Dann kannst Du sie einlesen (FileRead oder FileOpen()), mit Anweisungen wie StrReplace() oder RegExReplace() die Ersetzungen ausführen und den geänderten Inhalt dann zurückschreiben. Bei anderen Dateiformaten wird es zumindest komplizierter.

MichaelPundt
Posts: 5
Joined: 15 Feb 2024, 05:52

Re: Text Ersetzen in ausgewählten Dateien

Post by MichaelPundt » 15 Feb 2024, 08:25

Danke für die Info "just me". Der Text liegt tatsächlich als *.txt vor. Allerdings verstehe ich nicht, wie ich die Einlese- und Ersetzungsbefehle in das AHK Script schreiben muss? Kannst Du mir damit helfen?

gero
Posts: 171
Joined: 02 Oct 2013, 05:36

Re: Text Ersetzen in ausgewählten Dateien

Post by gero » 15 Feb 2024, 11:20

Hallo MichaelPundt ... geht von der Sache her mit AHK ... ABER:
Es gibt so viele Bedingungen und Ausnahmen (Gross - und Kleinschreibung, Zahlen z.B. 1 statt 7, fehlende Spaces, Sonderzeichen plus die Kreativität deiner OCR Software ... alles das müsstest du in einer Korrekturdatei erfassen (falsch1->richtig1, falsch2->richtig1, falsch3->richtig1) und ständig aktualisieren ... und du kannst dir letztlich nie sicher sein, dass deine OCR nicht neue Ideen hat.
Ums Korrekturlesen wirst du imho nie herum kommen ... aber prinzipiell halt möglich.
Deine Korrekturdatei wird den kompletten Duden und mehr beinhalten müssen, da auch "falsch" s.o. unterschiedlich falsch sein kann ....
Willst du das wirklich ?

gruss
gero

OldSchool v1 Beispiel:
Hier ist so ein Fall: Heller oder Keller / laut oder kaut ? .... hier brauchst du KI.

Code: Select all

KOR := "Ber=Der`nHunt=Hund`nAplel=Apfel`nbällt=bellt`nretrun=return`nHeller=Keller`nkaut=laut"
OCRTEXT := "Ber Hunt bällt kaut im Heller."
MsgBox,4096,Info,% OCRTEXT
StringSplit,a,KOR,`n
Loop,% a0
	{
	StringSplit,b,a%A_Index%,=
	StringReplace,b2,b2,`r,,
	StringReplace,OCRTEXT,OCRTEXT,%b1%,%b2%,all
	}
MsgBox,4096,Info,% OCRTEXT
edit / ... gibt noch viele andere Möglichkeiten nicht zum Ziel zu kommen ... ;)

MichaelPundt
Posts: 5
Joined: 15 Feb 2024, 05:52

Re: Text Ersetzen in ausgewählten Dateien

Post by MichaelPundt » 15 Feb 2024, 16:27

Hallo Gero, ich bin tatsächlich recht erfahren mit Fraktur-Übersetzungsfehlern, weil ich schon mehrere Bücher korrigiert habe. Es sind immer die gleichen Fehler wie das Verwechseln von f und s. Die Zahl der Silben, die ich dafür in die Korrekturmaske eingeben muss, ist dagegen begrenzt. Mir würde das sehr helfen, weil dieser Frakturtext voraussichtlich nicht der letzte sein wird, den ich von OCR übersetzen lasse.
KI wie z.B. das Transkribus Projekt ist leider noch lange nicht so weit, um wirklich eine Hilfe zu sein. Da funktioniert Tesseract mit anschließendem händischen Korrigieren besser.
Also, wenn mir jemand weiterhelfen könnte, wäre ich wirklich sehr dankbar.

gero
Posts: 171
Joined: 02 Oct 2013, 05:36

Re: Text Ersetzen in ausgewählten Dateien

Post by gero » 15 Feb 2024, 16:48

Hallo ... steht doch alles da .... erstelle eine Datei mit den "Lieblingsfehlern" deiner OCR und deren Korrekturen und lass diese wie im Code oben über deinen Text laufen.
Code oben kannst du 1:1 übernehmen ... oder auf noch andere Lösungen hier warten.

gruss
gero

MichaelPundt
Posts: 5
Joined: 15 Feb 2024, 05:52

Re: Text Ersetzen in ausgewählten Dateien

Post by MichaelPundt » 16 Feb 2024, 02:04

Sorry Gero, ich habe deinen Code nicht verstanden.
Meine Hoffnung war, dass ich meine schon fertige Liste mit

Code: Select all

::Fehler::Korrektur
verwenden kann. Soweit ich dein Beispiel verstehe, ist das nicht möglich, ja?

gero
Posts: 171
Joined: 02 Oct 2013, 05:36

Re: Text Ersetzen in ausgewählten Dateien

Post by gero » 16 Feb 2024, 06:51

Hi MichaelPundt ... gab vielleicht ein paar Missverständnisse .... mein Code ist nur ein Vorschlag.
Ich würde eine Datei anlegen (FEHLER.TXT), die folgenden Aufbau hat:

Code: Select all

FALSCH=RICHTIG
FALSCH=RICHTIG
FALSCH=RICHTIG
.
.
FALSCH=RICHTIG
Gib deiner OCR-Datei den Namen OCRTEXT.TXT und leg sie am Desktop ab.
Dann lass das Script laufen.
Alles wird mit allem verglichen und landet als korrigierte Datei auf dem Desktop.

Code: Select all


;	die Datei FEHLER.TXT wird eingelesen:
FileRead,KOR,%A_Desktop%\FEHLER.TXT  ; Path angeben
;	die Datei von OCR wird eingelesen:
FileRead,OCRTEXT,%A_Desktop%\OCRTEXT.TXT  ; Path angeben
StringSplit,a,KOR,`n
Loop,% a0
	{
	StringSplit,b,a%A_Index%,=
	b2 := StrReplace(b2,"`r") 
	OCRTEXT := StrReplace(OCRTEXT,b1,b2)
	}
TC := A_Sec . A_MSec
FileAppend,% OCRTEXT,%A_Desktop%\KORREKTUR_%TC%.TXT
Wenn die Fehlerdatei und OCR-Datei nicht allzu umfangreich ist sollte das recht flott gehen.

gruss
gero
Last edited by gero on 17 Feb 2024, 18:52, edited 1 time in total.

MichaelPundt
Posts: 5
Joined: 15 Feb 2024, 05:52

Re: Text Ersetzen in ausgewählten Dateien

Post by MichaelPundt » 16 Feb 2024, 13:26

Ach prima. Das habe ich verstanden. Danke schön.

gero
Posts: 171
Joined: 02 Oct 2013, 05:36

Re: Text Ersetzen in ausgewählten Dateien

Post by gero » 18 Feb 2024, 08:08

Kleiner Nachtrag:
Wegen der Unterscheidung von Gross- und Kleinschreibung bei der Korrektur sowie eine Verbesserung der Performace sollten diese 3 Zeilen an den Anfang des Scripts hinzugefügt werden:

Code: Select all

SetBatchLines,-1
ListLines,OFF
StringCaseSense, On ;Off Locale
gruss
gero

Post Reply

Return to “Ich brauche Hilfe”