Kurzfassung: Wenn Sie Zehntausende gescannte PDFs per OCR verarbeiten müssen, liegt der Engpass selten allein bei der Wahl der OCR-Engine. Entscheidend ist, ob Sie Dateien vorab prüfen und routen, Arbeit parallelisieren und eine wiederaufnehmbare Warteschlange betreiben. Ein Desktop-Tool Datei für Datei kann bei 10.000 Dokumenten Wochen dauern; die Pipeline unten auf einem 8–16-Kern-VPS oder GPU-Workern komprimiert dasselbe Volumen oft auf Stunden oder ein bis zwei Tage——wenn Sie Engineering-Kompromisse akzeptieren: schnelles Screening zuerst, präzises OCR danach, schlechte Seiten in Quarantäne.
Dieser Leitfaden richtet sich an Archive, Rechtsakten, medizinische Berichte, historische Papiere und Unternehmensverträge——typisch 10.000–100.000+ Dateien, meist reine Scans oder gemischte PDFs. Stichwörter: Batch-OCR, gescannte PDF-Erkennung, ocrmypdf, PaddleOCR. Wenn die Ergebnisse in RAG fließen, lesen Sie unsere RAG-PDF-Parsing-Best Practices für Import-Gates——OCR ist nur Stufe eins.
Stand 08.08.2026 gegen OCRmyPDF-Dokumentation, Tesseract und PaddleOCR geprüft.
Warum Bulk-OCR gescannter PDFs unerträglich langsam wirkt
Typisches Fehlermuster: Ordner in ein GUI-Tool ziehen, CPU bei 15 %, Lüfter leise, 200 Dateien über Nacht. Ursachen stapeln sich:
- Serielle Verarbeitung——ein Prozess, viele Kerne idle.
- Kein Preflight——30 % haben bereits Textschichten, laufen trotzdem voll durch OCR.
- Nur Datei-Parallelität——ein 800-Seiten-Binder blockiert einen Worker, kleine Dateien zahlen Startkosten.
- Schwere Ausgabe——Bilder neu komprimieren und Schriften einbetten auf jeder Seite.
- Kein Checkpointing——Absturz bei Datei 9.000, Neustart von null.
Bei Zehntausenden Dateien schlägt Pipeline-Design Engine-Tuning um eine Größenordnung. Zuerst der schnellste Pfad, dann die Skalierungsarchitektur.
Schritt 0: Preflight-Routing——nicht OCRen, was es nicht braucht
Vor jedem OCR den Baum scannen (Python-Multiprocessing oder find | parallel):
get_text()pro Seite via PyMuPDF /pdfinfozählen. Seiten über ~80 lesbare Zeichen → Tagtext_layer, in Ausgabe kopieren, OCR überspringen.- Verschlüsselte oder defekte PDFs →
quarantine/, damit die Queue nicht hängt. - Gemischte PDFs: pro Seite routen——größter Zeitgewinn im großen Maßstab.
Ein Rechtsprojekt: 42.000 PDFs, 38 % hatten bereits Text, 12 % verschlüsselt——nur ~50 % brauchten OCR. Das halbierte die Laufzeit, bevor die Engine-Wahl zählte.
Tipp: CSV-Manifest ausgeben (Pfad, Seiten, Typ, geschätzte OCR-Seiten). Nach OCR-Seiten planen, nicht nach Dateianzahl.
Schnellster Pfad heute (1.000–5.000 Dateien)
Auf einer 8-Kern-Linux-Box oder Cloud-VPS heute:
ocrmypdf+ Tesseract installieren (chi_sim/chi_trafür Chinesisch).GNU paralleloderxargs -Ppro Datei; Parallelität ≈ CPU-Kerne − 1.- Flags:
--skip-text, niedriges--optimize,--jobs 1innerhalb jedes ocrmypdf gegen verschachtelte Überlastung. - Auf lokales SSD-Temp schreiben, nach Batches per
rsyncin Object Storage——Netzwerk-Mounts töten den Durchsatz.
cat scan_only.txt | parallel -j 8 \
'ocrmypdf --skip-text --optimize 0 --language chi_sim+eng \
{} /data/ocr_out/{/.}.pdf'
Tesseract ist in Minuten deploybar; PaddleOCR gewinnt oft bei komplexem Chinesisch——zweiter Durchlauf für Seiten mit niedriger Konfidenz, kein Full-Rerun.
10.000+-Architektur: Queue, Worker, Resume
- Queue: Redis+RQ, Celery oder Cloud Batch. Task = ein PDF oder Seitenbereich.
- State-DB: SQLite/Postgres mit
file_hash, Status, Retries, Engine-Version. - Scale-out: mehrere mittelgroße VPS-Knoten schlagen oft eine Riesenbox bei CPU-bound OCR.
- Seiten-Parallelität:
pdftoppm→ Seiten-Queue → Textschichten für 200+-Seiten-Binder mergen. - GPU-Pool: PaddleOCR/Surya auf separaten Workern; Routing nach Sprache/Layout.
Kubernetes brauchen Sie nicht am Tag eins. Viele Teams laufen Docker Compose + Redis auf 2–4 VPS-Workern: einer für Queue/Metadaten, Rest nur OCR.
Tool-Matrix: Geschwindigkeit, Chinesisch, durchsuchbares PDF
| Stack | Am besten für | Durchsatz | Hinweis |
|---|---|---|---|
| OCRmyPDF + Tesseract | Latein-lastig, durchsuchbares PDF | CPU-freundlich | Schwach bei komplexem chinesischem Layout |
| PaddleOCR self-hosted | Chinesisch / gemischte Docs, Tabellen | Schnell pro Seite auf GPU | Textschicht selbst ins PDF mergen |
| Commercial APIs | Compliance, kein Ops | Elastisch | Kosten bei 100.000 Seiten |
Schnellste ≠ günstigste: 200 repräsentative Dateien auf Genauigkeit × Sekunden/Seite × Preis benchmarken, bevor Sie sich festlegen.
Weitere 30–50 % Tempo: praktische Stellschrauben
- 300-DPI-Render testen, wenn Quelle 600 DPI ist——oft genug für Verträge.
- OpenCV Entrauschen/Schwellwert für saubere S/W-Scans.
- Nur minimale Sprachpakete laden.
- Leere/Stempel-Seiten per Pixelvarianz überspringen.
.txt/.jsonlexportieren, wenn nur Suche nötig; schweres PDF/A nur für Archiv-Tier.TMPDIRauf lokales NVMe bei Cloud-VMs.
Tempo und Qualität zusammenhalten
Nach dem Batch: 0,5 % stichprobenartig lesen oder CER prüfen; ID-lastige Seiten per Regex; Seiten mit niedriger Konfidenz erneut einreihen. Schlechtes OCR im Suchindex kostet mehr als ein zweiter Engine-Durchlauf. Archivprojekte brauchen Audit-Logs——wer, wann, welche Engine-Version.
Grober Rücken-Envelope: 50.000 OCR-Seiten
Bei ~5 s/Seite Tesseract Mittelklasse: ~69 h single-threaded; ~8–12 h auf 8 Kernen; ~4–6 h auf zwei 8-Kern-Workern; GPU PaddleOCR oft 1–3 s/Seite——Karten linear skalieren. Messen Sie Ihre eigene 100-Seiten-Stichprobe für pages_per_hour.
Checkliste zum Kopieren
- Rekursives Inventar + SHA256-Dedupe-Manifest.
- Preflight:
text_layer/scan/mixed/encrypted. - Enqueue (nach OCR-Seitenzahl balancieren).
- Paralleles OCR mit
--skip-textoder Seiten-Routing. - Durchsuchbares PDF oder Sidecar-Text + JSON-Metadaten.
- Stichproben-QA + zweiter Durchlauf bei niedriger Konfidenz.
- Archiv mit
ocr_engine_versionfür künftige Re-Runs.
Für RAG downstream Seitentypen in Metadaten halten. Long-Context-Kosten: unser Context-Caching-Kostenleitfaden.
Ein letzter Satz
Kein Silberbullet für Zehntausende Scans——aber ein wiederholbarer schnellster Pfad: Preflight halbiert verschwendetes OCR → Queue überlebt Crashes → Worker sättigen CPU/GPU → QA blockiert schlechte Seiten. Pipeline zuerst grün, Engines danach tunen.
Batch-OCR sättigt die CPU? Worker in der Cloud
Zehntausende Seiten sind klassische Batch-Compute——Laptops hassen 72 Stunden Volllast, Linux-VPS oder GPU-Worker skalieren horizontal mit Resume. Skripte auf Cloud Mac debuggen, schwere OCR auf gequeuete Knoten. VPSSpark bietet Cloud-Dev-Umgebungen und VPS für Digitalisierung und Wissensbasen.