Moteur agnostique de correction typographique française
Project description
French Typo 🇫🇷
French Typo est un moteur agnostique de correction typographique française, écrit en Python.
Il applique automatiquement des règles linguistiques françaises sans dépendre d’un format, d’une interface graphique ou d’un moteur de rendu particulier.
Il est conçu pour être utilisé aussi bien :
- comme bibliothèque Python
- que comme brique interne d’outils (éditeur, script, addon Anki, pipeline de traitement de texte, etc.)
🎯 Objectifs du projet
French Typo repose sur quelques principes forts :
-
Agnostique du format
Aucun HTML, Markdown, LaTeX ou autre format spécifique -
Aucune dépendance UI
Pas de GUI, pas de framework graphique -
Règles linguistiques françaises uniquement
Pas de mise en forme stylistique arbitraire -
Entrée / sortie en Unicode simple
Une chaîne de caractères en entrée, une chaîne corrigée en sortie
✨ Fonctionnalités actuelles
Espaces
- Suppression des espaces multiples
- Suppression des espaces avant les points
- Nettoyage des espaces en début et fin de ligne
Unités
- Normalisation des unités courantes :
KM,Km,kms→kmKG,kgs→kg
- Normalisation de certaines notations :
kg/m3→kg/m³km/h(insensible à la casse)
Nombres
- Préservation des ordinaux français :
1er,2e,3e,2d
- Base prête pour extensions futures (
n°, séparateurs, etc.)
📦 Installation
Depuis PyPI
pip install french-typo
Depuis le dépôt
git clone https://github.com/dhrions/french-typo.git
cd french-typo
pip install .
Mode développement
pip install -e .
🚀 Utilisation
Exemple simple
from french_typo.formatter import format_text
text = "Article 5 : 10 KM ."
result = format_text(text)
print(result)
Résultat attendu :
Article 5 : 10 km.
🔄 Pipeline typographique
Les règles sont appliquées dans l’ordre suivant :
- Normalisation des espaces
- Normalisation des unités
- Normalisation des nombres
def format_text(text: str) -> str:
text = normalize_spaces(text)
text = normalize_units(text)
text = normalize_numbers(text)
return text
Cet ordre est volontaire et peut évoluer.
🧪 Tests
Les tests utilisent pytest.
pytest
Structure :
tests/
└── core/
├── test_formatter.py
├── test_spaces.py
├── test_units.py
└── test_numbers.py
Chaque règle est testée indépendamment, garantissant :
- une bonne couverture
- une maintenance simple
- une détection rapide des régressions
🧱 Architecture
french_typo/
├── formatter.py # Point d’entrée principal
└── rules/
├── spaces.py # Règles sur les espaces
├── units.py # Règles sur les unités
└── numbers.py # Règles sur les nombres
Chaque règle est :
- pure
- sans effet de bord
- testable indépendamment
🔌 Cas d’usage
French Typo peut être intégré dans :
- Addons Anki
- Éditeurs de texte
- Outils NLP
- Scripts de nettoyage de corpus
- Pipelines CI de qualité rédactionnelle
Un addon Anki est déjà fourni :
french-typo.ankiaddon.zip
🗺️ Roadmap (idées)
- Espaces insécables françaises (
; : ! ?) - Guillemets français (« »)
- Normalisation de
n° - Séparateurs de milliers (
1 000) - Dates et heures
- Configuration optionnelle des règles
📄 Licence
Ce projet est distribué sous licence MIT.
Voir le fichier LICENSE pour plus de détails.
🤝 Contributions
Les contributions sont les bienvenues :
- nouvelles règles typographiques
- amélioration des regex existantes
- ajout de tests
- retours d’usage réel
Les PR propres, testées et documentées sont fortement appréciées.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file french_typo-0.2.1.tar.gz.
File metadata
- Download URL: french_typo-0.2.1.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77c5cab83a32b09c1a7ecb43971b2cefcab31d5e66c8e33d95bb35b9c8c755ad
|
|
| MD5 |
ce6724f800f7c4ac415a0faf3305c02d
|
|
| BLAKE2b-256 |
b683f94ff3354107b4e6edfa7f2cc967e7598b23920cbd75bf55b59608cb9085
|
File details
Details for the file french_typo-0.2.1-py3-none-any.whl.
File metadata
- Download URL: french_typo-0.2.1-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a1f486e0516d97175303c9349a9688cec0e5dfdd611b341010fa67c4c86d282
|
|
| MD5 |
3f2b2ce1f40a06fec64f995f9022403f
|
|
| BLAKE2b-256 |
41d2afe330b2a344cef6c29eab8195ef6abf7a62f7cc5c90b742d30df7def0d6
|