Développez les ligatures typographiques fi et fl
Un texte copié depuis un PDF, une revue, un livre numérique ou un document composé professionnellement peut contenir un caractère Unicode unique qui ressemble seulement à plusieurs lettres ordinaires.
Lancer gratuitement
Un mot avec fi paraît correct à l’écran, mais peut échapper à une recherche exacte de fi. Cet outil développe ces ligatures typographiques en lettres distinctes sans modifier les mots voisins, la ponctuation, les espaces ni les retours à la ligne. Le résultat devient plus fiable pour la recherche, l’indexation, la comparaison, la citation et les systèmes qui attendent du texte conventionnel.
Pourquoi un texte visuellement correct résiste parfois à la recherche
Les logiciels de composition remplacent parfois deux ou trois lettres adjacentes par un seul glyphe lié. Ces substitutions concernent souvent fi, fl, ff, ffi et ffl, dont les formes peuvent se heurter dans une police soigneusement dessinée. Lorsqu’un PDF expose ce glyphe comme caractère de présentation Unicode, la copie conserve la ligature plutôt que les lettres qu’elle représente. Le mot collé semble normal, mais le logiciel peut lire une autre suite de points de code. Une recherche littérale de « file » ne trouvera donc pas forcément un mot copié qui commence par le caractère unique fi. Cette différence peut également perturber les index, la détection des doublons, les requêtes en base de données, les recherches en ligne de commande, l’accessibilité et les comparaisons. Cette fonction traite précisément ce problème : elle convertit les ligatures prises en charge en suites de lettres latines ordinaires, respecte les majuscules et conserve tous les autres caractères, notamment les accents, signes, tabulations, espaces et fins de ligne.
Ce que le développement modifie et ce qu’il conserve
Saisissez la source dans le champ de texte ; le résultat contient le texte développé et le nombre de remplacements. L’algorithme reconnaît les formes de présentation Unicode de ff, fi, fl, ffi et ffl, ainsi que les deux formes historiques de st. Il développe aussi les ligatures courantes AE et OE en majuscules ou minuscules, pour produire AE, ae, OE ou oe selon le cas. Chaque caractère reconnu compte pour un remplacement, même lorsqu’il devient trois lettres. Ce total permet de vérifier si le passage collé comportait réellement une typographie cachée. Le traitement est déterministe et se fait en un passage : une entrée identique donne toujours la même sortie, sans modèle linguistique qui devine l’intention. L’outil ne normalise pas les accents, ne remplace pas les guillemets, ne réduit pas les espaces, ne corrige pas l’orthographe et ne change pas les tirets. Les erreurs d’OCR restent donc visibles afin d’être corrigées séparément.
Employer le texte nettoyé dans les recherches et les documents
Le développement des ligatures est particulièrement utile juste après une extraction ou une copie dans le presse-papiers, avant l’indexation, la comparaison ou la segmentation. Pour un passage isolé, collez le texte puis utilisez le résultat dans un moteur de recherche, une note, un gestionnaire bibliographique ou un fichier texte. Dans un traitement automatisé, appliquez la fonction aux documents stockés comme aux requêtes entrantes lorsque l’un ou l’autre peut provenir d’un contenu composé. Cette cohérence empêche qu’un mot visuellement identique soit représenté différemment dans l’index et dans la requête. Le tarif de base de l’API est de $0.002 par requête, laquelle traite un élément textuel. Sans réseau ni modèle probabiliste, la transformation convient aussi aux tests reproductibles et au nettoyage d’archives. Conservez la source originale lorsque la provenance compte, car le développement change volontairement les points de code, même s’il préserve généralement la lecture. Réservez la normalisation des guillemets, des espaces, de l’OCR ou de la casse à des opérations distinctes et explicites.
Cas d’usage
Réparer un texte copié depuis un PDF
Transformez les caractères cachés fi, fl, ffi et ffl en lettres ordinaires avant de rechercher ou de citer un passage.
Préparer des documents pour l’indexation
Normalisez les ligatures avant d’ajouter un contenu universitaire, juridique ou éditorial extrait à un index littéral.
Fiabiliser les comparaisons de textes
Supprimez les différences de points de code purement typographiques avant de comparer une composition et une source en texte brut.
Questions fréquentes
Quel est le tarif ?
L’API coûte $0.002 par requête. La version pour navigateur exécute localement la même transformation déterministe.
Quelles ligatures sont développées ?
Elle développe les formes ff, fi, fl, ffi, ffl et st, ainsi que les lettres liées AE et OE en majuscules et en minuscules.
Les suites ordinaires fi et fl seront-elles modifiées ?
Non. Les lettres séparées sont déjà recherchables ; seules les ligatures reconnues formées d’un caractère sont remplacées.
L’outil corrige-t-il les erreurs d’OCR ?
Non. Il développe seulement les ligatures connues et conserve les lettres mal reconnues, les espaces absents et les autres erreurs d’OCR.
La mise en forme et les retours à la ligne sont-ils conservés ?
Oui. Hormis les ligatures prises en charge, le contenu reste inchangé, y compris les espaces, signes, accents et retours à la ligne.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"text": "The office file is flexible."
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.expand_ligatures",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |