# Document Workspace

A self-hosted PDF library with page-based extraction, optional OCR, full-text search and source-page previews. The public demonstration is read-only and contains synthetic documents. It is not a private upload service.

## Run Locally

Python 3.11 or later is required. The source package includes the built frontend. Run `python start.py` from the package directory. It creates a project-local environment, installs the pinned Python dependencies and starts http://127.0.0.1:8765/ . It does not install system packages, enable remote access or contact an AI service.

For scan OCR on Debian 12, install `poppler-utils`, `tesseract-ocr`, `tesseract-ocr-eng` and optionally `tesseract-ocr-deu` using your system package manager. Without those programs, embedded PDF text extraction works and missing OCR is explicitly reported. Set `DOCWORK_OCR_LANG=eng+deu` for both installed language packs. No output translation is performed.

Import one or more PDFs, wait for processing, then search or select a document. Each search result identifies a physical page. Switch between the source preview and extracted text; download the original, per-page CSV, text or JSON. OCR can misread characters: the source page remains authoritative. The default OCR mode processes only pages without embedded text. Mixed image/text pages carry a warning; select OCR every page if a scan also has a digital footer or other embedded text. The tool does not infer whether all visible text was captured.

Limits: 10 MiB per PDF, 20 MiB total source PDFs per upload, 10 files per upload, 50 pages per PDF, one processing worker, 12 pending documents, 100 stored documents and 250 MiB of source PDF storage. Encrypted PDFs are rejected. A document that times out or cannot be parsed has an explicit failed status, not fabricated text.

The local service stores PDFs and its SQLite index under `data/` unless `DOCWORK_DATA_DIR` is set. Do not expose writable mode directly to the internet. Remote multi-user authentication, regulated retention and compliance certification are not included. Back up the entire data directory while the service is stopped; preserve the matching application version.

## Reproduce Checks

Backend: `python -m unittest discover -s backendtests -v` after installing the test requirements listed in backend/README.md. Frontend: `npm install` and `npm run build` in frontend/. Browser integration checks are in frontend/tests/browser.mjs. All supplied demonstration fixtures are synthetic, not customer documents.

## Configured Handoff

The reusable source package is separate from the proposed EUR690 configuration and verified deployment handoff described in OFFER.md. No order, subscription or charge is created by using this software.

See THIRD-PARTY-NOTICES.md for dependencies and distribution limits. No Poppler or Tesseract binaries are included in the source package.
