Tropic Host

Paperless-ngx: собственный архив документов с OCR на VPS

5 мин чтения
Tropic
Paperless-ngx: собственный архив документов с OCR на VPS

Language: ru

Paperless-ngx: как создать собственный архив документов с поиском по тексту

Вы помните, что в договоре была указана важная сумма, но файл называется scan_2024_03_17.pdf и лежит среди сотен похожих документов. Обычный файловый менеджер ищет по имени файла, тогда как нужные слова находятся внутри скана.

Paperless-ngx решает эту проблему. Вы загружаете PDF, фотографию квитанции или вложение из электронной почты, а сервис распознаёт текст, индексирует его и превращает разрозненные файлы в единый архив. После этого документ можно найти по фамилии, адресу, номеру счёта или любой фразе на странице.

Что такое Paperless-ngx

Paperless-ngx — бесплатная система управления документами с открытым исходным кодом. Она работает на собственном сервере, принимает файлы из разных источников, выполняет OCR и позволяет искать информацию внутри документов.

Вместо одной жёсткой структуры папок система использует корреспондентов, типы документов, теги, даты, пользовательские поля и правила хранения. Благодаря этому за несколько секунд можно вывести счета за электричество за 2026 год, документы конкретной квартиры или гарантии, срок которых скоро истекает.

Почему Paperless-ngx удобнее обычных папок

Папки работают, пока документов немного и вы помните собственную систему именования. Через несколько лет появляются каталоги Documents, Scans, New и To sort, после чего нужный файл становится трудно найти.

Обычная папкаPaperless-ngx
Поиск по имени файлаПоиск по тексту внутри документа
Один файл в одной папкеНесколько тегов и атрибутов
Ручное именование и сортировкаАвтоматическое назначение метаданных
Вложения нужно сохранять вручнуюИмпорт из электронной почты
Скан остаётся изображениемOCR делает текст доступным для поиска

Вместо того чтобы вспоминать нужный каталог, достаточно помнить одно слово из документа.

Как Paperless-ngx обрабатывает файл

После загрузки сервис:

  1. сохраняет исходный файл;
  2. извлекает существующий текст или запускает OCR;
  3. при необходимости создаёт архивную версию PDF и миниатюры;
  4. добавляет содержимое в полнотекстовый индекс;
  5. применяет правила и предлагает корреспондента, тип, теги и путь хранения.

Начать можно с загрузки и поиска, а автоматизацию добавить позже.

Самые полезные возможности Paperless-ngx

Поиск внутри сканов

После OCR договор можно найти по адресу, счёт — по номеру клиента, а чек — по модели устройства. Например, поиск по фразе «досрочное расторжение» покажет документы, в которых она встречается, даже если исходный PDF состоял только из изображений.

Качество зависит от скана: ровная страница с хорошим контрастом распознаётся лучше, чем тёмная фотография, сделанная под углом. Для русско-английского архива важно установить оба языка OCR.

Автоматическая сортировка

Paperless-ngx может сопоставлять новые документы с теми, которые вы уже обработали. Вы вручную размечаете несколько счетов одного поставщика, после чего сервис предлагает назначить следующие файлы тому же корреспонденту, типу и тегам.

Для строгой логики можно создавать правила на основе текста, имени файла, источника или папки загрузки.

Импорт из электронной почты

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

Счета перестают накапливаться во входящих и становятся доступными для поиска вместе со сканами.

Рабочие процессы, поля и сохранённые представления

Рабочие процессы выполняют действия при загрузке, добавлении или изменении документа, а также по расписанию. Они могут назначить владельца, добавить тег, выбрать тип и установить путь хранения.

Пользовательские поля превращают архив в небольшую базу данных. Для договора можно хранить дату окончания, для счёта — сумму и срок оплаты, а для оборудования — серийный номер. Сохранённые представления затем могут показывать, например, документы с пометкой «требуется оплата» или гарантии, срок которых истекает в этом месяце.

Пакетное сканирование со штрихкодами

Paperless-ngx умеет разделять один большой скан на несколько документов с помощью штрихкодов. Между бумагами можно помещать разделительные страницы или прикреплять код ASN к первому листу.

ASN — это архивный серийный номер, который связывает цифровую копию с бумажным оригиналом. Такой подход удобен при оцифровке больших стопок документов.

Версии и необязательные функции ИИ

В серии Paperless-ngx 3.x появились версии документов, наборы ссылок для общего доступа и встроенные функции ИИ. Если подключить модель, сервис может предлагать метаданные и отвечать на вопросы по документам.

ИИ не нужен для основных возможностей: OCR, поиск, правила, теги и импорт почты работают без него. При использовании внешнего API ИИ часть текста может покинуть сервер, а локальной модели потребуется больше ресурсов.

Кому подходит Paperless-ngx

Для личного или семейного архива: договоры, страховые полисы, выписки, гарантии, чеки, документы на жильё и инструкции к оборудованию.

