normalizer-tr
Turkish text normalization for speech, with a Rust core and a typed Python API. Convert numbers, money, dates, measurements and other supported notation into spoken Turkish while preserving ordinary prose. Runs offline, without a speech model or service. Decimal and money arithmetic is exact.
saat 09:30'da 5 kg malzeme ve %12,5'lik fark
→ saat dokuz otuzda beş kilogram malzeme ve yüzde on iki virgül beşlik fark
Python
python -m pip install normalizer-tr
from normalizer_tr import Normalizer
normalizer = Normalizer()
result = normalizer.normalize("25 TL; 5 kg")
assert result.normalized_text == "yirmi beş Türk lirası; beş kilogram"
assert result.complete
Wheels support CPython 3.11 to 3.14 on Windows and Linux x64, and macOS x64 and arm64. Compatible wheels need no Rust compiler. Platform requirements and source builds.
Rust
Requires Rust 1.94 or newer. Add to Cargo.toml:
[dependencies]
normalizer-tr = "0.5"
use normalizer_tr::{NormalizeError, NormalizeOptions, Normalizer};
fn main() -> Result<(), NormalizeError> {
let normalizer = Normalizer::new()?;
let result = normalizer.normalize("25 TL; 5 kg", &NormalizeOptions::default())?;
assert_eq!(result.normalized_text(), "yirmi beş Türk lirası; beş kilogram");
assert!(result.complete());
Ok(())
}
Reuse a Normalizer across calls. It is cloneable and Send + Sync.
Enable the optional serde feature to serialize results.
Choose how to handle ambiguity
| Policy | Behavior |
|---|---|
preserve (default) |
Keep unresolved spans as written. Return complete=false and issues. |
reject |
Return an error if any span is unresolved. |
fallback |
Render unresolved notation and symbols. Return handled assumptions in fallbacks. |
result = normalizer.normalize("1.234; AB12", ambiguity_policy="fallback")
assert result.normalized_text == "bin iki yüz otuz dört; a be bir iki"
assert result.complete and not result.issues
assert result.fallback_used
In Rust, set NormalizeOptions.ambiguity_policy to
AmbiguityPolicy::Fallback or AmbiguityPolicy::Reject.
Fallback prefers clear formats, then literal readings and named symbols, then
spoken Unicode codes. It does not correct invalid facts or certify identifiers.
Check fallbacks when those assumptions matter. Invalid input or hints,
cancellation and resource limits remain errors in every policy.
Hints provide explicit intent. All hint and diagnostic ranges are original UTF-8 byte offsets, not character positions.
Documentation
| Guide | Contents |
|---|---|
| Rust API | Types, methods and examples |
| Python API | Hints, errors, cancellation and building |
| Normalization reference | Supported formats and boundaries |
| Fallback | Reading strategies and diagnostics |
| Contributing | Setup, architecture and verification |
This is a pre 1.0 library with bounded coverage, not a universal pronunciation engine. See performance for measurements and changelog for release status and migration notes.
The guides track repository behavior: expanded initialism coverage and foreign-name speech aliases are included in 0.5.0. Review the changelog's migration notes before upgrading, especially exhaustive Rust enum matches and strict serialized allowlists.
License
Apache-2.0, with third party notices.
Thanks to @canberk7 for his contribution to fallback support.
Metadata
Release files for normalizer-tr 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| normalizer_tr-0.5.0.tar.gz | 428.1 kB | Details |
Built distributions (wheels)
Total release size: 21.5 MB
Release files / normalizer_tr-0.5.0.tar.gz
| Download URL | normalizer_tr-0.5.0.tar.gz |
|---|---|
| Size | 428.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1690351a40a468c7230a4b90c75c0da026172d72b6c41056df9b37fad9da35dd
|
|
BLAKE2b-256 checksum How to use checksums |
051c0d381fe0f06c3ae60a2562d70f0989685d5b861f5efb48fa4324fcb5f13d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp314-cp314-win_amd64.whl
| Download URL | normalizer_tr-0.5.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c6a93b006e29ea612c31e917faebdfab1a0f129df15f62b79a9561f99cf5081d
|
|
BLAKE2b-256 checksum How to use checksums |
2b10b219da946d8b9160e4347ed3ad873c4f9b2d5eef763d1ac96b38d4a05a53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | normalizer_tr-0.5.0-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1674a03f1ebd24987305c4f9b89bb16d60663abaefcb0f1e3d8e6ed9cc533bff
|
|
BLAKE2b-256 checksum How to use checksums |
3479f8bd9615d59306de5a5d1c487c47f242ee6461e62ddff250dbb623ee1da4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp314-cp314-macosx_12_0_x86_64.whl
| Download URL | normalizer_tr-0.5.0-cp314-cp314-macosx_12_0_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.14 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
86b4e5109728c95baecdcbbf2db297704def09c05ee3ff8a9d6c6f835c8caf42
|
|
BLAKE2b-256 checksum How to use checksums |
650d48e31a08d2e1db4d0af27949316a8e0feb7e0b3a0e27a5502eb64c388a05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp314-cp314-macosx_12_0_arm64.whl
| Download URL | normalizer_tr-0.5.0-cp314-cp314-macosx_12_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.14 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
11228965ed5ed49f989235851651e778fecf212ec2bbe8124ebc6121372fea00
|
|
BLAKE2b-256 checksum How to use checksums |
6db39a96b60b9d2ba31e1ffad2d4f753dd436ec47ce53aec24e62e7e4aaca283
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp313-cp313-win_amd64.whl
| Download URL | normalizer_tr-0.5.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
56d85ff4949825f80f0dd65db23232e593716649c278b4e958ed0bb8c5acbbf5
|
|
BLAKE2b-256 checksum How to use checksums |
822ae0ef4bd179e73488e412e2fa84acf2f84a59535051bb339ae2d0cd8e7e22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | normalizer_tr-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4d1939ecd16f003c2dbfb12ba9dadded342ce6294bdde359b00ad01d8be5b208
|
|
BLAKE2b-256 checksum How to use checksums |
133716a837190f7c63e99882093baf860d5d5fd5c6184139e3eabfc732a468ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp313-cp313-macosx_12_0_x86_64.whl
| Download URL | normalizer_tr-0.5.0-cp313-cp313-macosx_12_0_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.13 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
8253f9100642798b23d10699dac65a661da8b8a5434635e3b3657a4173e0524d
|
|
BLAKE2b-256 checksum How to use checksums |
76a41435f7552b077f19569b00cb643c868c82537f6c114a90d47a278ab74278
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp313-cp313-macosx_12_0_arm64.whl
| Download URL | normalizer_tr-0.5.0-cp313-cp313-macosx_12_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.13 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
04913f245925c0f1b3686b797d08f9c393c7fbc18378d1923b3eec05796e4e4d
|
|
BLAKE2b-256 checksum How to use checksums |
55dd8a21ca54d9816b5d92306bc8b84dd9ad838e15f7ce2fbc55273756db774b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp312-cp312-win_amd64.whl
| Download URL | normalizer_tr-0.5.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
503434eda92cdcba1794692215203b276be0f629cb9bb4fadbfb77587905f5dd
|
|
BLAKE2b-256 checksum How to use checksums |
fd60abcd73b24e4559f9762ccc846f3e2ec7d0333c4e3ca97ccb3bd9d8380d97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | normalizer_tr-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6d5d45d3822fa696dd7ee876ba1528fa4ea5f42be33a714cc46a4777a68a4fdf
|
|
BLAKE2b-256 checksum How to use checksums |
d05ccf84e01eb5e3454312f143d1c24487c04af95c0a8bf4f4af5fc73ca619ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp312-cp312-macosx_12_0_x86_64.whl
| Download URL | normalizer_tr-0.5.0-cp312-cp312-macosx_12_0_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
20fa14111adc5b0c029201a58404daf42b89ddd7026ae5d07ed339954c2bf2e9
|
|
BLAKE2b-256 checksum How to use checksums |
9d4de00db6cc00bba713c70d38f9fea97ba67e4ccfeaa642f506d7cc5ed9e4cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp312-cp312-macosx_12_0_arm64.whl
| Download URL | normalizer_tr-0.5.0-cp312-cp312-macosx_12_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
66f86a1c2c71bbcc05a355dd5142f75d12edda4d5afbaa910cf9233463ee1df9
|
|
BLAKE2b-256 checksum How to use checksums |
8ba10f541375ec4952eb7bcd24b81b8ab906396a43392c0af28b8ecb5d2fbe49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp311-cp311-win_amd64.whl
| Download URL | normalizer_tr-0.5.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4c8450c8e629c3080ca7bcec011787189ae26e003e262c2c2b71753979624513
|
|
BLAKE2b-256 checksum How to use checksums |
98336f573fb3d86b9148b197b0b6758e95ff74eb61790b7b4a6d67b14ee4e56c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | normalizer_tr-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b98c8ff8b95537dc57026c2f7137dc7f9aca8323a0ce70ad301573ffef399d58
|
|
BLAKE2b-256 checksum How to use checksums |
24960e72956230933ba12209f3374a0b045631d20d0accae1b50d3b5167d8563
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp311-cp311-macosx_12_0_x86_64.whl
| Download URL | normalizer_tr-0.5.0-cp311-cp311-macosx_12_0_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
a691d84609632fed4771b42f7f45e7e8bf416484e69915251833bf3bc2c4ec45
|
|
BLAKE2b-256 checksum How to use checksums |
5079210afb90c8ce11bb0e9cabf40bf1598050661e07120d63beb01213c98a72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / normalizer_tr-0.5.0-cp311-cp311-macosx_12_0_arm64.whl
| Download URL | normalizer_tr-0.5.0-cp311-cp311-macosx_12_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8d44f1b6e8f52ff8fa20f19564006c2fedcb6c9a834740bd0aadb827e464385b
|
|
BLAKE2b-256 checksum How to use checksums |
5e2cff5dd3d23720be64d7afde55d29c045cdbb06bcb4edbef984e031128e4a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency log