Vietnamese documents, finally readable by your RAG stack.
viparse turns legacy Vietnamese files — TCVN3/VNI/VISCII fonts, scanned PDFs, old .doc/.xls — into clean Unicode NFC Markdown or JSON. One function call, ready for your vector DB.
B¸o c¸o tµi chÝnh quý II n¨m 2026 cña c«ng ty. ThÞ trêng ViÖt Nam ph¸t triÓn m¹nh.
Báo cáo tài chính quý II năm 2026 của công ty. Thị trường Việt Nam phát triển mạnh.
Your parser reads the file. It doesn't read Vietnamese.
Millions of Vietnamese documents were authored in pre-Unicode fonts — .VnTime, VNI, VISCII. Generic loaders like Unstructured or LlamaParse extract the bytes faithfully and hand your pipeline garbage: "Tiªu ®Ò" instead of "Tiêu đề". Embeddings built on garbled text retrieve nothing. viparse handles exactly that layer: detect the legacy encoding, convert to Unicode, enforce NFC — then get out of your way.
Three steps, one call.
Built for pipelines, not demos.
Two lines to clean text.
import viparse
docs = viparse.load("bao_cao_cu.doc") # list[Document], already NFC
docs = viparse.load("scan.pdf", ocr=True, output="markdown")Try it in your browser.
Paste garbled Vietnamese text, get clean Unicode back — runs entirely client-side via Pyodide. No upload, no server.
Measured on real broken files.
A public corpus of real-world legacy documents, scored on diacritic accuracy against Unstructured, LlamaParse and docling. Numbers coming with v0.2.
| Tool | Diacritic accuracy | Formats | Speed |
|---|---|---|---|
| viparse | — | — | — |
| unstructured | — | — | — |
| llamaparse | — | — | — |
| docling | — | — | — |