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.0.tar.gz (4.5 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.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file french_typo-0.2.0.tar.gz.

File metadata

  • Download URL: french_typo-0.2.0.tar.gz
  • Upload date:
  • Size: 4.5 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.0.tar.gz
Algorithm Hash digest
SHA256 0af0bcd825a187257a18a129d23b36605030999b04604c3e0d9e095b8dcee811
MD5 004641f884ee46ca56700ee0ede1fd3f
BLAKE2b-256 de8e6ab7b734181bb5ee94f015ea61d2280580b74b6b0de6160ff2453f311f0d

See more details on using hashes here.

File details

Details for the file french_typo-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: french_typo-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.7 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a334f74d932eaa15febacc7bc9e3e448b75790aad36658faa09c1c31e18247f8
MD5 1029b995114db25da52af566f4695430
BLAKE2b-256 8ba0222098f904aa137db4a4d3f6f3ea745e5629e7a74771134443cc3061a5ce

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