Chakkhu (ចក្ខុ, "eye") reads Khmer and English from photos, scans, old documents, screenshots and chat images, and turns them into text you can copy. Small (18.6M), runs on a normal computer, and tells you which lines it is unsure about.
Most OCR tools were built for English, where letters sit in one row, in the same order you type them. Khmer does not work that way.
In ស្ត្រី two letters sit under the first one. One "column" on the page can be three or four letters in the text.
In កេ the vowel េ is drawn on the left but typed after ក. Reading strictly left to right gives the wrong text.
Chats, signs and menus mix both: តោះទៅ cafe ថ្ងៃនេះ. Today's free tools are weakest exactly here.
Big AI chat models that "see" pictures make 33–89% mistakes on Khmer. Small, specialised readers win, so Chakkhu is one: 18.6 million parameters (about 19 MB on a phone), trained from scratch, the same size class as the Akkhara keyboard model. Click a figure to zoom.
| Design | Khmer? |
|---|---|
| CRNN + CTCclassic, tiny, fast | order breaks |
| Big vision AIbillions of parameters | 33–89% errors |
| Encoder–decoderTrOCR style | good, slower |
| Hybrid CTC + cluster decoderour choice, 18.6M | fast + right order |
All tools tested on KHOB, a public benchmark of real government letters and street photos (4,018 text lines, never used for training). Chakkhu makes the fewest mistakes.
Documents: about half the mistakes of Netra on clean, Messenger, scanned and phone-scanned pages, and 2.6× fewer on short lines like signs and titles (8.7% vs 22.4%). On old 1990s–2000s government decrees: 2.1% errors. Still behind: street photos (6.4% vs 5.8%, night 11.2% vs 10.6%) and English-only lines.
In KHOB, the scanned and Messenger pages reuse the boxes of the clean PDF, so many boxes missed the text. We line up each scan with its clean page before cutting lines, and drop 2 pages whose pictures show a different letter.
CER = wrong, missing or extra characters ÷ characters in the right answer. Spaces and Khmer letter order are made consistent first (the same rules for every tool). Every labelled line is used (Netra's own 0.96% is on a 325-line selection). Same lines and rules for every tool; Chakkhu never trains on them.
Open model (Apache-2.0): INGMUYLEANG/chakkhu-ocr. Free demo and API: chakkhu-demo.
from gradio_client import Client, handle_file
c = Client("INGMUYLEANG/chakkhu-demo")
c.predict(handle_file("page.jpg"), "page",
api_name="/read")
# → text + confidence + box per lineEvery training set has a license that allows training (MIT, CC BY or open fonts). Sets that are research-only, non-commercial or without a license are left out.
| Our own lines400k Khmer sentences drawn with 35 open fonts in 9 styles: document, scan, photo, night, screenshot, tiny print, old print, typewriter … | own |
| Chanrith Khmer–English linessynthetic, 1M-line slice | CC BY 4.0 |
| SoyVitou printed (62k + per-font)printed Khmer + English | MIT |
| Sokheng synthetic 100kreceipts, menus, price tags, signs | CC BY 4.0 |
| Thareah handwritingreal handwritten lines | MIT |
| Cambodian laws & royal decrees89 scanned pages, 1993–2003 (Open Development Cambodia); not protected: copyright law 2003, Art. 10 | free |
| Khmer Wikipedia158k sentences, drawn as lines | CC BY-SA 4.0 |
| 35 Khmer fontsBattambang, Hanuman, Moul, Noto Sans Khmer, Kantumruy Pro … | OFL 1.1 |
| KHOBreal government letters: PDF, Messenger, scanned, phone-scanned; street photos by day and night | MIT |
| Netra printed words | MIT |
| 12 decree pagesheld out from the 1990s–2000s set, never trained on | free |
KhmerSynthetic1M (research only) · WildKhmerST (non-commercial, no derivatives) · khmer-sala-ocr-16k (non-commercial) · sets with no license.
One step at a time, each with a check before the next.
6 open training sets, 35 fonts, the KHOB benchmark; licenses checked.
Cluster tokenizer (3,402 tokens) and the 18.6M model, tested: 13 ms per line on a laptop CPU.
Netra-OCR and Tesseract scored on 4,018 real lines (above).
Our sentences × 35 fonts × 9 picture styles, incl. old print and typewriter.
4 hours from scratch, then 1 hour more with real 1990s decree pages and handwriting.
Beats the baseline: 4.50% vs 5.87%. Open model, demo and free API on Hugging Face.
Use the confidence to check only unsure lines; more street-sign and English training.
Find text lines in whole pages, then read them in the Akkhara apps on phone and computer.