All posts
announcement8 min read

စာအုပ် Scan တွေကနေ မြန်မာစာ Text ထုတ်ချင်တဲ့သူတွေအတွက် All-in-one Open-Source Desktop Tool (LEXO)

မြန်မာစာ OCR နဲ့ပတ်သက်လာရင် Accuracy ကောင်းပြီး စိတ်ချလက်ချ သုံးလို့ရတဲ့ Free Tool မရှိသလောက် ရှားတာကြောင့် LEXO ကို Open-source Desktop App အဖြစ် လုပ်ဖြစ်လိုက်ပါတယ်။

မြန်မာစာ OCR နဲ့ပတ်သက်လာရင် တော်တော်များများ ကြုံရတဲ့ ပြဿနာက Accuracy ကောင်းပြီး စိတ်ချလက်ချ သုံးလို့ရတဲ့ Free Tool မရှိသလောက် ရှားတာပါပဲ။ Tesseract တို့၊ PaddleOCR တို့ ရှိပေမယ့် မြန်မာစာမှာ Accuracy အားနည်းသလို Setup လုပ်ရတာလည်း တော်တော်လေး လက်ဝင်ပါတယ်။ ပြီးတော့ Scanned PDF တစ်ခုကနေ Text ရဖို့အထိ အဆင့်ဆင့် Crop, Split, Rotate လုပ်ရတာတွေက အရမ်းရှုပ်ပါတယ်။

ဒီပြဿနာတွေကို ဖြေရှင်းဖို့ ကိုယ့်ဘာသာ NLP Research တွေမှာ သုံးရင်းနဲ့ Tool လေးတစ်ခု လုပ်ဖြစ်ခဲ့ရာကနေ အခု လိုအပ်မယ့်သူတွေ အလွယ်တကူ သုံးလို့ရအောင် “LEXO” ကို Open-source Desktop App အဖြစ် ထုတ်ပေးလိုက်ပါတယ်။ Burmese Dataset Development/Research လုပ်တဲ့သူတွေအပြင် Scanned Book တွေကို EPUB ပြောင်းဖတ်ချင်သူတွေအတွက် အရမ်းအသုံးဝင်မှာပါ။ (Lexo ကို PyMuPDF နဲ့ ကိုက်ညီစေဖို့ AGPL-3.0 Open-Source License နဲ့ ထုတ်ပေးထားပါတယ်)။

ဘယ်ကနေ စဖြစ်လာတာလဲဆိုရင်

အရင်က EPUB တွေလုပ်ရင်း Google Drive API သုံးတဲ့ Python script အသေးစားလေးတစ်ခု တွေ့ရာကနေ အဲဒါကို ဟိုပြင်ဒီပြင်လုပ်ရင်း ကိုယ့်ဘာသာသုံးတဲ့ Personal CLI tool လေးတစ်ခု စဖြစ်လာတာပါ။ အဲဒါနဲ့ မနှစ်က LU Lab မှာ OCR Tool အဖြစ် သုံးလို့ရအောင် Open-source တင်ပေးခဲ့ပါတယ်။

ဒါပေမယ့် CLI tool ဖြစ်နေတော့ သာမန်လူတွေ သုံးဖို့ မလွယ်ဘူး ဖြစ်နေတာနဲ့ Lab member တစ်ယောက်က PR တင်ပေးရာကနေ GUI tool လေး ထပ်ရလာတယ်။ ဒါပေမယ့် အဲဒီတုန်းက Poppler လို External Dependency တွေ ထပ်သွင်းဖို့ လိုနေသေးတာကြောင့် သုံးရတာ နည်းနည်းလက်ဝင်ပြီး ကြားထဲမှာ ပစ်ထားမိသလို ဖြစ်သွားခဲ့တာပါ။

အခုတော့ အဲဒါကို PyMuPDF, PySide6, uv တို့နဲ့ သေသေချာချာ ပြန် Upgrade လုပ်ပြီး PyPI မှာ Publish လုပ်လိုက်ပါပြီ။ Poppler တွေဘာတွေ ထပ်သွင်းစရာ လုံးဝမလိုတော့ဘဲ All-in-one အဆင်သင့်သုံးရုံ ဖြစ်သွားပါပြီ။

Lexo Desktop App ရဲ့ အဓိက အသုံးပြုနိုင်တဲ့ Mode (၃) မျိုး

