Lange Verarbeitungszeit - Hohe CPU Auslastung

Hallo zusammen,
mir ist folgendes aufgefallen:
Wenn ich mehrere Seiten auf einmal scanne (ca.25 Seiten, beidseitig bedruckt) dauert die Verarbeitung durch Paperless extrem lange. (mehrere Minuten)
Hierbei steigt die CPU Auslastung schlagartig auf 99%.
Ich nutze eine Synology DS723+.
RAM 32GB
CPU: AMD Ryzen R1600
Scanner: Epson ES580W

Während des Scannens laufen keine anderen Anwendungen!
Wenn die Verarbeitung von Paperless abgeschlossen ist sinkt die CPU Auslastung wieder schlagartig auf 1%.
Mich wundert die extrem lange Verarbeitungszeit und die hohe CPU Auslastung. Wie gesagt es dauert Minuten bis das Dokument bei Paperless ankommt und verarbeitet ist.
Ich hatte deswegen schon Kontakt mit Synology - Der Support meint das liegt an Paperless.

Was habt ihr hier für Erfahrungen?
Dauert das bei euch ach so lange?
Gibt es an der Synology oder an Paperless Einstellungen die angepasst werden müssen?

Grüße

Moin,

Ich kann dir nur sagen das die reine Verarbeitung der gescannten Daten und das erstellen eines PDF’s mit OCR auf einem Professionellem Multifunktionsgerät für 10.000 - 20.0000 € je nach Einstellungen auch nicht recht viel schneller ist.

Texterkennung ist ohne FPGA aufwändig … besagte Geräte besitzen FPGA’s die dafür dediziert effizienter sind.

Hast du schon mal geguckt ob deine PDF-Einstellungen die sich auf die finale Dateigröße auswirken etwas ändern ?

Muss ich mir mal anscahuen.
An welche Einstellungen hast du da gedacht?

Laut paperless-ngx kann auch die 2 Kern CPU die Ursache sein.

Paperless-ngx:
OCR is an intensive process. And 2 cores isn’t really that many. You might find https://docs.paperless-ngx.com/setup/#less-powerful-devices helpful

1 „Gefällt mir“

Konkret an die DPI und alles was Kompression betrifft.

Bei 25 Seiten und 2 Cores halte ich diese Verarbeitungszeit für völlig normal.

Poste gerne mal die Logs, während paperless ein solches Dokument konsumiert. Dort steht auch, wie viele Worker verwendet werden.
Ein häufiges Problem ist, dass man mehr Worker zuteilt als es Threads gibt, aber das sehen wir an den Logs und deiner CPU.

Es handelt sich um folgende Datei:

20240122_194423.pdf

