LEXO

LEXO 01 LEXO

v0.4.1 AGPL-3.0

Scanned Burmese in.Unicode text out.

စကင်ဖတ်ထားတဲ့ မြန်မာစာမှ Unicode စာသားသို့

LEXO is a free desktop app that turns PDFs and images into clean, editable text, with Burmese as its first language. Crop and split the pages, run Google Docs OCR through your own Google account, proofread each page beside its image, then export.

Install

uv tool install lexo

then

lexo gui

Needs Python 3.11+. Windows, macOS, Linux. Details PyPI

LEXO window before OCR: a scanned Burmese page in the preview and an empty text pane.
LEXO window after Google Docs OCR: the same scanned Burmese page beside its recognized Myanmar Unicode text.
The real LEXO window, before and after one Google Docs OCR run. The sample page is set from LEXO's own Burmese README. Drag the bar or use the arrow keys.

Scan to text in 47 seconds

A short animated overview. Music only, no narration.

What stays on your computer, and what doesn't

LEXO is local-first, not offline. Everything except Google Docs OCR runs on your machine. When you choose OCR, this is exactly what happens.

On your computer

  • Opening PDFs, images, and image sets
  • Cropping, splitting, rotating, merging, and reordering pages
  • Reading the embedded text layer of digital PDFs
  • Proofreading and editing the text
  • Exporting TXT, Markdown, and JSONL

Through your own Google account

Only when you pick Google Docs OCR

  • Each page is rendered to an image and uploaded to your Google Drive
  • Google Docs OCR reads it; LEXO downloads the text
  • LEXO deletes the temporary Drive file right after
  • Access is limited to the drive.file scope: only files LEXO itself created
  • Your sign-in token lives in the OS keychain; lexo logout removes it

OCR needs a one-time Google Cloud setup: a project, the Drive API, an OAuth consent screen, and a credentials.json file. It's six steps, and the first walkthrough video shows all of them. Read the setup guide

One document, start to finish

LEXO works like an editor, not an upload box. Your original file is untouched until you save.

  1. Open

    Open a PDF, a single image, or a set of images. Digital and scanned pages can live in the same document.

    LEXO welcome screen with Import PDF or Image, Select Image Set, and Batch OCR PDFs buttons.
  2. Tune the pages

    Drag a crop box over the page to drop running heads and page numbers. Drag a line to split two-up spreads. Rotate, reorder, or delete pages for this page, all pages, or a selection.

    LEXO crop editor: a blue crop box drawn over a scanned Burmese page, with crop margins in the Tune panel.
  3. Run

    Text layer copies the text a digital PDF already has: instant and lossless. Google Docs OCR reads scans. Pages report back one by one; transient failures retry, and Retry Failed Pages re-runs only what failed.

    LEXO mid-run: Google Docs OCR at 25% with page thumbnails showing done and pending badges.
  4. Proofread

    Every page sits beside its editable text, so you fix what the text layer or OCR got wrong right where you see it. The Myanmar font is bundled, so Burmese renders correctly even on machines without one.

    နိုိုင် နိုင်

    A doubled vowel sign from a PDF text layer, corrected in LEXO's text pane.
    LEXO proofreading: a doubled vowel sign selected in the text pane, beside the page it came from.
  5. Export

    Plain text, Markdown with YAML frontmatter, or JSONL with one record per page for NLP and LLM work.

    lexo-sample-digital.md

    ---
    source: "lexo-sample-digital.pdf"
    doc_id: "e2bd21cca7cdcefd5ed317ad90776f845d8934ca763010fce8e6fba0e5562e30"
    page_count: 9
    extracted_at: "2026-10-22T06:59:36.604240+00:00"
    ---
    
    ## Page 1
    
    Lexo — စာရွက်စာတမ်းမှ စာသားသို့
    Local EXtraction and OCR
    Lexo (Local EXtraction and OCR) သည် မိမိစက်ထဲတွင်ပင် သီးခြား
    Run နိုင်သည့် Desktop Document OCR Tool တစ်ခု ဖြစ်ပါသည်။ PDF
    များနှင့် ဓာတ်ပုံများမှ စာသားများကို ပြင်ဆင်ရလွယ်ကူသည့် Text ဖိုင်အဖြစ်
    ပြောင်းလဲပေးနိုင်ပြီး၊ အခမဲ့ဖြစ်ကာ တိကျမှုမြင့်မားသည့် Google Docs
    OCR ကို အသုံးပြုထားသောကြောင့် မြန်မာစာ (Myanmar script) အတွက်
    အထူးကောင်းမွန်စွာ အလုပ်လုပ်ပါသည်။
    လုပ်ဆောင်ချက် အများစုသည် မိမိစက်ထဲမှာပင် အလုပ်လုပ်ပါသည်။
    Google Docs OCR အသုံးပြုချိန်တွင်သာ အင်တာနက် လိုအပ်မည်ဖြစ်ပြီး၊
    မိမိ၏ Google Account ကို တိုက်ရိုက်သုံးသည်ဖြစ်၍ ကုန်ကျစရိတ် လုံးဝ
    မရှိပါ။ Lexo ကို မြန်မာ OCR အလုပ်များအတွက် အထူးရည်ရွယ်၍
    တည်ဆောက်ထားခြင်း ဖြစ်ပါသည် (ဥပမာ စကင်ဖတ်ထားသည့် စာအုပ်များ၊
    PDF ဟောင်းများ၊ Dataset ပြင်ဆင်ခြင်းနှင့် EPUB ထုတ်လုပ်ခြင်း စသည့်
    အင်္ဂလိပ်စာလုံး ဦးစားပေး OCR Tool များ အဆင်မပြေသည့်နေရာများ
    အတွက် အထူးသင့်တော်ာ်ပါသည်။) သင့်လျော်သည့် Google Docs OCR
    Language Hint ပေးလိုက်ပါက အခြား ဘာသာစကားများကိုလည်း OCR
    ပြုလုပ်နိုင်ပါသည်။
    မြန်မာစာ ဦးစားပေး OCR Workflow - OCR Language Hint ၏ မူလ
    တန်ဖိုး (Default) ကို မြန်မာစာ (my) ဟု သတ်မှတ်ထားပြီး Unicode
    Normalization နှင့် မြန်မာ Font ပါဝင်သောကြောင့် ပြန်လည်စစ်ဆေး
    ရာတွင် အဆင်ပြေပါသည်။ မိမိ Google Account ဖြင့် အခမဲ့ အသုံးပြုနိုင်
    ခြင်း - ငွေပေးရသည့် OCR API များ မလိုဘဲ စာမျက်နှာှာအလိုက်
    ကုန်ကျစရိတ်မရှိပါ။ ကြီးမားသည့် Local OCR Model များကိုလည်း ဒေါင်း
    Page 1 of the Markdown LEXO exported after that correction, unedited.
    LEXO after exporting Markdown, showing the Exported lexo-sample-digital.md confirmation.

