Wörter nach Silbentrennung wieder zusammenfassen

Alexander O. hinzugefügt 2 Jahren her
in Prüfung

Hallo,

es ist sicherlich keine Idee, aber eine Anregung. Mein OCR-Programm hat eingescannte Bilder analysiert und Texte auf diesen Bildern mit entsprechenden Trennzeichen extrahiert. Wenn ich jetzt bspw. ein Wörterliches Zitat definiere, übernimmt C6 den ganzen Text, auch die extrahierten Trennzeichen.

C6 macht u.a. Textbearbeitung und kann bspw. Absätze und Tabulatoren entfernen. Wäre es möglich, dass C6 auch Wörter wieder verbindet? Zum Beispiel, auf dem Snapshot sind zwei Wörter "experienc- ing" und "activ- ity", die zusammengefasst sein sollen.

Grüße, Alexander

Kommentare (5)

Foto
1

Hallo Alexander,

vielen Dank für Ihre Anregung.

Ihren Vorschlag erfasse ich gerne für unsere Entwickler.

Viele Grüße

Jana

Foto
1

Ich habe mir für Autohotscript ein Skript gebastelt, was die häufigsten Formatierungsfehler beseitigt


CleanText(theString)
{
	StringReplace, theString, theString,...,…,All;
	StringReplace, theString, theString,. . .,…,All;
	StringReplace, theString, theString,’’,”,All;
	StringReplace, theString, theString,‘‘,“,All;
	StringReplace, theString, theString, Þ,fi,All
	StringReplace, theString, theString,±,ff,All
	StringReplace, theString, theString,­Õ,ff,All
	StringReplace, theString, theString,ÔÔ,“,All
	StringReplace, theString, theString,ÕÕ,”,All
	StringReplace, theString, theString,Ô,‘,All
	StringReplace, theString, theString,Õ,’,All
	StringReplace, theString, theString,fi` ,fi,All
	theString:=RegExReplace(theString,"(\s)([-––—])(\s)"," — ") ; unify em dashes
	theString:=RegExReplace(theString,"([A-z]+)([––—])([A-z]+)","$1 — $3") ; separate em dashes
	theString:=RegExReplace(theString,"(^)([\.,]+)([\s]*)","") ; remove leading punctuation character followed by whitespace
	theString:=RegExReplace(theString,"([A-z]+)([\.,]+)([A-z]+)","$1$3") ; remove punctuation inside a word.
	Loop
	{
		theString:=RegExReplace(theString,"(^|[\.,;:\?\s])([qgyfr]+)([\.,;:\?\s])","$1$3", OutputVarCount) ; remove single characters created by Citavi
		theString:=RegExReplace(theString,"(^|[,;:\?\s])([pqgyfr]+)([,;:\?\s])","$1$3", OutputVarCount) ; we have to treat p separately because p. is a legitimate abbreviation
		if OutputVarCount = 0  ; No more replacements needed.
			break
	}
	theString:=RegExReplace(theString,"([\t ]+)","` ") ; remove unnecessary whitespace
	theString:=RegExReplace(theString,"[^0-9A-ZÀÂÄÉÈÊÎÒÔÖÜa-zöäüßÉÈçééèêîâàyœôù\s.,:;\?\#'""()§$£\-––—‘’„“”«»…&\[\]\-\/\\\<\>]","") ; only permit allowed Characters
	; remove any number not preceded by (beginning of string) or "s." or (another digit, opening bracket, forward slash, hyphen,
	; currency symbol, pound sign or whitespace) or (a digit and a dot)
	theString:=RegExReplace(theString,"(?<!^|\ss\.|\spara\.|\sCh\.|\svol\.|[0-9\(\[\-—/$£\#\s]|[0-9][\.,])([0-9]+)","")
	theString:=RegExReplace(theString,"(-)(\s+)(?!und)","") ; remove any hyphens followed by whitespace
	theString:=RegExReplace(theString,"m)(^|[\s\.\,\;\:])(['])([^']+)(['])($|[\s\.\,\;\:])","$1‘$3’$5") ; format matching single quotes
	theString:=RegExReplace(theString,"m)(^|[\s\.\,\;\:\(])([""“”']+)([^""“”]+)([""“”']+)($|[\s\.\,\;\:\)])","$1“$3”$5") ; format matching double quotes
	theString:=RegExReplace(theString,"m)(\.')",".") ; remove trailing unmatched single quotes
	theString:=RegExReplace(theString,"m)("")([^""]+)$","$2") ; remove trailing unmatched double quotes
	theString:=RegExReplace(theString,"([\t ]+)","` ") ; remove unnecessary whitespace
	theString:=RegExReplace(theString,"([\r\n]+)","`r`n") ; remove double newlines
	theString:=RegExReplace(theString,"\s+$","") ; remove trailing whitespace
	Return %theString%
}
Das führe ich für jedes neue Wissenselement aus. Unter anderem gehört das Entfernen von "- " dazu.


PS: Offenbar können ein paar Zeichen am Anfang hier im Forum nicht dargestellt werden, aber das Prinzip sollte ersichtlich sein.

Foto
1

Super, danke. Ist das so eine Art Autostart -- das Skript, das bei jedem C6-Event sowas wie Open/New etc. ausgeführt wird?

Foto
1

Das könnte man theoretisch wahrscheinlich auch machen. Aber nee, Autohotkey (ich nenn es ja immer falsch) ist ein Windows-Programm, was beim Drücken von Tastenkürzeln Scripts ausführen kann. Der ganze Kontext ist der, dass ich per Alt-Shift-W dieses Skript

+!w::
	theOldclipboard := Clipboard
	Sleep, 50
	Send ^c
	Sleep, 100
	theString := Clipboard
	theString := CleanText(theString)
	Sleep, 50
	Clipboard = %theString%
	Sleep, 50
	Send ^v
 	Sleep, 50
 	Clipboard = %theOldclipboard%
 	Sleep, 50
	Return
und damit die Aktion CleanText ausführe, und das klappt dann so, dass entweder der markierte Text gesäubert wird (Warnung: Formatierung ist dann auch weg), oder, wenn nichts markiert ist, die Zwischenablage gesäubert eingefügt wird. Klappt aber überall, nicht nur in Citavi.

Foto
1

Ich weiß nicht, wie das in C6 funktioniert. Shame on me!

Foto
1

Das hat gar nichts per se mit Citavi zu tun. Autohotkey ist ein allgemeines Windows-Programm.

Foto