Paperless OCR verbessern: best practise?

Hallo Alexander,

da ich dein System nur schätzen kann (siehe den anderen Foreneintrag mit NAS und KI-Server), vermute ich stark, dass es am Speicherplatz (VRAM/RAM) liegt.

Wenn du zu viel auf einmal möchtest, geraten lokale Systeme wie Ollama an ihre Grenzen. Wenn der Chatverlauf oder das hochgeladene Dokument zu lang wird und die maximale Token-Anzahl des Modells (z.B. 8.000 Tokens) überschreitet, „vergisst“ die KI plötzlich die anfängliche Anweisung. Sie weiß nicht mehr, worum es geht, verliert den Kontext und fängt an zu stammeln oder zu loopen. Da du von einer getrennten Verarbeitung zwischen NAS und KI gesprochen hast, kommt vielleicht noch „Swapping“ hinzu (wie oft bei Paperless-GPT zu beobachten, wenn OCR und Tag-Zuordnung gleichzeitig laufen). Das bedeutet, dein KI-Server ist noch mit der Anfrage zu Titel oder Tag beschäftigt und dein OCR-Skript will schon Bilder nachschieben.

Der Speicherbedarf: qwen2.5vl:7b bei 8000 Token

Ein Modell mit 7 Milliarden Parametern (7B) ist ordentlich groß. Wie viel Arbeitsspeicher (RAM) oder Grafikkartenspeicher (VRAM) es benötigt, hängt massiv von der sogenannten Quantisierung (Komprimierung) ab. Hinzu kommt der Speicher, den das Modell braucht, um sich deinen Chatverlauf und deine Eingaben zu merken – der sogenannte KV Cache (Kontextfenster).

Wenn wir von einem recht großen Kontext von 8000 Token ausgehen, sieht die Rechnung grob so aus:

  • Bei 8-Bit Quantisierung (geringe Komprimierung, hohe Qualität):

    • Modellgewichte: ca. 7 bis 8 GB

    • Kontextspeicher (8000 Token): ca. 1 bis 2 GB

    • Gesamtbedarf: ca. 8 bis 10 GB VRAM/RAM

  • Bei 4-Bit Quantisierung (Standard für lokale Nutzung, z.B. Q4_K_M):

    • Modellgewichte: ca. 4 bis 4,5 GB

    • Kontextspeicher (8000 Token): ca. 1 bis 1,5 GB

    • Gesamtbedarf: ca. 5 bis 6 GB VRAM/RAM

Was passiert, wenn das System ans Limit stößt?

Wenn du beispielsweise eine Grafikkarte mit 8 GB VRAM besitzt und das Modell in 8-Bit mit vollen 8000 Token ausreizt, sprengst du den verfügbaren Speicherhaushalt. Dann passieren meist zwei Dinge, die dein Fehlerbild exakt beschreiben:

  1. Auslagerung (Swapping): Die Software (wie Ollama, LM Studio etc.) merkt, dass der VRAM voll ist, und lagert die restlichen Daten in den normalen, aber massiv langsameren CPU-Arbeitsspeicher aus. Das Modell wird extrem langsam, was sich anfühlt, als würde es komplett „hängenbleiben“.

  2. Kontext-Abriss: Wenn der Speicher wirklich voll läuft oder das Limit falsch konfiguriert ist, wird das „Gedächtnis“ des Modells überschrieben oder abgeschnitten. Das Modell verliert mitten im Satz den Faden, vergisst den Anfang des Prompts und stürzt in eine sogenannte Repetition Loop. In diesem verwirrten Zustand ist die Ausgabe von „d“ gefolgt von „er“ statistisch gesehen plötzlich die einzige logische Fortsetzung für das Modell.

Wie du das Problem umgehen kannst

  • Quantisierung anpassen: Wenn du aktuell ein 8-Bit-Modell (oder gar unquantisiertes 16-Bit) nutzt, wechsle unbedingt auf eine 4-Bit-Version (z.B. q4_k_m). Das entlastet den Speicher enorm und lässt genug Luft für den Kontext.

  • „Bildauflösung herunter setzen 200 statt 400 DPI“ Vision-Modelle zerlegen Bilder in kleine Kacheln (Patches) und wandeln diese in Tokens um. Je höher die Auflösung (DPI) deines Scans aus Paperless-NGX, desto mehr Kacheln entstehen und desto gigantischer wird der Token-Verbrauch im Kontextfenster. Eine Reduzierung der DPI spart massiv VRAM, ohne dass die Texterkennung (OCR) zwingend schlechter wird.

  • Kontextgröße (Context Size) begrenzen: Wenn du keine riesigen Textdokumente analysierst, reduziere das Limit in deinen Einstellungen von 8000 auf beispielsweise 4000 Token.

  • Repetition Penalty (Wiederholungsstrafe) erhöhen: Setze diesen Wert in deinen Inferenz-Einstellungen leicht nach oben (z.B. auf 1.1 oder 1.15). Das zwingt das Modell aktiv dazu, solche „d er d er“-Schleifen mathematisch abzuwerten und den Fehler früher abzufangen.

  • RAM leeren: Nach getaner Arbeit das Modell manuell entladen (z.B. über ollama stop qwen2.5vl), um den alten „Müll“ aus dem Speicher zu werfen und Platz für den nächsten Durchlauf zu schaffen. (musste ich früher immer bei Paperless-GPT machen weil sich die KI jedes mal aufgehangen hat)

Ich hoffe ich habe dir erst einmal genügend Probleme zurückgegeben um dich das Wochenende zu beschäftigen :wink:.

PS: habe jetzt mein Ursprüngliches Setup auch auf NAS und PC verteilt, da ich die Stromkosten senken möchte.

Grüße Heiko

1 „Gefällt mir“