Lexo Desktop App မှာ မိမိ စာရွက်စာတမ်း အမျိုးအစားအလိုက် အလွယ်တကူ ရွေးချယ် သုံးနိုင်ပါတယ် (Power users တွေအတွက်လည်း CLI command တွေအဖြစ် ပါဝင်ပါတယ်) -

  1. Text Extraction Mode (Digital PDF များအတွက်): မူလကတည်းက Digital font/Text layer ပါပြီးသား Digital PDF တွေဆိုရင် Internet တောင် မလိုဘဲ Local မှာတင် စက္ကန့်ပိုင်းအတွင်း ချက်ချင်း စာသားတွေကို ဆွဲထုတ်ပေးတာပါ (CLI: lexo extract)။

  2. Google Docs OCR Mode (Scan နဲ့ ဓာတ်ပုံများအတွက်): စာအုပ် Scan ဖတ်ထားတာတွေ၊ ဓာတ်ပုံတွေ၊ ဒါမှမဟုတ် Win Innwa လို Legacy font တွေနဲ့ ရိုက်ထားတဲ့ PDF တွေဆိုရင်တော့ ကိုယ့်ရဲ့ Google Account ကို ချိတ်၊ Google Docs ရဲ့ OCR နဲ့ ဖတ်ပြီး Unicode Text အဖြစ် ပြန်ထုတ်ပေးတာ ဖြစ်ပါတယ် (CLI: lexo ocr)။

  3. Batch OCR Mode (ဖိုင်အများကြီး အစုလိုက် ဖတ်ဖို့အတွက်): ဖိုင်တွေ၊ Folder တွေ အများကြီးကို တစ်ပြိုင်နက်တည်း Batch အနေနဲ့ OCR Run ချင်တယ်ဆိုရင် Desktop App ရဲ့ Welcome Screen သို့မဟုတ် File Menu ကနေ Batch OCR Window ဖွင့်ပြီး သုံးလို့ရပါတယ် (CLI: lexo ocr-batch)။ ကြားထဲမှာ ရပ်သွားရင် ပြီးသွားပြီးသား PDF တွေကို ကျော်ပြီး ကျန်တဲ့ဖိုင်တွေကနေ ဆက် Run ပေးပါတယ်။

LEXO Desktop App မှာ ဘာတွေ လုပ်လို့ရလဲ?

  • Free Google Docs OCR: ကိုယ့်ရဲ့ Personal Google Account ကို ချိတ်ပြီး Google Docs ရဲ့ High-accuracy OCR ကို Local ကနေ အခမဲ့ လှမ်းသုံးတာဖြစ်လို့ လစဉ်ကြေး မရှိ၊ ပိုက်ဆံမကုန်ပါဘူး။ (Google OAuth App က Testing Status မှာ ရှိနေသေးလို့ ရံဖန်ရန်ခါ Token သက်တမ်း ၇ ရက်ခန့်မှာ ကုန်သွားတတ်ပေမယ့် စိတ်ပူစရာ မလိုပါဘူး။ OCR Run နေရင်း Sign-in Error ဖြစ်တာနဲ့ App က အလိုအလျောက် သတိပေး Popup ပြပေးပြီး တစ်ချက်နှိပ်ရုံနဲ့ တန်းပြီး Re-authenticate လုပ်ပေးနိုင်ပါတယ်။ CLI မှာတော့ lexo login ကို သုံးနိုင်ပါတယ်)။
  • Visual Crop & Split Editor: စာအုပ် Scan ဖတ်ထားလို့ စာမျက်နှာ ၂ ခု ကပ်နေတာတွေကို ခွဲထုတ်တာ၊ ခေါင်းစဉ်နဲ့ ဘေးဘောင် Page numbers ဖယ်တာတွေကို Desktop App ပေါ်မှာတင် Box လေးဆွဲပြီး လွယ်လွယ်ကူကူ ဖြတ်ထုတ်နိုင်ပါတယ်။ Page preview မှာ Zoom in/out နဲ့ Pan လုပ်ပြီး အတိအကျ ကြည့်ရှု ပြင်ဆင်နိုင်ပါတယ်။
  • GUI Batch Workflow: CLI မှာတင်မကဘဲ Desktop App ကနေပါ ဖိုင်တွေ/Folder တွေ အများကြီးကို ရွေးချယ်ပြီး Batch OCR Run လို့ ရပါတယ်။
  • Smart Retry (GUI Single-Document Workflow): စာရွက်စာတမ်းတစ်ခုကို OCR run နေရင်း လိုင်းနှေးလို့ တချို့ စာမျက်နှာတွေ Fail သွားရင်တောင် အစကနေ ပြန်မလုပ်ရဘဲ “Retry Failed Pages” ခလုတ်လေး နှိပ်ပြီး FFail ဖြစ်သွားတဲ့ စာမျက်နှာတွေကိုပဲ ပြန် Run ပေးပါတယ်။
  • Built-in PDF Tools: Extract range (all, odd, even စတဲ့ keyword တွေနဲ့ အလွယ်တကူ ရွေးချယ်နိုင်ခြင်း), Split/Merge, Crop, Rotate အစရှိတဲ့ PDF operation တွေကို Tool တစ်ခုတည်းကနေ တစ်နေရာတည်းမှာ လုပ်နိုင်ပါတယ်။ Background process အနေနဲ့ အလုပ်လုပ်တာမို့ ဖိုင်ကြီးရင်တောင် App Freeze ဖြစ်မသွားပါဘူး။
  • Unicode & Font Bundled: မြန်မာစာ Unicode Normalization အလိုအလျောက် လုပ်ပေးသလို Noto Sans Myanmar Font (OFL) ကိုပါ တစ်ပါတည်း ထည့်ပေးထားလို့ စက်ထဲမှာ ဖောင့်မရှိရင်တောင် စာသားတွေ မကွဲဘဲ သေသပ်စွာ မြင်ရမှာပါ။
  • Side-by-Side Review & Export: မူရင်းပုံနဲ့ ပြောင်းပြီးသား Text ကို ဘေးချင်းယှဉ်ပြီး တန်းစစ်ဆေးနိုင်ပါတယ်။ Plain Text (.txt) အပြင် Markdown (.md) နဲ့ AI Dataset တွေအတွက် JSONL (.jsonl) အဖြစ်ပါ Export ထုတ်နိုင်ပါတယ်။

