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 с тегами.
Бумажный ящик, кстати, я не выбросил. Но открываю его теперь раз в год, чтобы отсканировать накопившееся и снова про него забыть.