SuperAPI AI Directory

document-parse

Office & productivity

View repository

Updated 10-20 09:59

About this skill

Document parse

Two local engines, picked by input format. Both are deterministic unless an AI model is asked for.

1. Pick the engine

Input Engine Command
PDF, text layer or scanned lit uvx --from liteparse lit parse file.pdf --format markdown -o out.md
PDF where the visual carries meaning (charts, diagrams, handwriting) docparse docparse file.pdf --pdf-backend ai
Photo or scan image (JPG, PNG, TIFF...) needing plain text lit uvx --from liteparse lit parse photo.png -o out.txt
Image needing interpretation docparse docparse photo.png (AI switches on automatically)
DOCX, PPTX, XLSX, ODT, ODP, ODS docparse docparse report.docx
HTML, Markdown, CSV, TEX, RTF, EPUB, EML, MBOX docparse docparse book.epub
Convert between formats docparse docparse notes.md --convert report.docx

Done when you have one engine and one command for each input file.

2. Make sure the engine is installed

lit - run it through uvx --from liteparse lit, which needs nothing installed beyond uv. For repeated use, uv tool install liteparse puts lit on PATH. A bare lit on PATH may be LLVM's test runner instead - lit --help from LiteParse opens with "OSS document parsing tool"; uvx --from liteparse lit sidesteps the clash.

docparse - check with docparse --help. If it is missing:

curl -fsSL https://www.sunholo.com/ailang-parse/install.sh | sh   # installs the AILANG runtime and links docparse into ~/.local/bin

PDF input through docparse also needs Poppler (brew install poppler / apt install poppler-utils) and its local backends (docparse --install-backends). AI features authenticate with Google Application Default Credentials (gcloud auth application-default login). The ailang-parse package on PyPI and npm is a client for the hosted API, not this local CLI.

Done when the command for step 1 prints help without error.

3. Parse

PDFs and images with lit

uvx --from liteparse lit parse file.pdf --format markdown -o out.md
uvx --from liteparse lit parse file.pdf --format json --extract-blocks -o out.json   # headings, tables, lists with bounding boxes
uvx --from liteparse lit parse file.pdf --target-pages "1-5,10" -o out.md
uvx --from liteparse lit parse scan.pdf --ocr-language eng --dpi 300 -o out.md       # OCR engages on pages with no text
uvx --from liteparse lit batch-parse ./in ./out --recursive --extension pdf
uvx --from liteparse lit screenshot file.pdf -o ./shots --target-pages "1,3"        # page images to look at

--format takes text (default), json or markdown. Other options that matter: --no-ocr (faster on known text-layer PDFs), --password, --num-workers N, --extract-form-fields, --extract-annotations, --keep-headers-footers. Full list: lit parse --help.

Office, e-book and email files with docparse

docparse report.docx                         # writes <name>.json and <name>.md where you ran it
docparse *.eml --output-dir parsed/          # several files or a folder in one call compiles once - much faster than a loop
docparse slides.pptx --describe              # AI descriptions of embedded images
docparse report.docx --summarize             # AI summary
docparse file.pdf --pdf-backend ai --ai MODEL   # multimodal AI parse; default model gemini-2.5-flash
docparse in.docx --convert out.html          # targets: html docx pptx xlsx odt odp ods md qmd
docparse notes.md --convert report.docx --reference-doc template.docx

The JSON holds typed blocks (tables with merged cells, track changes, comments, headers and footers, speaker notes, one block set per sheet); the markdown is the LLM-ready rendering. Full option list: docparse --help.

AI paths send the document to an external model and cost money - confirm with the user before running --pdf-backend ai, --describe, --summarize or an image parse on anything sensitive.

Done when the output file exists and is non-empty.

4. Verify

Read the markdown (or the JSON blocks you need) and compare one table and one heading against the source page, using lit screenshot to view the page when needed. Done when the spot-check matches. If a scanned page reads badly in lit, re-run just that page with docparse --pdf-backend ai.