မှတ်ချက် - Text Layer ပါပြီးသား Digital PDF ဆိုရင်တော့ Internet တောင် မလိုဘဲ Text တွေကို စက္ကန့်ပိုင်းအတွင်း ဆွဲထုတ်ပေးနိုင်ပါတယ်။ (Private Use Area (PUA) ကြောင့် စာသားတွေ Glyph Soup ဖြစ်နေတဲ့ PDF တွေကို အလိုအလျောက် သိရှိပြီး OCR ပြောင်းသုံးပေးပါတယ်။ Win Innwa လိုမျိုး ASCII Codepoint တွေပေါ် တင်ရိုက်ထားတဲ့ PDF တွေကိုတော့ Google Docs OCR သို့မဟုတ် CLI --force-ocr ကို ရွေးပြီး ပြောင်း run ပေးရပါမယ်။)

OCR Accuracy နဲ့ သတိထားစစ်ဆေးသင့်တာတွေ

Scan ဖတ်ထားတဲ့ စာရွက်သာ ရှင်းလင်းကြည်လင်ရင် Google Docs OCR ရဲ့ တိကျမှုက 99% လောက်အထိ ရှိပါတယ်။ ဒီနေရာမှာ ဘာကြောင့် Quantitative Benchmark CER/WER အနေနဲ့ မထုတ်ဘဲ ~99% လို့ ခန့်မှန်းပြောရတာလဲဆိုရင် Google Docs OCR က Cloud-side မှာ အမြဲတမ်း Update ဖြစ်နေတဲ့ Closed Engine ဖြစ်နေတာရယ်၊ မြန်မာစာအတွက် Standardized Ground-Truth Dataset ရှားပါးတာရယ်ကြောင့် တိကျတဲ့ Benchmark တစ်ခု ထုတ်ဖို့ မလွယ်တာကြောင့်ပါ။

ဒါပေမယ့် လက်တွေ့ EPUB တွေနဲ့ Dataset တွေ ပြင်ဆင်ရာက ရရှိတဲ့ အတွေ့အကြုံ Empirical Observation အရ ~99% လောက်အထိ မှန်ကန်တာကို တွေ့ရလို့ပါ။ အဓိက သတိထားပြီး ပြန်စစ်ပေးရမယ့် Common Error လေးတွေကတော့ ဂဏန်း “၇” နဲ့ “ရ” ရကောက် မှားတာ၊ အက္ခရာ “ဝ” ဝလုံး နဲ့ ဂဏန်း “၀” သုည မှားတာမျိုးလောက်ပဲ ရှိတတ်ပါတယ်။ ဒါတွေကိုလည်း App ရဲ့ Side-by-side view မှာ လွယ်လွယ်ကူကူ တန်းပြင်လို့ ရပါတယ်။

