An automated document analyzer for Paperless-ngx using OpenAI API, Ollama, Deepseek-r1, Azure and all OpenAI API compatible Services to automatically analyze and tag your documents.
0
stars
736
commits
JavaScript
primary language
Feb 24, 2026
updated
An AI-powered document processing system built on top of Paperless-ngx, featuring domain-specific expert pipelines, automatic document normalization, and visual RAG capabilities.
qwen3-vl:8b for multimodal document analysisBenefits:
Configuration:
# Enable/disable automatic normalization
ENABLE_AUTO_NORMALIZATION=true
# Storage location (container path)
NORMALIZED_IMAGES_DIR=/app/data/normalized
# Batch job limit
NORMALIZATION_BATCH_LIMIT=50
See AUTOMATIC_NORMALIZATION_PLAN.md for implementation details.
http://host.docker.internal:11434)git clone <repository-url>
cd paperless-ai
# Copy environment template
cp docker-compose.env.example docker-compose.env
# Edit docker-compose.env with your settings
# Key variables: PAPERLESS_API_TOKEN, HF_TOKEN (for private models)
# Start all services
docker compose --env-file docker-compose.env up --build
# Or start specific services
docker compose --env-file docker-compose.env up paperless-ai visual-rag qdrant postgres
# Check paperless-ai health
curl http://localhost:3000/health
# Check normalization health
curl http://localhost:3000/api/normalization/health
# Check Prometheus metrics
curl http://localhost:3000/metrics | grep paperless_ai_normalization
┌─────────────────────────────────────────────────────────────────┐
│ Paperless-AI Stack │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ Paperless-ngx│───▶│ paperless-ai │───▶│ Expert Pipeline │ │
│ │ (Port 8000)│ │ (Port 3000) │ │ (Stage 1-5) │ │
│ └──────────────┘ └──────────────┘ └─────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Visual RAG │ │ Normalization │ │
│ │ (ColQwen3) │ │ (Stage 3) │ │
│ │ Port 8001 │ │ qwen3-vl:8b │ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Qdrant │ │ Disk Storage │ │
│ │ (Vectors) │ │ /app/data/ │ │
│ │ Port 6333 │ │ normalized/ │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
# Run all tests
npm test
# Run specific test suites
npm test -- test/unit/PreVisionNormalizer.test.js
npm test -- test/integration/normalization-pipeline.test.js
# Run with coverage
npm run test:coverage
# Integration tests (requires sidecar)
npm run test:integration
POST /api/documents/:id/process - Process document through Expert PipelineGET /api/documents/:id/metadata - Get extracted metadataGET /api/normalized/:docId/:page - Serve normalized images (persisted or on-demand)GET /api/normalization/health - Normalization statistics and healthPOST /api/normalization/trigger - Manually trigger normalizationPOST /api/normalization/batch - Run batch normalization jobPOST /api/visual-rag/query - Visual similarity searchGET /api/visual-rag/normalized/:docId - On-demand normalized renderingGET /health - Service health checkGET /metrics - Prometheus metrics endpointpaperless_ai_normalization_total (Counter) - Total operations with labels: status, triggerpaperless_ai_normalization_latency_seconds (Histogram) - Latency by stagepaperless_ai_normalization_pending (Gauge) - Documents pending normalizationpaperless_ai_normalization_disk_mb (Gauge) - Disk usage for normalized imagespaperless_ai_pipeline_executions_total - Pipeline executionspaperless_ai_pipeline_duration_seconds - Pipeline durationpaperless_ai_stage_executions_total - Per-stage execution countsSee CONTRIBUTING.md for development guidelines.
EXPERT_PIPELINE_DECISION_TABLE.md and PIPELINE_STAGE_CONTRACTS.mdSee LICENSE for details.
JavaScript
58.8%
TypeScript
24.7%
Python
10.8%
EJS
2.8%
CSS
1.2%
An automated document analyzer for Paperless-ngx using OpenAI API, Ollama, Deepseek-r1, Azure and all OpenAI API compatible Services to automatically analyze and tag your documents.
0
stars
736
commits
JavaScript
primary language
Feb 24, 2026
updated
An AI-powered document processing system built on top of Paperless-ngx, featuring domain-specific expert pipelines, automatic document normalization, and visual RAG capabilities.
qwen3-vl:8b for multimodal document analysisBenefits:
Configuration:
# Enable/disable automatic normalization
ENABLE_AUTO_NORMALIZATION=true
# Storage location (container path)
NORMALIZED_IMAGES_DIR=/app/data/normalized
# Batch job limit
NORMALIZATION_BATCH_LIMIT=50
See AUTOMATIC_NORMALIZATION_PLAN.md for implementation details.
http://host.docker.internal:11434)git clone <repository-url>
cd paperless-ai
# Copy environment template
cp docker-compose.env.example docker-compose.env
# Edit docker-compose.env with your settings
# Key variables: PAPERLESS_API_TOKEN, HF_TOKEN (for private models)
# Start all services
docker compose --env-file docker-compose.env up --build
# Or start specific services
docker compose --env-file docker-compose.env up paperless-ai visual-rag qdrant postgres
# Check paperless-ai health
curl http://localhost:3000/health
# Check normalization health
curl http://localhost:3000/api/normalization/health
# Check Prometheus metrics
curl http://localhost:3000/metrics | grep paperless_ai_normalization
┌─────────────────────────────────────────────────────────────────┐
│ Paperless-AI Stack │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ Paperless-ngx│───▶│ paperless-ai │───▶│ Expert Pipeline │ │
│ │ (Port 8000)│ │ (Port 3000) │ │ (Stage 1-5) │ │
│ └──────────────┘ └──────────────┘ └─────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Visual RAG │ │ Normalization │ │
│ │ (ColQwen3) │ │ (Stage 3) │ │
│ │ Port 8001 │ │ qwen3-vl:8b │ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Qdrant │ │ Disk Storage │ │
│ │ (Vectors) │ │ /app/data/ │ │
│ │ Port 6333 │ │ normalized/ │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
# Run all tests
npm test
# Run specific test suites
npm test -- test/unit/PreVisionNormalizer.test.js
npm test -- test/integration/normalization-pipeline.test.js
# Run with coverage
npm run test:coverage
# Integration tests (requires sidecar)
npm run test:integration
POST /api/documents/:id/process - Process document through Expert PipelineGET /api/documents/:id/metadata - Get extracted metadataGET /api/normalized/:docId/:page - Serve normalized images (persisted or on-demand)GET /api/normalization/health - Normalization statistics and healthPOST /api/normalization/trigger - Manually trigger normalizationPOST /api/normalization/batch - Run batch normalization jobPOST /api/visual-rag/query - Visual similarity searchGET /api/visual-rag/normalized/:docId - On-demand normalized renderingGET /health - Service health checkGET /metrics - Prometheus metrics endpointpaperless_ai_normalization_total (Counter) - Total operations with labels: status, triggerpaperless_ai_normalization_latency_seconds (Histogram) - Latency by stagepaperless_ai_normalization_pending (Gauge) - Documents pending normalizationpaperless_ai_normalization_disk_mb (Gauge) - Disk usage for normalized imagespaperless_ai_pipeline_executions_total - Pipeline executionspaperless_ai_pipeline_duration_seconds - Pipeline durationpaperless_ai_stage_executions_total - Per-stage execution countsSee CONTRIBUTING.md for development guidelines.
EXPERT_PIPELINE_DECISION_TABLE.md and PIPELINE_STAGE_CONTRACTS.mdSee LICENSE for details.
JavaScript
58.8%
TypeScript
24.7%
Python
10.8%
EJS
2.8%
CSS
1.2%