**paperless-gpt** is a tool designed to generate accurate and meaningful document titles for [paperless-ngx](https://github.com/paperless-ngx/paperless-ngx) using Large Language Models (LLMs). It supports multiple LLM providers, including **OpenAI** and **Ollama**. With paperless-gpt, you can streamline your document management by automatically suggesting appropriate titles based on the content of your scanned documents.
[](./demo.gif)
## Features
- **Multiple LLM Support**: Choose between OpenAI and Ollama for generating document titles.
- **Easy Integration**: Works seamlessly with your existing paperless-ngx setup.
- **User-Friendly Interface**: Intuitive web interface for reviewing and applying suggested titles.
- **Dockerized Deployment**: Simple setup using Docker and Docker Compose.
## Table of Contents
- [paperless-gpt](#paperless-gpt)
- [Features](#features)
- [Table of Contents](#table-of-contents)
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Docker Compose](#docker-compose)
- [Manual Setup](#manual-setup)
- [Configuration](#configuration)
- [Environment Variables](#environment-variables)
- [Usage](#usage)
- [Contributing](#contributing)
- [License](#license)
## Getting Started
### Prerequisites
- [Docker](https://www.docker.com/get-started) installed on your system.
- A running instance of [paperless-ngx](https://github.com/paperless-ngx/paperless-ngx).
- Access to an LLM provider:
- **OpenAI**: An API key with access to models like `gpt-4o` or `gpt-3.5-turbo`.
- **Ollama**: A running Ollama server with models like `llama2` installed.
### Installation
#### Docker Compose
The easiest way to get started is by using Docker Compose. Below is an example `docker-compose.yml` file to set up paperless-gpt alongside paperless-ngx.
| `OLLAMA_HOST` | The URL of the Ollama server (e.g., `http://host.docker.internal:11434`). Useful if using Ollama. Default is `http://127.0.0.1:11434` | No |
**Note:** When using Ollama, ensure that the Ollama server is running and accessible from the paperless-gpt container.
## Usage
1.**Tag Documents in paperless-ngx:**
- Add the tag `paperless-gpt` to documents you want to process. This tag is configurable via the `tagToFilter` variable in the code (default is `paperless-gpt`).
2.**Access the paperless-gpt Interface:**
- Open your browser and navigate to `http://localhost:8080`.
3.**Process Documents:**
- Click on **"Generate Suggestions"** to let the LLM generate title suggestions based on the document content.
4.**Review and Apply Titles:**
- Review the suggested titles. You can edit them if necessary.
- Click on **"Apply Suggestions"** to update the document titles in paperless-ngx.
## Contributing
Contributions are welcome! Please read the [contributing guidelines](CONTRIBUTING.md) before submitting a pull request.
1.**Fork the Repository**
2.**Create a Feature Branch**
```bash
git checkout -b feature/my-new-feature
```
3.**Commit Your Changes**
```bash
git commit -am 'Add some feature'
```
4.**Push to the Branch**
```bash
git push origin feature/my-new-feature
```
5.**Create a Pull Request**
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.