File "/usr/local/lib/python3.11/site-packages/ocrmypdf/_pipelines/ocr.py", line 176, in _run_pipeline

    pdfinfo = get_pdfinfo(

              ^^^^^^^^^^^^

  File "/usr/local/lib/python3.11/site-packages/ocrmypdf/_pipeline.py", line 185, in get_pdfinfo

    raise InputFileError() from e

ocrmypdf.exceptions.InputFileError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

  File "/usr/local/lib/python3.11/site-packages/asgiref/sync.py", line 349, in main_wrap

    raise exc_info[1]

  File "/usr/src/paperless/src/documents/consumer.py", line 446, in try_consume_file

    document_parser.parse(self.path, mime_type, self.filename)

  File "/usr/src/paperless/src/paperless_tesseract/parsers.py", line 393, in parse

    raise ParseError(f"{e.__class__.__name__}: {e!s}") from e

documents.parsers.ParseError: InputFileError:

[2024-01-22 19:44:30,105] [INFO] [paperless.management.consumer] Adding /usr/src/paperless/consume/20240122_194423.pdf to the task queue.

[2024-01-22 19:44:30,638] [INFO] [paperless.consumer] Consuming 20240122_194423.pdf

[2024-01-22 19:44:30,663] [DEBUG] [paperless.consumer] Detected mime type: application/pdf

[2024-01-22 19:44:30,664] [DEBUG] [paperless.consumer] Parser: RasterisedDocumentParser

[2024-01-22 19:44:30,667] [DEBUG] [paperless.consumer] Parsing 20240122_194423.pdf...

[2024-01-22 19:44:30,823] [DEBUG] [paperless.parsing.tesseract] Calling OCRmyPDF with args: {'input_file': PosixPath('/tmp/paperless/paperless-ngxzcyc01o6/20240122_194423.pdf'), 'output_file': PosixPath('/tmp/paperless/paperless-hc_9h67p/archive.pdf'), 'use_threads': True, 'jobs': 4, 'language': 'deu', 'output_type': 'pdfa', 'progress_bar': False, 'color_conversion_strategy': 'RGB', 'skip_text': True, 'clean': True, 'deskew': True, 'rotate_pages': True, 'rotate_pages_threshold': 12.0, 'sidecar': PosixPath('/tmp/paperless/paperless-hc_9h67p/sidecar.txt')}

Hmmm da kann ich nicht viel erkennen außer das er um 19:44:30 fertig war und eigentlich nicht mal angefangen hat… zumindest innerhalb einer Sekunde abgebrochen hat.

Wegen Verarbeitungsdauer…
Ich habe mir gestern auf meinem DIY-NAS den Spaß gemacht und die über 4400 PDF’s in den Scaninputordner zu schieben die ich aus meiner aktuellen Produktiv-Installation exportiert habe und habe dann Paperless gestartet…
Wohlgemerkt es waren lediglich die PDF’s die ich mit Order Struktur eingefügt habe ( Archive / Original )…

Hat so ca. 2,5 Stunden gedauert auf dem Board mit einem Intel Celeron N5105 mit ~ 2.0+ GHz https://www.intel.de/content/www/de/de/products/sku/212328/intel-celeron-processor-n5105-4m-cache-up-to-2-90-ghz/specifications.html
Topton NAS Motherboard N6005/N5105 4x Intel i226-V 2,5G Nics Dual M.2 NVMe Sechs SATA 3,0 2 * DDR4 HDMI 2,0 Mini ITX 17x17CM Weiche Router - AliExpress 7

Kann es vielleicht sein, dass das PDF verschlüsselt ist?
Weil ocrmypdf das nicht kann.

Mir macht eher die letzte Zeile Gedanken:

Bei einer 2-Core CPU könnte das der Grund sein für die langsame Konsumierung.

Hier ist beschrieben, wie man das beeinflussen kann incl. Empfehlungen für CPUs:

https://docs.paperless-ngx.com/configuration/#software_tweaks

Ich schaus mir nachher mal im Detail an.

Wo wird die Anpassung vorgenommen, in der Config Datei?

Ist die Vorgehensweise wie folgt: paperless-ngx stoppen, dann die config anpassen und im Anschluss wieder starten ?

Oder muss die Änderung in der docker-compose.env vorgenommen werden ?

If you run paperless on docker, paperless.conf is not used. Rather, configure paperless by copying necessary options to docker-compose.env.

If you are running paperless on anything else, paperless will search for the configuration file in these locations and use the first one it finds:

The environment variable:
PAPERLESS_CONFIGURATION_PATH

/path/to/paperless/paperless.conf

/etc/paperless.conf

/usr/local/etc/paperless.conf

Ja, in der ENV ändern.

Habe mir gerade im Config Ordner alle 3 Dateien angeschaut.
Ich finde die beiden Variablen aber in keiner der 3 Dateien.


Musst Du in der docker-compose.env eintragen.
Gruß
Mario

Danke dir Mario.
Teste ich gleich mal.

Hallo zusammen kurze Erkenntnis vom Scannen von 27 Blättern (beidseitig bedruckt):

Ausgangszustand ohne Anpassung ist es wie folgt:
CPU Auslastung ohne Anpassung liegt bei 99%.
RAM bei 7%
Dauer vom Verarbeiten = 8Minuten 39Sekunden

Habe die docker-compose.env wie folgt ergänzt:

# CPU Einstellungen 2 Kern
PAPERLESS_TASK_WORKERS= 2
PAPERLESS_THREADS_PER_WORKER= 1

Ergebnis davon: Die CPU Auslastung sinkt auf ca.25%
RAM Auslastung liegt bei ca.6%
Verarbeitungsdauer = 17Minuten 39Sekunden

  • Wurde deutlich langsamer!

Wenn ich die Variablen wie folgt deklariere passiert folgendes:

# CPU Einstellungen 2 Kern
PAPERLESS_TASK_WORKERS= 1
PAPERLESS_THREADS_PER_WORKER= 2

CPU Auslastung liegt bei ca.50%.
RAM Auslastung liegt bei ca.6%
Verarbeitungsdauer = 10Minuten 29Sekunden

Zusammengefasst würden die Anpassungen zwar die CPU Auslastung stark minimieren allerdings wird die Verarbeitungszeit noch länger.

Hat jemand noch eine Idee wie die Verarbeitungszeit verkürzt werden kann?

Laut Paperless:
Stellen Sie sicher, dass das Produkt

PAPERLESS_TASK_WORKERS * PAPERLESS_THREADS_PER_WORKER

die Anzahl Ihrer CPU-Kerne nicht übersteigt, sonst wird paperless extrem langsam. Wenn Sie möchten, dass paperless viele Dokumente parallel verarbeitet, wählen Sie eine hohe Anzahl von Arbeitern. Wenn Paperless sehr große Dokumente schneller verarbeiten soll, wählen Sie eine höhere Anzahl von Threads pro Worker.