Metadata-Version: 2.4
Name: viparse
Version: 0.1.0
Summary: Vietnamese-first document loader for RAG
Project-URL: Homepage, https://github.com/minhtridinh-kayden/viparse
Project-URL: Repository, https://github.com/minhtridinh-kayden/viparse
Project-URL: Changelog, https://github.com/minhtridinh-kayden/viparse/blob/main/CHANGELOG.md
Author: minhtridinh
Keywords: document,nfc,parser,rag,tcvn3,vietnamese,vni
Requires-Python: >=3.11
Provides-Extra: all
Requires-Dist: langchain-core<1,>=0.3; extra == 'all'
Requires-Dist: llama-index-core<1,>=0.11; extra == 'all'
Requires-Dist: olefile<1,>=0.47; extra == 'all'
Requires-Dist: openpyxl<4,>=3.1; extra == 'all'
Requires-Dist: pdf2image<2,>=1.17; extra == 'all'
Requires-Dist: pdfplumber<0.12,>=0.11; extra == 'all'
Requires-Dist: pillow<12,>=10; extra == 'all'
Requires-Dist: pytesseract<0.4,>=0.3; extra == 'all'
Requires-Dist: python-docx<2,>=1.1; extra == 'all'
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: cyclonedx-bom; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: reportlab<5,>=4; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: langchain
Requires-Dist: langchain-core<1,>=0.3; extra == 'langchain'
Provides-Extra: llamaindex
Requires-Dist: llama-index-core<1,>=0.11; extra == 'llamaindex'
Provides-Extra: ocr
Requires-Dist: pdf2image<2,>=1.17; extra == 'ocr'
Requires-Dist: pillow<12,>=10; extra == 'ocr'
Requires-Dist: pytesseract<0.4,>=0.3; extra == 'ocr'
Provides-Extra: office
Requires-Dist: olefile<1,>=0.47; extra == 'office'
Requires-Dist: openpyxl<4,>=3.1; extra == 'office'
Requires-Dist: python-docx<2,>=1.1; extra == 'office'
Provides-Extra: pdf
Requires-Dist: pdfplumber<0.12,>=0.11; extra == 'pdf'
Description-Content-Type: text/markdown

# viparse

> Vietnamese-first document loader for RAG.

One command turns any Vietnamese document — including legacy **TCVN3/VNI/VISCII** fonts, scanned
PDFs, and old `.doc`/`.xls` files — into clean Unicode **NFC** Markdown/JSON, ready to push into a
vector DB.

## Why

Generic loaders *parse the file* but often emit **garbled diacritics** (legacy fonts) or **wrong
Unicode normalization**. `viparse` handles exactly that Vietnamese layer: detect & convert legacy
encodings to Unicode, enforce NFC, and offer diacritic-aware OCR.

**Backbone principle:** never hand-write a parser. Wrap well-maintained engines behind thin
adapters; if an engine gets a CVE or is abandoned, swap the adapter without touching the rest.
Heavy dependencies are lazy-imported via extras (`viparse[ocr]`, `viparse[office]`).

## Status

Early design. See [`docs/specs/`](docs/specs/README.md) for the full spec map (SPEC-0 … SPEC-8).

## Planned usage

```python
import viparse

docs = viparse.load("tai_lieu_cu.pdf")            # list[Document], already NFC
docs = viparse.load("bang_luong.xlsx", output="markdown", encoding="auto")
```

```bash
viparse ./docs/**/*.pdf -o md
viparse doctor        # list available engines per installed extras
```

## License

TBD.