Для фрилансеров и небольших компаний: счета, акты, договоры, расходы и переписка с контрагентами. Импорт почты сокращает ручную работу, а права доступа позволяют делиться документами.

Для административных процессов: быстрый поиск по исходным документам, выборки по поставщику и периоду, а также очередь необработанных файлов.

Paperless-ngx не заменяет бухгалтерскую программу, электронную подпись или корпоративную ECM-систему.

Какой сервер нужен Paperless-ngx

Нагрузка зависит от количества страниц, качества сканов, частоты загрузок и дополнительных компонентов. В качестве практической отправной точки можно использовать следующие параметры:

СценарийCPURAMДиск
Личный архив2 vCPU2 GB30–50 GB NVMe или больше
Семья или небольшая команда2–4 vCPU4 GB60–100 GB NVMe или больше
Большие пакеты, файлы Office, локальный ИИ4 vCPU или больше8 GB или большеРазмер архива плюс запас

На слабом сервере интерфейс может работать нормально, но OCR больших документов будет выполняться медленно. Tika и Gotenberg для Word, Excel и других офисных форматов также увеличивают потребление памяти.

Планируйте ёмкость диска с запасом: кроме оригиналов, система может хранить архивные версии, миниатюры, индекс, базу данных и временные файлы. Для резервных копий тоже потребуется отдельное место.

Установка Paperless-ngx на VPS с Docker

Самый простой поддерживаемый способ — Docker Compose. Вам понадобятся Linux-сервер, Docker Engine и плагин Compose.

Официальный проект предоставляет интерактивный установщик:

bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)"

Он запросит каталог, базу данных, порт, язык OCR, дополнительные компоненты и учётную запись администратора, затем создаст конфигурацию Compose и запустит контейнеры.

На рабочем сервере безопаснее сначала скачать и проверить скрипт:

curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh \
  -o install-paperless-ngx.sh
less install-paperless-ngx.sh
bash install-paperless-ngx.sh

Из каталога установки состояние запуска можно проверить такими командами:

docker compose ps
docker compose logs -f webserver

Для русской и английской обработки OCR обычно указывают rus+eng и устанавливают в Docker дополнительные языковые данные rus eng.

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

Paperless-ngx на VPS tropic.host

Для небольшого архива подойдёт VPS с 2 vCPU, 2–4 GB RAM и NVMe-накопителем. На tropic.host можно развернуть Ubuntu, установить Docker и сделать Paperless-ngx доступным с компьютера и телефона без домашнего NAS.

VPS работает круглосуточно, поэтому сервис сможет регулярно забирать вложения из электронной почты. Однако документы часто содержат персональные данные: используйте HTTPS или VPN, SSH-ключи, ограничивающий доступ межсетевой экран и независимые резервные копии.

Безопасность и резервные копии

В Paperless-ngx нет встроенного сквозного шифрования документов. Пользователь с полным доступом к серверу, томам Docker или резервной копии потенциально может прочитать архив.

Минимальные меры:

  • размещайте сервис только на доверенной инфраструктуре;
  • обновляйте систему и контейнеры;
  • ограничьте доступ по SSH ключами;
  • храните зашифрованные копии вне основного сервера;
  • периодически проверяйте восстановление.

Для миграции и резервного копирования предусмотрен встроенный document_exporter:

docker compose exec webserver document_exporter ../export

Скопируйте каталог экспорта на другое устройство или в независимое хранилище. Копия на том же VPS не защитит от повреждения диска, случайного удаления или потери доступа.

Стоит ли устанавливать Paperless-ngx

Paperless-ngx полезен, когда проблема уже не в хранении файлов, а в их поиске. Он превращает сканы, вложения и PDF с непонятными именами в архив, где документы находятся по содержимому и обрабатываются по единым правилам.

Для начала достаточно установить сервис, настроить языки OCR и загрузить первые файлы. Теги, импорт почты, рабочие процессы, штрихкоды и функции ИИ стоит добавлять, когда у вас появится понятный повторяющийся процесс.

FAQ

Можно ли использовать Paperless-ngx бесплатно?

Да. Это проект с открытым исходным кодом. Расходы возникают только на оборудование, VPS, домен или внешние сервисы.

Умеет ли Paperless-ngx распознавать русский текст?

Да. OCR использует языковой пакет Tesseract rus. Для смешанного архива обычно настраивают rus+eng.

Удаляется ли исходный файл после OCR?

Нет. Исходный файл сохраняется. В зависимости от настроек рядом с ним может создаваться отдельная архивная версия PDF.

Можно ли загружать документы с телефона?

Да. Можно использовать веб-интерфейс, API, совместимое мобильное приложение или пересылать документ на подключённый адрес электронной почты.

Достаточно ли резервной копии VPS?

Снимок VPS полезен, но лучше дополнить его встроенным экспортом и хранить отдельную копию. Важно не только создать архив, но и проверить восстановление на чистой установке.