ဘာလို့ .exe file မထုတ်ဘဲ uv tool GUI အဖြစ် ထုတ်တာလဲ?

Desktop installer .exe ကြီးတွေ ဒေါင်းလုဒ်ဆွဲရတာ လက်ဝင်သလို၊ Open-source app တွေမှာ မကြာခဏ ကြုံရတတ်တဲ့ Windows Certificate Warning Unknown Publisher error တွေကို Bypass လုပ်ချင်လို့ပါ။ uv tool အနေနဲ့ သုံးလိုက်တော့ Certificate error တွေ ခေါင်းစားစရာမလိုတော့ဘဲ Terminal ကနေ lexo gui လို့ ရိုက်ထည့်လိုက်တာနဲ့ Full Desktop App ကို ချက်ချင်း သုံးလို့ရသွားပါမယ်။

Installation & Launch

Lexo ကို အလွယ်တကူ သုံးနိုင်ဖို့ Fast Python package installer ဖြစ်တဲ့ uv ကို သုံးဖို့ အကြံပြုပါတယ်။ uv ရှိရင် Python 3.11+ ကိုပါ အလိုအလျောက် စီမံပေးသွားမှာပါ။

Terminal / Command Prompt တွင် တစ်ကြိမ် Run ရန် -

# uv ဖြင့် Install ပြုလုပ်ခြင်း (Recommended)
uv tool install lexo

# uv မရှိသေးပါက pip ဖြင့်လည်း သွင်းနိုင်ပါတယ်
# pip install lexo

# Google Account ချိတ်ဆက် Login ဝင်ရန်
lexo login

# Desktop GUI App ကို ဖွင့်ရန်
lexo gui

Demo Videos & Workflow

အောက်က Video လေးမှာတော့ Desktop App မှာ Scanned PDF တစ်ခုကို ဖွင့်ပြီး စာအုပ် နှစ်မျက်နှာ ကပ်နေတာကို ခွဲထုတ်တာ၊ Crop လုပ်တာနဲ့ OCR Run တာတွေကို လက်တွေ့ Workflow အတိုင်း မြင်သာအောင် ပြပေးထားပါတယ်။

LEXO Desktop App — Scan, crop, split, and OCR workflow

lexo ocr အတွက် Google Cloud One-Time Setup

OCR သုံးဖို့အတွက် ပထမဆုံးအကြိမ်မှာ Google Cloud Console ကနေ Drive API ဖွင့်ပြီး credentials.json ယူရတဲ့ One-Time Setup လေး တစ်ခါလုပ်ပေးဖို့ လိုပါတယ်။ ဖိုင်ထည့်ပြီးတာနဲ့ Account > Sign in နှိပ်ပြီး အမြဲတမ်း တန်းသုံးလို့ရပါပြီ။

LEXO — Google Cloud and Drive API one-time setup

ရှေ့ဆက်လုပ်ဖြစ်မယ့်အရာတွေ

လက်ရှိ Lexo က စာအုပ် Scan တွေနဲ့ Legacy Burmese Font တွေကို သန့်ရှင်းတဲ့ စာသား Editable Text အဖြစ် ဆွဲထုတ်ပေးတဲ့ နေရာမှာပဲ အဓိက Focus ထားပါတယ်။ ဇယားကွက်ပုံစံမပျက် ဆွဲထုတ်ပေးတာ Table structure extraction၊ စာမျက်နှာ Layout အတိုင်း ခွဲခြားတာ Layout-aware extraction နဲ့ Semantic field detection လိုမျိုး Document Intelligence ပိုင်းတွေတော့ မပါသေးပါဘူး။

ရှေ့လျှောက် မြန်မာစာအတွက် Reliable ဖြစ်ပြီး အခမဲ့ သုံးလို့ရတဲ့ Model/Approach ကောင်းကောင်း ရလာခဲ့ရင် ဒါတွေကို Next Step အနေနဲ့ ထပ်ဖြည့်သွားဖို့ အစီအစဉ် ရှိပါတယ်။

လက်ရှိကတော့ ကိုယ်တိုင်လည်း သုံးရင်း၊ လိုအပ်တာလေးတွေ ထပ်ပြီး Update လုပ်ရင်းပေါ့။ လိုအပ်တဲ့သူတွေ စမ်းသုံးကြည့်ပြီး လိုအပ်ချက်တွေ၊ Feedback လေးတွေရှိရင်လည်း မျှဝေပေးကြပါဦးဗျာ!