Skip to main content

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, kmskm
    • KG, kgskg
  • Normalisation de certaines notations :
    • kg/m3kg/m³
    • km/h (insensible à la casse)

Nombres

  • Préservation des ordinaux français :
    • 1er, 2e, 3e, 2d
  • Base prête pour extensions futures (, 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 :

  1. Normalisation des espaces
  2. Normalisation des unités
  3. 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
  • 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

french_typo-0.2.1.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

french_typo-0.2.1-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

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

Hashes for french_typo-0.2.1.tar.gz
Algorithm Hash digest
SHA256 77c5cab83a32b09c1a7ecb43971b2cefcab31d5e66c8e33d95bb35b9c8c755ad
MD5 ce6724f800f7c4ac415a0faf3305c02d
BLAKE2b-256 b683f94ff3354107b4e6edfa7f2cc967e7598b23920cbd75bf55b59608cb9085

See more details on using hashes here.

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

Hashes for french_typo-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9a1f486e0516d97175303c9349a9688cec0e5dfdd611b341010fa67c4c86d282
MD5 3f2b2ce1f40a06fec64f995f9022403f
BLAKE2b-256 41d2afe330b2a344cef6c29eab8195ef6abf7a62f7cc5c90b742d30df7def0d6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page