uroman
uroman is a universal romanizer. It converts text in any script to the standard Latin alphabet.
What it is and what it does
uroman is a universal romanizer that converts text written in any script—Cyrillic, Greek, Arabic, Devanagari, Chinese, and many others—into standard Latin alphabet characters. It goes beyond simple character-by-character substitution by using context-aware m-to-n mappings and optional ISO-639-3 language codes to handle script-specific phonetic rules. For example, the same Cyrillic letter may romanize differently in Russian versus Ukrainian depending on the language code provided.
The package is designed to enable string-similarity comparisons across scripts without intermediate phonetic representations, and also converts numerals in various scripts to Western Arabic numerals. It offers both a command-line interface for batch processing and a Python API for programmatic use. The constructor loads romanization data once (taking about a second), after which multiple romanization calls are efficient. Output formats range from simple strings to detailed lattices with alternative romanizations and offset information.
Use it for:
- Compare or deduplicate names and text across different writing systems in multilingual datasets without phonetic intermediate steps.
- Normalize user input from diverse scripts into Latin text for downstream NLP or machine translation pipelines.
- Convert digital numbers written in non-Latin scripts (e.g., Arabic, Chinese) to Western numerals for data processing.
- Build search indexes that match queries across scripts—e.g., finding 'Nepal' when the database contains नेपाल or نیپال.
- Preprocess multilingual corpora for linguistic research or computational linguistics tasks requiring consistent Latin representation.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Converts text in any script to Latin alphabet romanization, supporting multiple languages with context-aware character mappings and optional language codes.
Yes, if you need robust script-to-Latin conversion with language awareness. The low install friction, permissive license, and zero known vulnerabilities make it safe to adopt. However, the dormant maintenance status (no activity for 777 days) means you should verify that its romanization rules and Unicode support remain adequate for your use case and that you can maintain it yourself if needed.
Install
uroman on PyPI
pip
pip install uromanuv
uv add uromanpoetry
poetry add uromanInstalling uroman
Before you install
Low install friction with a single runtime dependency (regex). Maintenance is dormant—last release was 777 days ago and the repository shows no recent commits, though it remains unarchived and the package is actively downloaded.
License in practice
Permissive MIT-style license with an attribution requirement: publications using uroman must acknowledge its use and cite the original authors (Ulf Hermjakob, USC Information Sciences Institute, 2015-2020).
Quickstart
pip install uroman
import uroman as ur
uroman = ur.Uroman()
print(uroman.romanize_string('Игорь Стравинский'))
print(uroman.romanize_string('नेपाल', lcode='hin'))
Requires Python 3.10 or later. Initial Uroman() constructor call takes about a second to load romanization data.
Verify before relying
- Whether the dormant maintenance status (last commit 2024-07-26, no activity for 777 days) affects long-term compatibility with evolving Python or dependency ecosystems.
- Accuracy and completeness of romanization across all supported scripts and language codes beyond the documented examples.
Package facts
| License | Copyright (C) 2015-2020 Ulf Hermjakob, USC Information Sciences Institute Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — regex |
| Maintenance | dormant — 777 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 659,136/month — #5,464 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: uroman-1.3.1.1-py3-none-any.whl
Keywords: NLP, computational linguistics, machine translation, natural language processing, romanization, string similarity
Tags
More Utilities packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
charset-normalizerDetects and normalizes text encoding from…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
hangul-romanizeConverts Korean Hangul text to romanized (Latin…
unclear · top 15,000 on PyPI
transliterateConverts text between Latin and non-Latin…
copyleft · top 15,000 on PyPI
UnidecodeConverts Unicode text to ASCII-safe…
copyleft · top 1,000 on PyPI
cyrtranslitConverts text between Cyrillic and Latin…
permissive · top 15,000 on PyPI
anyasciiConverts Unicode text to ASCII-only equivalents…
permissive · top 5,000 on PyPI
cutletCutlet converts Japanese text to romaji (Latin…
permissive · top 15,000 on PyPI
indic-numtowordsConverts non-negative integers to their word…
permissive · top 15,000 on PyPI
num2wordsConverts numbers to their word representations…
copyleft · top 5,000 on PyPI
text-unidecodeConverts Unicode text to ASCII by…
copyleft · top 1,000 on PyPI
number-parserConverts numbers written in natural language…
permissive · top 15,000 on PyPI