Typografische Ligaturen fi und fl auflösen
Aus einer PDF-Datei, Zeitschrift, einem E-Book oder professionell gesetzten Dokument kopierter Text kann einzelne Unicode-Zeichen enthalten, die lediglich wie vertraute Buchstabenpaare aussehen.
Im Browser ausführen – kostenlos
Ein Wort mit fi wirkt auf dem Bildschirm richtig, wird bei einer exakten Suche nach fi jedoch möglicherweise nicht gefunden. Dieses Werkzeug löst solche typografischen Ligaturen in gewöhnliche Einzelbuchstaben auf, ohne benachbarte Wörter, Satzzeichen, Abstände oder Zeilenumbrüche zu verändern. Das Ergebnis lässt sich zuverlässiger durchsuchen, indizieren, vergleichen, zitieren und in Systeme übernehmen, die herkömmlichen Text erwarten.
Warum optisch korrekter Text schwer zu durchsuchen sein kann
Satzprogramme ersetzen gelegentlich zwei oder drei benachbarte Buchstaben durch eine einzige verbundene Glyphe. Dies ist besonders bei fi, fl, ff, ffi und ffl üblich, weil sich deren Formen in einer sorgfältig entworfenen Schrift berühren können. Stellt eine PDF-Datei diese Glyphe als Unicode-Präsentationszeichen bereit, bleibt beim Kopieren die Ligatur statt der dargestellten Buchstaben erhalten. Für Menschen sieht das eingefügte Wort normal aus, Software erkennt jedoch unter Umständen eine andere Folge von Codepunkten. Eine wörtliche Suche nach „file“ findet deshalb nicht zwingend ein kopiertes Wort, das mit dem Einzelzeichen fi beginnt. Dieselbe Abweichung kann Dokumentindizes, Dublettenerkennung, Datenbankabfragen, Befehlszeilensuchen, Barrierefreiheit und Textvergleiche beeinträchtigen. Diese Funktion behebt genau dieses Problem: Sie wandelt unterstützte Ligaturen in gewöhnliche lateinische Buchstabenfolgen um, erhält vorhandene Großschreibung und lässt alle anderen Zeichen unverändert, darunter Akzente, Satzzeichen, Tabulatoren, Leerzeichen und Zeilenenden. Bereits getrennte Folgen wie fi oder fl werden nicht umgeschrieben, da sie schon durchsuchbar sind.
Was die Auflösung verändert und was sie bewahrt
Geben Sie den Inhalt in das Textfeld ein; das Ergebnis enthält den aufgelösten Text und die Anzahl der Ersetzungen. Der Algorithmus erkennt die Unicode-Präsentationsformen für ff, fi, fl, ffi und ffl sowie die beiden historischen st-Formen. Zusätzlich löst er die verbreiteten Ligaturbuchstaben AE und OE in Groß- und Kleinschreibung auf und erzeugt passend AE, ae, OE oder oe. Jedes erkannte Zeichen zählt als eine Ersetzung, auch wenn daraus drei Buchstaben entstehen. Anhand der Anzahl können Sie feststellen, ob ein eingefügter Abschnitt tatsächlich verborgene Typografie enthielt. Die Verarbeitung ist deterministisch und erfolgt in einem Durchlauf: Dieselbe Eingabe liefert immer dieselbe Ausgabe, ohne dass ein Sprachmodell die Absicht errät. Das Werkzeug normalisiert keine Akzente, ersetzt keine Anführungszeichen, verdichtet keine Abstände, korrigiert keine Rechtschreibung und verändert keine Striche. Enthält das Dokument OCR-Fehler statt echter Ligaturen, bleiben diese für einen getrennten Korrekturschritt sichtbar.
Bereinigten Text in Such- und Dokumentabläufen verwenden
Ligaturen sollten am besten unmittelbar nach der Textextraktion oder dem Kopieren in die Zwischenablage und vor Indizierung, Vergleich oder Tokenisierung aufgelöst werden. Fügen Sie einen einzelnen Abschnitt ein und verwenden Sie das Ergebnis anschließend in einem Suchfeld, einer Notiz, einem Literaturverwaltungsprogramm oder einer Klartextdatei. Wenden Sie die Funktion in automatisierten Abläufen einheitlich auf gespeicherte Dokumente und eingehende Suchanfragen an, wenn eine der beiden Seiten aus gesetztem Material stammen kann. So wird verhindert, dass ein optisch identisches Wort im Index und in der Anfrage unterschiedlich dargestellt ist. Der API-Grundpreis beträgt $0.002 pro Anfrage; jede Anfrage verarbeitet ein Textelement. Da die Umwandlung weder Netzwerkzugriff noch ein probabilistisches Modell benötigt, eignet sie sich auch für reproduzierbare Tests und die Archivbereinigung. Bewahren Sie bei wichtiger Herkunft den Originaltext auf, denn die Auflösung verändert bewusst Codepunkte, obwohl die Lesart gewöhnlich erhalten bleibt. Führen Sie die Normalisierung von Anführungszeichen, Leerraum, OCR oder Großschreibung als getrennte, nachvollziehbare Schritte aus.
Anwendungsfälle
Aus PDF-Dateien kopierten Text reparieren
Wandeln Sie verborgene fi-, fl-, ffi- und ffl-Zeichen vor einer Suche oder einem Zitat in normale Buchstaben um.
Dokumente für die Indizierung vorbereiten
Normalisieren Sie Ligaturen, bevor Sie extrahierte wissenschaftliche, juristische oder redaktionelle Texte einem wörtlichen Index hinzufügen.
Textvergleiche stabilisieren
Entfernen Sie rein typografische Codepunktunterschiede, bevor Sie gesetzten Text mit einer Klartextquelle vergleichen.
Häufige Fragen
Was kostet die Nutzung?
Die API kostet $0.002 pro Anfrage. Die Browserversion kann dieselbe deterministische Umwandlung lokal ausführen.
Welche Ligaturen werden aufgelöst?
Aufgelöst werden die Formen ff, fi, fl, ffi, ffl und st sowie die Ligaturbuchstaben AE und OE in Groß- und Kleinschreibung.
Werden gewöhnliche Folgen wie fi und fl verändert?
Nein. Getrennte Buchstaben sind bereits durchsuchbar; ersetzt werden nur erkannte Ligaturen aus einem einzelnen Zeichen.
Werden OCR-Fehler korrigiert?
Nein. Das Werkzeug löst nur bekannte Ligaturzeichen auf und bewahrt falsch erkannte Buchstaben, fehlende Abstände und andere OCR-Fehler.
Bleiben Formatierung und Zeilenumbrüche erhalten?
Ja. Abgesehen von unterstützten Ligaturen bleibt der Inhalt einschließlich Leerraum, Satzzeichen, Akzenten und Zeilenumbrüchen unverändert.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/str/expand-ligatures \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The office file is flexible."}'const res = await fetch("https://api.kit.forhosting.com/str/expand-ligatures", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The office file is flexible."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/expand-ligatures",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The office file is flexible."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/expand-ligatures", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The office file is flexible."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The office file is flexible."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/expand-ligatures", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "The office file is flexible."
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.expand_ligatures",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |