Home   2026-08-03 17:31:33

Software-update - Paperless-ngx 3.0.0

Original article

Paperless-ngx logoVersie 3.0.0 van Paperless-ngx is uitgekomen. Met dit opensourceprogramma kunnen documenten worden beheerd, vergelijkbaar met programma's als Immich, Navidrome en Grimmory, die dat voor afbeeldingen, muziek en e-books doen. Ingelezen documenten kunnen worden voorzien van tags, met OCR gescand en worden lokaal in eigen beheer als PDF/A opgeslagen, naast het origineel. Dit maakt zoeken naar bepaalde tekst of het kopiëren daarvan mogelijk. Meer informatie over dit programma kan hier worden gevonden. In deze uitgave zijn de volgende veranderingen en verbeteringen aangebracht:

Breaking Changes
  • Breaking: Remove the positional arguments from the pre/post consume scripts (#12573)
  • Breaking: Decouple OCR control from archive file control (#12448)
  • Chore: drop support for api versions < 9 (#12284)
  • Chore: Drop support for Python 3.10 (#12234)
  • Chore: Refactor advanced database settings to allow more user configuration (#12165)
  • Remove API v1 compatability (#12166)
  • Remove pybzar as a barcode reader (#12065)
  • Remove support for document and thumbnail encryption (#11850)
  • Feature: Simplify and improve the consumer (#11753)
Notable Changes
  • Feature: Replace Whoosh with tantivy search backend (#12471)
  • Feature: document parser plugin framework (#12294)
  • Feature: document file versions (#12061)
  • Feature: sharelink bundles (#11682)
  • Feature: Paperless AI (#10319)
  • Feature: Remote OCR (Azure AI) (#10320)
Features / Enhancements
  • [Beta] Paperless-ngx v3.0.0 Beta (#12713)
  • Tweakhancement (beta): allow some bulk operations with all (#13193)
  • Security (beta): enforce current permissions in autocomplete (#13188)
  • Security (beta): bound email linkification (#13187)
  • Change: update root modified timestamp on version changes (#13170)
  • Performance: add DB indexes for common query/sort patterns (#13167)
  • Performance: use NgOptimizedImage for thumbnail lazy loading (#13169)
  • Performance: Tantivy indexing optimization (#13053)
  • Chorehancement: update to Angular v22, 'zoneless' / 'reactive' (#13114)
  • Enhancement (beta): support LLM timeout config (#13002)
  • Enhancement: ignore diacritics, support multiple substring matching for UI filtering (#13021)
  • Enhancement(beta): replace LanceDB vector store with sqlite-vec (#12990)
  • Enhancement (beta): Switch the AI vector store to LanceDB (#12944)
  • Fixhancement (beta): tasks dismiss all (#12949)
  • Enhancement (beta): add direct LLM language setting (#12906)
  • Enhancement: try to respect language for AI suggestions (#12894)
  • Enhancement: AI LLM chunk size and context window config (#12891)
  • Enhancement: support ollama embeddings (#12753)
  • Tweakhancment: Include the last applied 'documents' migration in the log (#12757)
  • Enhancement: version-aware thumbnail etag (#12754)
  • Documentation: Update v3 migration docs (#12752)
  • Feature: Further reduce document importer memory usage (#12707)
  • Tweakhancement: use fixed position instead of display none for printing (#12706)
  • Enhancement: Paperless-ngx v3 Logo (#12673)
  • Tweakhancement: localize some more task result messages (#12672)
  • Enhancement: chat message document links (#12670)
  • Tweakhancement: make upload notification open an anchor link (#12659)
  • Tweakhancement: tweak tasks UI, make open doc an anchor (#12658)
  • Enhancement: show small task summary in system status (#12634)
  • Enhancement: new Tasks UI (#12614)
  • Feature: Allow monitoring access to tasks summary (#12624)
  • Tweak: remove stale index warning (#12616)
  • Enhancement: add highlighting to title + content searches (#12593)
  • Feature: Redesign the task system (#12584)
  • Feature: Tune SQLite default settings for increased speed (#12580)
  • Feature: Document fuzzy match improvements (#12579)
  • Enhancement: validate and sanitize uploaded logos (#12551)
  • Enhancement: add view_global_statistics and view_system_status permissions (#12530)
  • Fixhancement: include sharelinks + bundles in export/import (#12479)
  • Enhancement: unify text search to use tantivy (#12485)
  • Feature: Consumer logging correlation (#12510)
  • Security enhancement: allow opt-in blocking internal mail hosts (#12502)
  • Feature: Replace Whoosh with tantivy search backend (#12471)
  • Fixhancement: include trashed documents in document exporter/importer (#12425)
  • Tweakhancement: show file extension in StoragePath test (#12452)
  • Feature: Transition all checksums to use SHA256 (#12432)
  • Enhancement: auto-hide the search bar on mobile (#12404)
  • Change: sort custom fields alphabetically by default (#12358)
  • Feature: Add progress information to the classifier training for a better ux (#12331)
  • Feature: document parser plugin framework (#12294)
  • Enhancement: Make the StatusConsumer truly async (#12298)
  • Feature: Migrate import/export to rich progress (#12260)
  • Enhancement: Show more document details in merge dialog (#12271)
  • Enhancement: saved view sharing (#12142)
  • Enhancement: “live” document updates (#12141)
  • Enhancement: Improve the retagger output using rich (#12194)
  • Enhancement: Transition sanity check to rich and improve output (#12182)
  • Enhancement: Switch all indexing to use rich (#12193)
  • Feature: Switch progress bar library to rich (#12169)
  • Enhancment: Formatted filename for single document downloads (#12095)
  • Feature: document file versions (#12061)
  • Enhancement: prevent duplicate mail processing across rules (#12159)
  • Feature: move to trash action for workflows (#11176)
  • Tweakhancement: reset to page 1 on reset filters (#12143)
  • Enhancement: consolidate management lists into document attributes section (#12045)
  • Enhancement: option to stop processing further mail rules (#12053)
  • Tweak: improve 2-digit year parsing (#12044)
  • Enhancement: pngx pdf viewer (#12043)
  • Fixhancement: improve ASN handling with PDF operations (#11689)
  • Feature: Enable users to customize date parsing via plugins (#11931)
  • Feature: password removal workflow action (#11665)
  • Enhancement: per-type object page sizing (#11977)
  • Enhancement: improve filter drop-down performance with virtual scrolling (#11973)
  • Tweakhancement: tweak bulk delete text (#11967)
  • Feature: support split documents based on tag barcodes (#11645)
  • Enhancement: Add setting for default PDF Editor mode (#11927)
  • Fixhancement: auto-queue llm index if needed (#11891)
  • Feature: sharelink bundles (#11682)
  • Enhancement: user control of doc details fields (#11906)
  • Enhancement: improve relative dates in date filter (#11899)
  • Enhancement: allow duplicates with warnings, UI for discovery (#11815)
  • Enhancement: configurable SSO groups claim (#11841)
  • Enhancement: support select all for management lists (#11889)
  • Tweakhancement: display document id, with copy (#11896)
  • Enhancement: Add support for app oidc (#11756)
  • Enhancement: Add 'any of' workflow trigger filters (#11683)
  • Enhancement: support doc_id placeholder in workflow templates (#11847)
  • Performance: improve treenode inefficiencies (#11606)
  • Feature: Remote OCR (Azure AI) (#10320)
  • Feature: password removal action (#11656)
  • Tweakhancement: use anchor element for management list quick filter buttons (#11692)
  • Feature: Indonesian translation (#11641)
Bug Fixes
  • Fix (beta): prevent pdfjs offsetParent warning (#13197)
  • Fix (beta): dont include hidden buttons in virtual scroll container height (#13194)
  • Fix (beta): fix custom field bulk editing for 'all' (#13191)
  • Security (beta): two small permission check fixes (#13186)
  • Fix (beta): short-circuit ObjectOwnedOrGrantedPermissionsFilter for superusers (#13183)
  • Fix (beta): compute num_notes via a subquery instead of Count()+distinct (#13182)
  • Fix: prevent tag assignment from reverting other pending workflow assignments (#13178)
  • Fix(beta): cache per-request effective-document resolution for thumb/metadata/preview (#13166)
  • Fix: fallback from archive version for share links (#13163)
  • Fix: better handle saved view errors in dashboard widgets (#13164)
  • Fix (beta): convert chat component to signal-backed Angular (#13152)
  • Fix: HTTP 500 filtering documents by tags + custom field query on MariaDB (#13143)
  • Fix: scope ProcessedMail UID deduplication by IMAP UIDVALIDITY (#12839)
  • Fix: allow setting any UID and GID when running rootless (#13090)
  • Fix (beta): fix sidebar document close button (#13136)
  • Fix: include wasm assets in pdf.js-based viewer (#13122)
  • Fix: fix ui labels from md5 to sha256 (#13119)
  • Fixhancement: dont assign empty title in workflow with broken template (#13112)
  • Fix: clamp mailrule max age before migration (#13093)
  • Fix: use latest document version for bulk download (#13103)
  • Fix (beta): handle relative date with comma query (#13087)
  • Fix (beta): fix sanity checker affected document counts (#13052)
  • Fix (beta): preserve Unicode in localization prompt (#13055)
  • Fix: change tantivy token limit to title field max length (#13046)
  • Fix: include last-modified in doc etag (#13044)
  • Fix (beta): Stream chunks during compaction to prevent oom on smaller installs (#13014)
  • Fixhancement (beta): truncate embedding queries for small chunk size (#13028)
  • Fix(beta): Workaround a Tantivy panic in more like this searching (#13026)
  • Fix (beta): Catch consumer files created during watcher re-creations (#13013)
  • Fix (beta): restore v2 (Whoosh) advanced-search query compatibility (#13010)
  • Fix (beta): retry celery ping and report warning on no response (#13012)
  • Fix (beta): don't send chat message on Enter while composing with IME (CJK) (#12999)
  • Fix: Apply unicode normalization to all paths and path components (#12993)
  • Fix: Handle the UTF 16 and BOM text files better (#12994)
  • Fix (beta): avoid DRF update calling save on all fields (#12992)
  • Fix: release pooled DB connection during AI LLM/embedding calls (#12983)
  • Fix: health-check pooled DB connections and close the pool on worker shutdown (#12977)
  • Fix: wrap long titles in delete confirm dialog (#12973)
  • Fix (beta): fix re-ordering in merge dialog (#12967)
  • Fix (beta): move task filtering to backend fully (#12956)
  • Fix (beta): avoid unnecessary creating new PDF with pw removal workflow (#12948)
  • Fixhancement (beta): tasks dismiss all (#12949)
  • Fix (beta): correct chat message bg color (#12955)
  • Fix (beta): respect disable state for suggest endpoint, require change perms (#12942)
  • Fix: Ensure checksum comparision is using SHA256 (#12939)
  • Fix: Restrict the AI backend at settings configure time (#12903)
  • Fix (beta): correctly apply i18n in suggestions dropdown (#12905)
  • Fix: Lock AI index during reading and don't index documents many times during a bulk update (#12899)
  • Fix: Minor fixes for the AI indexing (#12893)
  • Fix (beta): dont use tool calling with ollama (#12896)
  • Fix: Improvements for security around the AI (#12895)
  • Fix: correctly show timestamp tooltip on history item (#12879)
  • Fix: Fold query and autocomplete terms with Tantivy's ascii_fold so special letters match (#12868)
  • Fix: Don't store autocomplete_word, only index it (#12867)
  • Fix: Preserve Whoosh date range swapping in Tantviy (#12866)
  • Fix: Always release search index writer (#12865)
  • Fix: Handle CJK title, content and metadata searching (#12862)
  • Fix: Restrict date query rewrites to date or datetime fields only (#12864)
  • Fix: Missing call to tanvity wait_merging_threads (#12863)
  • Fix: Handle tanvity index lock contention (#12856)
  • Fix (beta): better catch chat errors (#12854)
  • Security (beta): fixes for v3 beta (#12838)
  • Fix (beta): normalize long punctuation chunks to improve embedding (#12848)
  • Fix: use chord.on_error before apply_async (#12842)
  • Fix: Don't use smaller integer fields for some workflow fields (#12834)
  • Fix: Password removal source file location (#12830)
  • Fix (beta): use correct html button type for custom field buttons (#12819)
  • Fix: Defer password removal workflow action until the file is in place (#12814)
  • Fix: Allow setting allauth rate limit configuration settings (#12798)
  • Fix: Don't embed the metadata which is already embedded into the context (#12795)
  • Fix: Sanitize dash or plus from the text search path (#12789)
  • Fix: improve new tasks ui layout across screen sizes (#12784)
  • Fix: Update parser contract to require empty strings, not None (#12775)
  • Fix: Use a persistent, writeable location for hugging face models (#12771)
  • Fix: create LLM_INDEX_DIR before writing meta.json on first run (#12759)
  • Tweakhancment: Include the last applied 'documents' migration in the log (#12757)
  • Fix: use response synthesizer for RAG doc chat (#12751)
  • Fix: only update modified field in notes actions (#12750)
  • Fix: Handle dash or plus operators in search queries (#12734)
  • Fixes trash preview when a document has deleted versions (#12742)
  • Fix: exclude versions from stats count (#12738)
  • Fixes celery chords by using Redis as our result backend (#12741)
  • Fix: bump version.py to 3.0.0 also (#12736)
  • Fix: makes the font cache folder writeable to all users (#12726)
  • Fixes Whoosh year only queries to be rewritten to Tantivy date syntax (#12725)
  • Fix: pass allow parallel tool calls in LLM client (#12718)
  • Fix: Handle passwords for removal action as lists (#12716)
  • Bumps all our versions to 3.0.0 (#12715)
  • Fix: avoid unnecessary close_old_connections in Celery task dispatch (#12701)
  • Fix: apply tag changes directly to document in db (#12664)
  • Fix: Use FileResponse for file API responses (#12638)
  • Fix: Changes bare metal webserver to use uvloop (#12626)
  • Fixhancement: Exact custom field monetary exact searching (#12592)
  • Fix: relative added date check visibility (#12600)
  • Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type (#12597)
  • Fix: reject invalid requests to API notes endpoint (#12582)
  • Fixhancement: include sharelinks + bundles in export/import (#12479)
  • Fix: Respect workflow change_groups during consumption (#12431)
  • Fix: Don't try to update the user when running as non-root (#12365)
  • Fix: use maxsplit=1 in Redis URL parsing to handle URLs with multiple colons (#12239)
  • Fixhancement: show sequential + id version labels, fix padding (#12196)
  • Fix: correct user dropdown button icon styling (#12092)
  • Fix: Handle an OOM kill of celery workers in the task handler @stumpylog (#12040)
  • Fix: re-run ASN check after barcode detection @shamoon (#11681)
  • Fix: prevent infinite loading crash in mail component (#11978)
  • Fix: fix broken docker create_classifier command in 2.20.6 (#11965)
  • Fix: ensure css color-scheme for dark mode (#11855)
  • Fix: fix tag list horizontal scroll, again (#11839)
  • Fix: ensure horizontal scroll for long tag names in list, wrap tags without parent (#11811)
  • Fix: use explicit order field for workflow actions (#11781)
  • Fix: fix recurring workflow to respect latest run time (#11735)
  • Fixhancement: add error handling and retry when opening index (#11731)
  • Fix: validate cf integer values within PostgreSQL range (#11666)
  • Fix: support ordering by storage path name (#11661)
  • Fix: propagate metadata override created value (#11659)
  • Fix: prevent ASN collisions for merge operations (#11634)
Documentation
  • [Beta] Paperless-ngx v3.0.0 Beta (#12713)
  • Fix: clamp mailrule max age before migration (#13093)
  • Documentation (beta): Updates documentation for new v3 features (#13033)
  • Documentation: fix PAPERLESS_DATE_PARSER_LANGUAGES formatting (#12997)
  • Documentation: remove duplicate words in three files (#12852)
  • Fix: Allow setting allauth rate limit configuration settings (#12798)
  • Documentation: Update v3 migration docs (#12752)
  • Enhancement: Paperless-ngx v3 Logo (#12673)
  • Chore: separate actions from bulk edit endpoint (#12286)
  • Chore: Switches to use prek in place of pre-commit (#12002)
  • Chore: upgrade to node v24 (#11747)
Maintenance
  • [Beta] Paperless-ngx v3.0.0 Beta (#12713)
  • Chore(deps): Bump the actions group across 1 directory with 14 updates (#13079)
  • Chore(deps): Bump the actions group across 1 directory with 12 updates (#12909)
  • Chore(deps): Bump the actions group across 1 directory with 17 updates (#12686)
  • Chore(deps): Bump the actions group across 1 directory with 4 updates (#12538)
  • Chore(deps-dev): Bump @playwright/test from 1.58.2 to 1.59.0 in /src-ui (#12537)
  • Chore: address more zizmor flags (#12529)
  • Chore: Resolves some zizmor reported code scan findings (#12516)
  • Chore(deps): Bump the actions group across 1 directory with 9 updates (#12490)
  • Chore(deps): Bump the actions group with 2 updates (#12377)
  • Chore(deps): Bump the actions group with 3 updates (#12322)
  • Chore: Don't upload digets file as a zip (#12264)
  • Chore(deps): Bump the actions group across 1 directory with 6 updates (#12224)
  • Chore(deps): Bump j178/prek-action from 1.1.0 to 1.1.1 in the actions group (#12033)
  • Chore: Switches to use prek in place of pre-commit (#12002)
  • Chore: Enable mypy checking in CI (#11991)
  • Chore(deps): Bump the actions group with 2 updates (#11966)
  • Chore: upgrade to node v24 (#11747)
  • Performance: pre-compress static files on ARM64 (#11721)
  • Chore(deps): Bump the actions group with 4 updates (#11695)
  • Feature: Indonesian translation (#11641)

Paperless-ngx

Versienummer 3.0.0
Releasestatus Final
Besturingssystemen Platformonafhankelijk
Website Paperless-ngx
Download https://docs.paperless-ngx.com/setup
Licentietype GPL

Door Bart van Klaveren

Downloads en Best Buy Guide

Feedback • 23-07-2026 12:00
16 • submitter: ReTechNL

23-07-2026 • 12:00

16

Submitter: ReTechNL

Bron: Paperless-ngx

Reacties (16)

Ik kreeg wat vreemde errors (gerelateerd aan de classifier) toen ik mijn vm op proxmox update met het laatste docker image. Dat was opgelost door mijn processor op host te zetten ipv de default kvm64

[Reactie gewijzigd door DaydreamBelieve op 23 juli 2026 15:27]

kvm64 is een veroudert cpu type die waarschijnlijk niet de instructieset ondersteund als je hem op host zet krijg je eigenlijk precies wat je cpu ondersteund. Beter is het om deze op x86-64-v3 (of wat je cpu ondersteund) te gebruiken met name als je wil migreren tussen meerdere hosts met verschillende cpu's.
Voor mij blijft het een issue dat zoeken niet vertelt waar in het document het staat.
Ik heb ook documenten van 100+ pagina's. Als ik nu zoek, krijg ik alleen dat het erin staat en dan vervolgens moet ik op de pagina nog een keer ctrl + f (wat ook niet altijd werkt, omdat sommige browsers niet het hele document in één keer laden).
Ja al meerdere keren maar worden gesloten omdat het technisch te veel aanpassingen nodig zouden moeten zijn.
Vreemd, ik zie sporen van pdfjs in de github. Indien ze die gebruiken kan de search of page zo worden meegegeven.
Fijne software. Altijd handig om een document snel te zoeken.

Tijdens de (automatische) upgrade waren wel al mijn .env regels gecommented.
Ah, bij mij waren de .env regels ook weg. Beetje gek, maar wel makkelijk op te lossen gelukkig.
Ah, dat zal het verklaren.

Vannacht heeft mijn automatische update gedraaid, en de container zit in een restart loop, blijkbaar omdat de PAPERLESS_SECRET_KEY env variable niet is gezet.
Ik heb er verder nog niet naar kunnen kijken, maar dit zou heel goed de reden kunnen zijn.
Thanks.
Heb zelf paperless-ai draaien naast paperless-ngx. Paperless-ai werd al niet meer door ontwikkeld in afwachting van deze update. Er is nog wel iemand die een nieuwere versie had gemaakt.

Ik wacht nog even versie 3.0.1 af voordat ik mijn productie paperless-ngx instance ga upgraden. Tevens wordt de upgrade ook nog niet ondersteund door proxmox community scripts dus dat wacht ik nog even af.
Nou, 3.0.1 is uit, en direct ook 3.0.2 vanwege regressie in 3.0.1 https://github.com/paperless-ngx/paperless-ngx/releases
Het community scripts update script is nog niet klaar zo te zien voor 3.0.x dus nu alleen daar nog op wachten.
https://community-scripts.org/scripts/paperless-ngx
Pinned version v2.20.15
This install deploys a specific version instead of the latest upstream release.
This version is intentionally held back by maintainers for stability.
Latest upstream: v3.0.2
Correctie: De pull request is goedgekeurd voor het upgrade script naar versie 3.0.x.
https://github.com/community-scripts/ProxmoxVE/pull/15221

[Reactie gewijzigd door ReTechNL op 24 juli 2026 12:32]

Dit is denk ik de grootste feature deze release:

https://github.com/paperless-ngx/paperless-ngx/pull/10319

OCR LLM via Ollama.

Ik wil heel graag mijn volledige Paperless catalogus (ca. 1500 documenten) opnieuw scannen met deze nieuwe feature.

Ik merk dat ik of verkeerde keuzes heb gemaakt alles goed te categoriseren of dat ik hiervoor te weinig heb gedaan of dat de OCR toch suboptimaal heeft gewerkt. Ik vind mijn documenten heel erg slecht terug. Voornamelijk door absurd slechte datumvelden. De OCR stap opnieuw doen kan dan helpen. Dit wordt weer een nieuw projectje.

Ik heb testen/benchmarks gedraaid met een Greenfield projectje en hier kwam https://ollama.com/library/glm-ocr het beste uit. Die heb ik nu draaien om foto's en screenshots automatisch om te zetten naar tekst in een notitie in Jellifin, met de oorspronkelijke afbeelding erboven. Met een soort 'app' op mijn iPhone, via 'opdrachten'. Werkt best goed! OCR draait dan op mijn 4080s.

Ik denk trouwens dat deze feature dit project overbodig heeft gemaakt, (bijna EOL al)
https://github.com/clusterzx/paperless-ai
Nou, opnieuw scannen hoeft niet hoor. Exact dezelfde scan kun je gebruiken. Het gaat om opnieuw de nieuwere OCR toepassen. Dat is een stuk minder moeite (al kost het met AI wel rekenkracht).

De OCR modellen van Mistral werken trouwens erg goed.
Ik zat al op deze te wachten, nu nog een paar goeie howto's op Youtube en we kunnen er tegenaan :+
Ben benieuwd naar de ervaringen.. Gezien de grote hoeveelheden aan werk/documenten die ik erin heb zitten heb ik mijn tag nog even vastgezet op 2.20. Ik wacht de eerste fixes nog even af.. En gezien de snelle release van 3.0.1 en 3.0.2 is dat geen onverstandige keuze geweest.

Om te kunnen reageren moet je ingelogd zijn