Skip to main content

JamoLib

CI PyPI Python GitHub release

JamoLib hero image

Fast Hangul text utilities for Python. JamoLib helps you decompose Hangul syllables into jamo, compose jamo back into syllables, and convert two-set Korean keyboard input into readable Korean text.

Why JamoLib

  • Linear-time text scanning for large Hangul strings.
  • Small API surface that is easy to drop into search, normalization, keyboard-input, and NLP preprocessing pipelines.
  • Preserves mixed text such as English, numbers, punctuation, and whitespace.
  • Handles common batchim boundary cases like 값이, 닭이, and 읽어.
  • Supports common compound-medial combinations such as ㄱㅗㅏ -> 과.

JamoLib example preview

Installation

pip install jamolib

Quick Start

import jamolib

text = "한글과 English 123"
decomposed = jamolib.decomposeHangulText(text)

print(decomposed)
# ㅎㅏㄴㄱㅡㄹㄱㅘ English 123

print(jamolib.composeHangulText("ㄱㅏㅂㅅㅇㅣ"))
# 값이

print(jamolib.translateEngToKor("dkssudgktpdy"))
# 안녕하세요

API At A Glance

Function Input Output Use case
decomposeHangul Single Hangul syllable Compatibility jamo string Token-level preprocessing
decomposeHangulText Mixed text Text with Hangul syllables decomposed Search normalization, phonetic indexing
composeHangul 초성 + 중성 [+ 종성] Single Hangul syllable Rebuilding syllables
composeHangulText Jamo text Re-composed Hangul text UI input handling, postprocessing
translateEngToKor Two-set English keyboard input Hangul text Keyboard typo correction
getCharset None Supported compatibility jamo list Validation and custom pipelines

Examples

Run an example from the repository root:

python examples/quickstart.py

Notes

  • decomposeHangul expects a single Hangul syllable.
  • composeHangul expects compatibility jamo in the order 초성 + 중성 [+ 종성].
  • composeHangulText also combines common compound medials like ㅗㅏ, ㅜㅓ, and ㅡㅣ.
  • translateEngToKor uses the standard two-set Korean keyboard mapping.
  • Mixed strings are preserved as-is outside Hangul processing.

Performance

The current implementation uses a single-pass scanner instead of repeated global string replacement. Local measurements on Python 3.12 in this repository produced the following averages:

Operation Input shape Average time
decomposeHangulText Repeated Hangul sentence x500 0.0041s
composeHangulText Recompose decomposed sentence x500 0.0205s
translateEngToKor Keyboard string x2000 0.0123s

These numbers are environment-dependent, but they reflect the optimized code currently in the repository.

Development

python -m pip install -e .[test]
pytest
python scripts/benchmark.py
python -m build

Project Docs

Metadata

Release files for jamolib 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jamolib 0.2.1
File Size Uploaded
jamolib-0.2.1.tar.gz 137.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jamolib 0.2.1
File Interpreter ABI Platform
jamolib-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 143.4 kB

Release files / jamolib-0.2.1.tar.gz

Download URL jamolib-0.2.1.tar.gz
Size 137.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4ab90c8e9b69fb8baf8f5cf01ebd6a1a3cdd84f5271691c10d6c7f358019934e
BLAKE2b-256 checksum
How to use checksums
e5c0921d47da364e75faedc102987044df54a7859c8b11814623ae8433d204bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 18, 2026.

Transparency log

Release files / jamolib-0.2.1-py3-none-any.whl

Download URL jamolib-0.2.1-py3-none-any.whl
Size 5.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cdc247c408e36e0eef58792823c871eb38b646498ff820e3dbdf1c1cdeb1e266
BLAKE2b-256 checksum
How to use checksums
7d2c9cb33672620f59275b2a409d5ac5532b28d5b74d3570d3aefa6ae01e91dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page