skillfed

uroman

uroman is a universal romanizer. It converts text in any script to the standard Latin alphabet.

uroman v1.3.1.1 659.1K downloads/30d#5,464 on PyPI249
Permissive 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) DORMANT released

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 uroman

uv

uv add uroman

poetry

poetry add uroman

Installing 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

Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: Apache Software LicenseProgramming Language :: Python :: 3 :: OnlyTopic :: Text ProcessingTopic :: Text Processing :: GeneralTopic :: Text Processing :: LinguisticTopic :: Utilities

Tags

romanize text any scriptconvert non-latin scripts to latinunicode text romanizationmultilingual script conversionstring similarity across scriptstransliteration toollanguage-aware romanizer
nlpmultilingualtransliteration

More Utilities packages