Paperless-ngx: как я перестал бояться бумажек

У меня дома был ящик. Обычный ящик, куда годами падали договоры, чеки на технику, квитанции, справки и прочая бумага, которую «вдруг понадобится». Найти что-то в нём было невозможно. Решение — Paperless-ngx: сервис, который сканы бумажек превращает в нормальный искабельный архив.

Поднял в Docker, как всё остальное, в /app/paperless/. Минимальный стек — само приложение, Redis и Postgres:

services:
  paperless:
    image: paperlessngx/paperless-ngx:2.14.7
    depends_on: [db, redis]
    environment:
      PAPERLESS_REDIS: redis://redis:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_OCR_LANGUAGE: rus+eng
      PAPERLESS_CONSUMER_POLLING: 30
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./consume:/usr/src/paperless/consume
    ports:
      - "8000:8000"

Главная магия — папка consume. Кидаешь туда PDF или картинку, и Paperless её сам подхватывает: прогоняет через OCR (у меня rus+eng, потому что половина бумаг — на русском), распознаёт текст и складывает документ в архив. После этого по бумажке можно искать как по тексту: вбил «договор аренды 2023» — и вот он.

Сканер у меня выдаёт в сетевую папку, которую я просто примонтировал в consume. То есть процесс целиком: положил лист в сканер, нажал кнопку — через минуту документ уже в архиве, распознан и проиндексирован. Руками не трогаю вообще.

Дальше — организация. Тут две вещи, без которых архив быстро превращается в свалку:

Самое приятное — Paperless умеет назначать их автоматически по правилам. Я один раз вручную разметил десяток чеков из одного магазина, и теперь он сам ставит тег чеки и нужного корреспондента на всё похожее. Чем больше документов — тем умнее угадывает.

Отдельно про дату. Paperless вытаскивает дату прямо из текста документа, так что чек двухлетней давности встаёт в архив под своей реальной датой, а не под датой сканирования. Мелочь, а порядок наводит.

Ну и про бэкап, потому что архив документов терять нельзя. Тут есть встроенный экспортёр, который выгружает всё в человекочитаемый вид (PDF + метаданные в JSON), а не только дамп базы:

docker compose -f /app/paperless/docker-compose.yml \
  exec paperless document_exporter ../export

Эту папку export я гоню в свой обычный ночной бэкап вместе с остальными томами. Если завтра сервер сгорит — восстановлю не дамп непонятного формата, а нормальные PDF с тегами.

Бумажный ящик, кстати, я не выбросил. Но открываю его теперь раз в год, чтобы отсканировать накопившееся и снова про него забыть.