Scrinium is a self-hosted PDF document library with local OCR — scan it, drop it, or email it in, and every page becomes searchable. Your papers stay on your own server, and you can export the whole library any time.
Bills, contracts, records, manuals — they pile up somewhere. Scrinium turns them into a searchable archive on your own hardware, and never holds them hostage.
Your uploaded files are never mutated — the OCR'd copy is a separate file, and pretty filenames are applied only at download. What you put in is exactly what you can take out.
Text recognition runs on your own machines — Tesseract in the container, or noticeably better results through an Apple Vision sidecar on a Mac. No cloud OCR API ever sees your documents.
Hierarchical tags, correspondents, document types, custom fields, and classification rules you can read and reason about — no trained models guessing at your filing, by design.
One-click full-library export: originals, OCR'd archives, and a metadata manifest. Coming from Paperless-ngx? Import brings your metadata with it.
Four ways in, one fast search out.
Upload (chunked for big files), a watched folder where folder names become tags, email-in, or the iOS companion app.
Tesseract by default, Apple Vision via a Mac sidecar for better results. Failures degrade gracefully — a document is never lost.
Postgres full-text search across everything, with jump-to-match right inside the PDF viewer, plus saved views and an insights dashboard.
Hierarchical tags with colors, correspondents, document types, custom fields, notes, and dates extracted from the text itself.
Rotate, delete, and split pages; share links; bulk actions; and a soft-delete trash with retention — manage safely.
Live progress with real ETAs, and pause/resume that survives restarts — big backlogs process on your schedule.
Scrinium was built to fix the weak spots — graceful OCR failure instead of lost documents, transparent rules instead of trained models, honest ETAs, and originals that are never touched. And it imports your Paperless-ngx library with metadata intact.
The name is Latin: a scrinium was the cylindrical case Romans used to hold their scrolls — the ancestor of the word "shrine."
You need Docker with Compose. A NAS is a good home; the Portainer stack file works as-is.
One compose command brings up Postgres, the API, and the worker.
The first visit routes to a setup page that creates the initial user.
Upload, point a watched folder at it, or wire up email-in — and search.
Open http://<host>:8220 (Portainer stack) and follow the setup page. Migrating? Import your Paperless-ngx export from Settings.