{"data":{"slug":"icereed-paperless-gpt","name":"paperless-gpt","tagline":"Use LLMs and LLM Vision (OCR) to handle paperless-ngx - Document Digitalization powered by AI","github_url":"https://github.com/icereed/paperless-gpt","owner":"icereed","repo":"paperless-gpt","owner_avatar_url":"https://avatars.githubusercontent.com/u/444269?v=4","primary_language":"Go","stars":2533,"forks":185,"topics":["ai","chatgpt","llm","mistral","ocr","ollama","paperless","paperless-ngx"],"archived":false,"github_pushed_at":"2026-07-13T05:50:17+00:00","maintenance_label":"Very active","url":"https://www.graphcanon.com/tools/icereed-paperless-gpt","markdown_url":"https://www.graphcanon.com/tools/icereed-paperless-gpt.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/icereed-paperless-gpt","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=icereed-paperless-gpt","description":"Use LLMs and LLM Vision (OCR) to handle paperless-ngx - Document Digitalization powered by AI","homepage_url":null,"license":"MIT","open_issues":154,"watchers":18,"ai_summary":null,"readme_excerpt":"### Installation\n\n#### Docker Compose\n\nHere's an example `docker-compose.yml` to spin up **paperless-gpt** alongside paperless-ngx:\n\n```yaml\nservices:\n  paperless-ngx:\n    image: ghcr.io/paperless-ngx/paperless-ngx:latest\n    # ... (your existing paperless-ngx config)\n\n  paperless-gpt:\n    # Use one of these image sources:\n    image: icereed/paperless-gpt:latest # Docker Hub (upstream)\n    # image: ghcr.io/icereed/paperless-gpt:latest  # GitHub Container Registry (upstream)\n    # image: ghcr.io/hensing/paperless-gpt:latest  # This fork's GHCR image\n    environment:\n      PAPERLESS_BASE_URL: \"http://paperless-ngx:8000\"\n      PAPERLESS_API_TOKEN: \"your_paperless_api_token\"\n      PAPERLESS_PUBLIC_URL: \"http://paperless.mydomain.com\" # Optional\n      MANUAL_TAG: \"paperless-gpt\" # Optional, default: paperless-gpt\n      AUTO_TAG: \"paperless-gpt-auto\" # Optional, default: paperless-gpt-auto\n      FAIL_TAG: \"paperless-gpt-failed\" # Optional, default: paperless-gpt-failed. Applied to documents whose update is rejected by paperless-ngx, so they don't get re-processed in a loop. Auto-created at startup.\n      # LLM Configuration - Choose one:\n\n      # Option 1: Standard OpenAI\n      LLM_PROVIDER: \"openai\"\n      LLM_MODEL: \"gpt-4o\"\n      OPENAI_API_KEY: \"your_openai_api_key\"\n\n      # Option 2: Mistral\n      # LLM_PROVIDER: \"mistral\"\n      # LLM_MODEL: \"mistral-large-latest\"\n      # MISTRAL_API_KEY: \"your_mistral_api_key\"\n\n      # Option 3: Azure OpenAI\n      # LLM_PROVIDER: \"openai\"\n      # LLM_MODEL: \"your-deployment-name\"\n      # OPENAI_API_KEY: \"your_azure_api_key\"\n      # OPENAI_API_TYPE: \"azure\"\n      # OPENAI_BASE_URL: \"https://your-resource.openai.azure.com\"\n\n      # Option 4: Ollama (Local)\n      # LLM_PROVIDER: \"ollama\"\n      # LLM_MODEL: \"qwen3:8b\"\n      # OLLAMA_HOST: \"http://host.docker.internal:11434\"\n      # OLLAMA_CONTEXT_LENGTH: \"8192\" # Sets Ollama NumCtx (context window)\n      # OLLAMA_HEADERS: \"Authorization=Bearer mytoken\" # Optional headers for reverse-proxy auth\n      # TOKEN_LIMIT: 1000 # Recommended for smaller models\n\n      # Option 5: Anthropic/Claude\n      # LLM_PROVIDER: \"anthropic\"\n      # LLM_MODEL: \"claude-sonnet-4-5\"\n      # ANTHROPIC_API_KEY: \"your_anthropic_api_key\"\n\n      # Optional LLM Settings\n      # LLM_LANGUAGE: \"English\" # Optional, default: English\n\n      # OCR Configuration - Choose one:\n      # Option 1: LLM-based OCR\n      OCR_PROVIDER: \"llm\" # Default OCR provider\n      VISION_LLM_PROVIDER: \"ollama\" # openai, ollama, mistral, or anthropic\n      VISION_LLM_MODEL: \"minicpm-v\" # minicpm-v (ollama) or gpt-4o (openai) or claude-sonnet-4-5 (anthropic/claude)\n      OLLAMA_HOST: \"http://host.docker.internal:11434\" # If using Ollama\n\n      # OCR Processing Mode\n      OCR_PROCESS_MODE: \"image\" # Optional, default: image, other options: pdf, whole_pdf\n      PDF_SKIP_EXISTING_OCR: \"false\" # Optional, skip OCR for PDFs with existing OCR\n\n      # Option 2: Google Document AI\n      # OCR_PROVIDER: 'google_docai'       # Use Google Document AI\n      # GOOGLE_PROJECT_ID: 'your-project'  # Your GCP project ID\n      # GOOGLE_LOCATION: 'us'              # Document AI region\n      # GOOGLE_PROCESSOR_ID: 'processor-id' # Your processor ID\n      # GOOGLE_APPLICATION_CREDENTIALS: '/app/credentials.json' # Path to service account key\n\n      # Option 3: Azure Document Intelligence\n      # OCR_PROVIDER: 'azure'              # Use Azure Document Intelligence\n      # AZURE_DOCAI_ENDPOINT: 'your-endpoint' # Your Azure endpoint URL\n      # AZURE_DOCAI_KEY: 'your-key'        # Your Azure API key\n      # AZURE_DOCAI_MODEL_ID: 'prebuilt-read' # Optional, defaults to prebuilt-read\n      # AZURE_DOCAI_TIMEOUT_SECONDS: '120'  # Optional, defaults to 120 seconds\n      # AZURE_DOCAI_OUTPUT_CONTENT_FORMAT: 'text' # Optional, defaults to 'text', other valid option is 'markdown'\n      # 'markdown' requires the 'prebuilt-layout' model\n\n      # Enhanced OCR Features\n      CREATE_LOCAL_HOCR: \"false\" # Optional, save hOCR files locally","github_created_at":"2024-09-23T12:55:43+00:00","created_at":"2026-07-15T11:17:52.882245+00:00","updated_at":"2026-07-15T11:17:56.356056+00:00","categories":[{"slug":"computer-vision","name":"Computer Vision","url":"https://www.graphcanon.com/categories/computer-vision","markdown_url":"https://www.graphcanon.com/categories/computer-vision.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/computer-vision"},{"slug":"inference-serving","name":"Inference & Serving","url":"https://www.graphcanon.com/categories/inference-serving","markdown_url":"https://www.graphcanon.com/categories/inference-serving.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/inference-serving"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"}],"tags":[{"slug":"ai","name":"ai"},{"slug":"chatgpt","name":"chatgpt"},{"slug":"llm","name":"llm"},{"slug":"mistral","name":"mistral"},{"slug":"ocr","name":"ocr"},{"slug":"ollama","name":"ollama"},{"slug":"paperless","name":"paperless"},{"slug":"paperless-ngx","name":"paperless-ngx"}],"trust":{"provenance":{"is_fork":false,"github_id":861746639,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-15T11:17:53.869Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":2,"days_since_push":2,"last_release_at":"2026-07-08T12:48:58Z"},"security_summary":{"status":"findings","scanner":"osv@v1","low_count":59,"high_count":0,"last_scan_at":"2026-07-15T11:17:54.222Z","medium_count":0,"scan_profile":"deps","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-07-15T11:17:53.636Z"},"deploy":{"source":"dockerfile:Dockerfile","self_host":true,"observed_at":"2026-07-15T11:17:53.636Z","managed_saas":false},"languages":{"value":["go"],"source":"github.language","observed_at":"2026-07-15T11:17:53.636Z"},"has_docker":{"value":true,"source":"dockerfile:Dockerfile","observed_at":"2026-07-15T11:17:53.636Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-07-15T11:17:53.636Z"}}}}