AKHIL SINGH
PDF# Report| item | qty ||------|-----|| bolt | 40 || nut | 120 |QUEUEDPROCESSINGDONE

A self-hosted web UI for Docling, the PDF-to-Markdown library. Batch upload, a job queue, side-by-side preview, all in one Docker image.

The problem

Docling is very good at turning PDFs into clean Markdown. Tables come out as tables and OCR works. Running it yourself is the hard part: heavy ML dependencies, model caches, and glue code before you can convert one page. Most people give up before they get there.

What I built

A browser UI on top of it. Drag in one PDF or fifty. Set OCR, table extraction and image handling once for the batch or per file. Watch jobs move through queued, processing, serializing, bundling and done. Check the Markdown side by side against the original, then download a single file or the whole batch as a ZIP.

How it works

One container, run as a modular monolith. Uvicorn serves the FastAPI endpoints and the compiled React SPA. An in-process worker coordinator polls a SQLite-backed job queue and hands conversions to Docling. A failed file is isolated so it doesn't block the rest of the batch. Two Docker volumes persist uploads and results, and the Docling model cache, so restarts don't re-download models.

GitHub Actions builds and publishes the image to Docker Hub.

Outcome

Public on GitHub and Docker Hub. One docker run and it is available on localhost.