2.4 KiB
2.4 KiB
Paperless + Ollama: вопросы по документам
Скрипт ищет по документам в Paperless-ngx (full-text по OCR) и отвечает на вопрос, подставляя найденный текст в модель Ollama (Saiga).
Требования
- Python 3.9+
- Доступ к API Paperless-ngx (контейнер 104 → укажи его URL)
- Доступ к Ollama (например на VM 192.168.1.200:11434)
Переменные окружения
| Переменная | Обязательная | По умолчанию | Пример |
|---|---|---|---|
PAPERLESS_URL |
да | — | http://192.168.1.104:8000 |
PAPERLESS_TOKEN |
да | — | токен из Paperless (см. ниже) |
OLLAMA_URL |
нет | http://localhost:11434 |
http://192.168.1.200:11434 если скрипт на другой машине |
OLLAMA_MODEL |
нет | saiga |
имя модели в Ollama |
PAPERLESS_MAX_DOCS |
нет | 5 |
сколько документов подставлять в промпт |
Токен Paperless
В веб-интерфейсе Paperless: My Profile (меню пользователя) → кнопка обновления токена (circular arrow) → скопировать токен. Либо создать токен в Django admin.
Запуск
cd homelab
export PAPERLESS_URL="http://192.168.1.104:8000" # или IP/порт где крутится контейнер 104
export PAPERLESS_TOKEN="твой_токен"
# Если Ollama на другой машине:
export OLLAMA_URL="http://192.168.1.200:11434"
python3 paperless-ollama-ask.py "номер паспорта?"
python3 paperless-ollama-ask.py "когда истекает договор?"
Скрипт: ищет в Paperless по фразе (по OCR), берёт до 5 документов, подставляет их текст в промпт и отправляет в Ollama. Ответ выводится в stdout.
Где запускать
- На VM с Ollama (192.168.1.200):
OLLAMA_URL=http://localhost:11434,PAPERLESS_URL— адрес контейнера 104 (напримерhttp://192.168.1.104:8000илиhttp://host-104:8000если есть DNS). - С своей машины: оба URL с IP (Ollama и Paperless), порт 11434 и 8000 соответственно.