Made for Myanmar script

Many OCR tools are built around Latin script and treat Burmese as an afterthought. LEXO starts from Burmese.

Burmese by default
The OCR language hint is my unless you say otherwise. Pass --lang, or LEXO_OCR_LANGUAGE, for another language.
Unicode that stays correct
Text is normalized to NFC. Zero-width spaces, which mark Burmese word and line breaks, are kept; stray control characters are dropped.
Legacy text layers, recognized
Layers made of Private Use Area glyphs are detected as unusable and sent to OCR. ASCII-mapped fonts like Win Innwa come out as Latin letters: switch to Google Docs OCR and LEXO reads the page as an image instead.
မြန်မာ
  1. မ U+1019
  2. ◌ြ U+103C
  3. န U+1014
  4. ◌် U+103A
  5. မ U+1019
  6. ◌ာ U+102C
How မြန်မာ is stored in Unicode
Text-layer extraction on a Win Innwa PDF returns the ASCII the font hides behind. Frame from walkthrough 3.
Text-layer extraction on a Win Innwa PDF returns the ASCII the font hides behind. Frame from walkthrough 3.

A folder of PDFs, one text file each

Point LEXO at a folder or a handful of PDFs. Each source becomes a UTF-8 .txt with the same name. Files that already exist are skipped, so a stopped batch picks up where it left off.

lexo ocr-batch ./pdfs --out-dir ./txt
  • Resumable: existing outputs are skipped unless you pass --overwrite
  • Every page is OCR'd by default; --no-force-ocr keeps usable embedded text
  • In the app: Batch OCR PDFs on the welcome screen, or Ctrl+Alt+O
Batch OCR PDFs dialog: 3 PDF files selected, an output folder, OCR language my, and Start OCR.

PDF tools that never need a sign-in

The same engine runs from the command line. None of these touch the network.

Pull out a page range
lexo pdf extract book.pdf --pages "1-3,7,10-" -o subset.pdf
Split into ten-page files
lexo pdf split book.pdf --every 10
Trim 8% off top and bottom
lexo pdf crop book.pdf --top 8 --bottom 8 -o trimmed.pdf
Split two-up spreads in half
lexo pdf split-spread scans.pdf -o pages.pdf
Rotate pages
lexo pdf rotate book.pdf -d 90 -o rotated.pdf
Merge files in order
lexo pdf merge a.pdf b.pdf -o book.pdf
Full CLI reference

See the whole thing in three minutes

Three short, silent walkthroughs with on-screen captions, recorded in the real app.

OCR a scanned Burmese PDF in the desktop app

Open the file, split two-up spreads and crop margins in the visual editor, run Google Docs OCR, review each page, export plain text.

Length 0:37 · No sound; on-screen captions.

Install with uv and the one-time Google Cloud setup

uv tool install lexo, a Google Cloud project, the Drive API, the OAuth consent screen, credentials.json in the config folder, then lexo login.

Length 1:34 · No sound; on-screen captions.

Legacy-font PDFs: getting real Burmese text

Win Innwa and similar fonts store Burmese as ASCII letters. Spot the case in the text pane, switch to Google Docs OCR, and get Myanmar Unicode back.

Length 0:45 · No sound; on-screen captions.

Free, open source, and yours to run

LEXO is licensed under the AGPL-3.0. There is no account, no subscription, and no per-page fee. Google Docs OCR is free through your own Google account. The desktop app and the CLI drive the same engine, so a workflow you prove in the GUI can be scripted.

Install LEXO

One Python package carries the CLI and the desktop app. No separate system dependencies.

Read the docs

Install

uv tool install lexo

then

lexo gui

Needs Python 3.11+. Windows, macOS, Linux. Details PyPI