---
title: "pdf-inspector Test: Lokaler PDF-Parser vor OCR"
canonical: https://wavect.io/de/blog/pdf-inspector-ocr-routing/
language: de
description: "pdf-inspector im Praxistest: PDFs lokal zu Markdown parsen, Scan-Seiten vor OCR erkennen, Benchmark prüfen und eine günstige Pipeline planen."
image: "https://wavect.io/img/blog/headers/header_pdf-inspector-ocr-routing.png"
---

[**Zurück**](/de/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/de/team/kevin-riedl/)

[Kevin Riedl](/de/team/kevin-riedl/) https://linkedin.com/in/wsdt

14 min Lesezeit · 6. August 2026

[**Weiter**](/de/blog/local-multimodal-ai-coding-assistant/)

# pdf-inspector im Test: Erst PDF parsen, dann nur nötige Seiten per OCR

TL;DR

pdf-inspector ist eine MIT-lizenzierte Rust-Bibliothek, die PDFs klassifiziert und nativen Text ohne OCR als Markdown extrahiert. Firecrawls Benchmark vom 31. Juli 2026 nennt 0,470 Sekunden für 200 Dokumente auf einem Apple M4 Pro. OCR war dabei deaktiviert, deshalb belegt der Test direkte Textextraktion und nicht millisekundenschnelle Scan-Verarbeitung. Nutze das Tool als erste Stufe einer hybriden Pipeline: Upload prüfen und isolieren, hochwertigen Text lokal extrahieren, nur markierte Seiten oder Regionen an OCR senden, Seitenherkunft erhalten und Qualität am eigenen Korpus messen. Bindings gibt es für Node.js, Python, Rust und Browser-WebAssembly.

**pdf-inspector ist ein schneller lokaler PDF-Parser und OCR-Router, aber keine OCR-Engine.** Firecrawls Open-Source-Bibliothek in Rust klassifiziert ein Dokument als textbasiert, gescannt, bildbasiert oder gemischt. Sie extrahiert brauchbaren nativen Text als Markdown und meldet, welche Seiten weiterhin OCR benötigen. Darin liegt der wirtschaftliche Nutzen: Die langsamste und teuerste Verarbeitungsstufe läuft nicht mehr über Seiten, die bereits maschinenlesbaren Text enthalten.

Der virale Beitrag nennt 0,002 Sekunden pro Seite. Im Repository steht ein starker Benchmark, aber kein universelles Versprechen mit genau dieser Aussage. Dieser Test trennt Messwert und Social-Media-Claim, zeigt die Grenze von nativem Parsing und liefert ein Entscheidungsmodell für RAG-Ingestion, Rechnungsextraktion, Vertragsrecherche und KI-Agenten.

## Was macht pdf-inspector genau?

**Das Tool liest zuerst die interne PDF-Struktur, bevor eine Seite gerendert oder ein Modell aufgerufen wird.** Der Detector sucht im Seitenbaum nach Text- und Bildoperatoren. Danach rekonstruiert der Extractor Text samt Positionen, Schriftinformationen, Spalten, Links, Listen, Überschriften und Tabellen. Das Ergebnis enthält Konfidenz, Layout-Hinweise und die Seiten, die OCR brauchen.

| PDF-Ergebnis | Empfohlene Route | Begründung |
| --- | --- | --- |
| TextBased mit hoher Konfidenz | Lokal zu Markdown extrahieren | Die Datei besitzt bereits eine brauchbare Textebene. OCR erhöht Latenz und kann Erkennungsfehler einführen. |
| Mixed | Native Seiten extrahieren, nur markierte Seiten oder Regionen per OCR lesen | Ein Dokument kann exportierte Reports, Unterschriften, Scan-Anhänge und Bildseiten kombinieren. |
| Scanned oder ImageBased | Rendern und an eine OCR- oder Vision-Pipeline senden | Es gibt keinen verwertbaren nativen Text. |
| Encoding-Probleme oder niedrige Konfidenz | OCR-Fallback und anschließende Validierung | Textoperatoren können vorhanden sein, obwohl die decodierten Zeichen unbrauchbar sind. |

Die Bibliothek bringt kein OCR-Modell mit. Das ist Absicht. Das [offizielle pdf-inspector-Repository](https://github.com/firecrawl/pdf-inspector) beschreibt einen reinen Rust-Parser ohne ML-Modell oder externen Dienst. Firecrawls gehostete [Fire-PDF-Pipeline](https://www.firecrawl.dev/blog/fire-pdf-launch) ist ein breiteres Produkt: pdf-inspector übernimmt Klassifikation und native Extraktion, danach bearbeiten Layout-Erkennung und GLM-OCR nur die nötigen Regionen. Wer beide gleichsetzt, bewertet das falsche Produkt.

## Verarbeitet das Tool wirklich 200 PDFs in 0,470 Sekunden?

**Ja, in Firecrawls veröffentlichtem Direct-Text-Benchmark. Nein, daraus werden nicht zwei Millisekunden für jede beliebige PDF-Seite.**

| Veröffentlichte Angabe | Was sie bedeutet | Was sie nicht belegt |
| --- | --- | --- |
| 200 Dokumente aus opendataloader-bench | Ein gemeinsamer Evaluierungskorpus, sequenziell in einem Prozess verarbeitet | Deine Rechnungen, Verträge, Scans und Sprachen entsprechen diesem Korpus |
| 0,470 Sekunden gesamt | Als einfacher Korpus-Mittelwert etwa 2,35 Millisekunden pro Dokument | Zwei Millisekunden pro Seite, p95-Latenz, Upload- oder OCR-Zeit |
| Apple M4 Pro, Median aus fünf Läufen | Dokumentierte Hardware und Wiederholungsmethode | Gleiches Tempo im Browser, Container, günstigen VM-Tarif oder Cold Start |
| OCR deaktiviert | Fairer Vergleich lokaler Parser ohne Modell | Genauigkeit oder Tempo auf gescannten Seiten |
| Overall 0,875, Reading Order 0,915, Tabellen 0,814 | Starke gemeldete Strukturwerte für Version 0.2.6 in diesem Test | Fehlerfreie Extraktion oder Überlegenheit bei jedem Dokumenttyp |

Die Ergebnisse wurden am 31. Juli 2026 aktualisiert. Verglichen wurden pdf-inspector 0.2.6, LiteParse, OpenDataLoader, PyMuPDF4LLM und MarkItDown. Konfiguration und Artefakte sind im Repository verlinkt. Die belastbare Kaufentscheidung lautet daher nicht „überall schnellster PDF-Parser“, sondern „vielversprechender lokaler Standard für PDFs mit nativer Textebene, den wir am eigenen Korpus testen“.

Firecrawl schreibt außerdem, dass rund 54 Prozent der PDFs im eigenen Workload keine OCR brauchen. Das ist eine Herstellerangabe zum eigenen Datenmix, keine allgemeine Verteilung. Lass die Erkennung über die Dokumente der letzten 30 bis 90 Tage laufen, bevor du daraus einen Business Case baust.

## Produktionsarchitektur: zuerst klassifizieren, dann eskalieren

1. **Sicher annehmen:** Datei- und Seitenlimits setzen, Signatur statt MIME-Header prüfen, nutzergesteuerte Dateinamen ersetzen und Uploads außerhalb des Webroots speichern.
2. **Isoliert parsen:** CPU, Speicher und Laufzeit begrenzen. PDFs von Lieferanten, aus E-Mails und öffentlichen Uploads sind nicht vertrauenswürdig.
3. **Einmal klassifizieren:** Dokumenttyp, Konfidenz, Seitenzahl, Encoding-Warnungen, komplexes Layout und OCR-Seiten protokollieren.
4. **Günstigen Pfad nutzen:** nativen Text mit hoher Konfidenz ohne Netzwerkaufruf in Markdown umwandeln.
5. **Gezielt eskalieren:** nur markierte Seiten oder Regionen rendern und an den freigegebenen OCR-Dienst oder ein lokales Modell senden.
6. **Mit Herkunft zusammensetzen:** Ergebnisse in ursprünglicher Seitenreihenfolge verbinden. Seitenzahl, Parser-Version, Route, Konfidenz und manuelle Korrekturen erhalten.
7. **Output prüfen:** leere Seiten, Zeichenqualität, Tabellenform, Summen, Daten, Identifikatoren und Pflichtfelder testen, bevor Indexierung oder Agentenaktion beginnt.

Geschätzter Routing-Wert = vermiedene OCR-Seiten × marginale OCR-Kosten pro Seite, abzüglich Parser-Compute, Engineering und Korrekturaufwand.

Fehlgeschlagene Dokumente bleiben im Nenner. Unser Modell für [AI Agent Cost per Action](/de/blog/ai-agent-cost-per-action-2026/) erklärt, warum eine billige Extraktion mit späterer Handkorrektur keine erfolgreiche Aktion ist. Wenn das Markdown in einen Wissensindex fließt, folgt danach die [RAG-Production-Readiness-Checkliste für EU-Unternehmen](/de/blog/rag-production-readiness-checklist-eu/). Dort geht es um Retrieval, Rechte, Evaluation und Antwortquellen. Hier geht es um die PDF-Route vor dem Chunking.

## Node.js, Python, Rust oder Browser-WebAssembly?

| Binding | Passt am besten für | Produktionshinweis |
| --- | --- | --- |
| Node.js oder Bun | APIs, Queues und TypeScript-Produkte | Vorgebaute Native-Pakete decken gelistete Plattformen ab. Zielarchitektur prüfen und Binary aktuell halten. |
| Python | Data Engineering, Evaluation und RAG-Ingestion | Verschiedene APIs liefern null- oder einsbasierte Seitenlisten. Seitennummerierung an der Systemgrenze normalisieren. |
| Rust oder CLI | Durchsatzstarke Dienste und kontrollierte Batch-Jobs | Prozessisolation, Ressourcenlimits, Observability und Updates liegen bei dir. |
| Browser-WebAssembly | Private lokale Konvertierung und Preflight vor einem Upload | Die Extraktion läuft nach der Initialisierung synchron. Große Dateien gehören in einen Web Worker. |

Laut [offizieller WebAssembly-Dokumentation](https://github.com/firecrawl/pdf-inspector/blob/main/wasm/README.md) bleiben PDF-Bytes lokal, der Build ist single-threaded, CMaps sind eingebettet und reine Bilddateien brauchen weiterhin OCR. Die Browser-Version eignet sich damit für datensparsamen Preflight, ersetzt aber keine vollständige Document-Intelligence-Plattform.

```
const result = classifyPdf(pdfBuffer)

if (result.pdfType === "TextBased" && result.confidence >= 0.9) {
  return processPdf(pdfBuffer).markdown
}

const native = processPdf(pdfBuffer).markdown
const scanned = await ocrOnly(pdfBuffer, result.pagesNeedingOcr)
return mergeByPage(native, scanned)
```

`ocrOnly` und `mergeByPage` sind Anwendungscode, keine APIs von pdf-inspector. Den Schwellwert 0,9 solltest du ebenfalls nicht ungeprüft übernehmen. Optimiere zuerst gegen übersehene Scan-Seiten. Bei Rechnungen oder Verträgen kann eine einzige falsch geroutete Seite teurer sein als Tausende korrekt vermiedene OCR-Aufrufe.

## Wann pdf-inspector schlecht passt

- **Scans, Handschrift und Fotos:** Das Tool kann sie routen, aber ohne weitere OCR- oder Vision-Komponente nicht lesen.
- **Visuelle Bedeutung ohne codierten Text:** Diagramme, Checkboxen, Unterschriften, Stempel und räumliche Beziehungen brauchen eventuell Layout- oder Vision-Modelle.
- **Perfekte Rekonstruktion:** Überschriften und Tabellen werden aus Schriften, Zeichenoperationen und Ausrichtung abgeleitet. Heuristiken können irren.
- **Unbegrenzte öffentliche Uploads:** Rust reduziert bestimmte Memory-Safety-Risiken, ersetzt aber keine Limits, Isolation und Dependency-Updates. Die [Security Policy](https://github.com/firecrawl/pdf-inspector/blob/main/SECURITY.md) nennt präparierte PDFs und Denial of Service ausdrücklich.
- **Null Betriebsaufwand:** Eine Open-Source-Bibliothek liefert Kontrolle, aber kein SLA, keine Review-Queue und keine automatische Recovery.

OWASP empfiehlt in der [File Upload Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html) mehrere Schutzschichten: erlaubte Typen, Signaturprüfung, Größenlimits, getrennte Speicherung, aktuelle Parser, Malware-Prüfung und Sandboxing. Lokale Verarbeitung kann Datenübertragung senken. Sie macht fremde PDFs nicht vertrauenswürdig.

## PDF-Pipeline bauen, kaufen oder hybrid betreiben?

| Option | Wähle sie, wenn | Du verantwortest |
| --- | --- | --- |
| pdf-inspector direkt einbetten | Die meisten Dateien nativen Text haben, Datenschutz zählt und dein Team die Pipeline betreiben kann | Routing, OCR-Integration, Security, Qualitäts-Gates und Updates |
| Vollständigen Managed Parser kaufen | Dokumente unberechenbar sind, Scans und komplexe Layouts dominieren und Time to Market zählt | Anbieterevaluation, Datenschutzbedingungen, Fallback und Abnahme des Outputs |
| Hybrid aus lokalem Parser und Managed OCR | Routine lokal bleiben soll und Spezialgenauigkeit nur für Ausnahmen nötig ist | Zwei Datenpfade, seitenweise Zusammenführung, Monitoring und Kostenkontrolle |
| Bestehenden Parser behalten | Extraktion bereits genau, günstig und betrieblich langweilig ist | Den Wert einer Neuentwicklung beweisen, bevor du sie finanzierst |

## Zehn Tage Evaluation vor der Architekturentscheidung

1. **Realität sampeln:** mindestens 200 repräsentative PDFs über Sprachen, Quellen, Seitenzahlen und Fehlerfälle auswählen. Präparierte und defekte Dateien separat halten.
2. **Route labeln:** markieren, welche Seiten nativen Text, OCR, Layout-Verarbeitung oder Ablehnung brauchen.
3. **Baseline messen:** Qualität, p50 und p95, OCR-Seiten, Korrekturminuten und Kosten pro akzeptiertem Dokument im heutigen System erfassen.
4. **pdf-inspector testen:** Version und Hardware pinnen. Zuerst Routing-Recall, dann Markdown-Struktur und End-to-End-Durchsatz messen.
5. **Ausnahmen bepreisen:** vermiedene OCR-Seiten, zusätzliches Engineering, manuelle Reparatur und Kosten eines übersehenen Scans berechnen.
6. **Grenze angreifen:** große, verschlüsselte, defekte, irreführende und ressourcenintensive PDFs isoliert testen.
7. **Mit Gate entscheiden:** nur liefern, wenn die Hybridroute Kosten oder Latenz verbessert und vereinbarte Qualitäts- und Sicherheitsgrenzen hält.

Wenn daraus Produktinfrastruktur wird, benchmarken wir mit unserem [AI-Enablement-Service](/de/services/ai-enablement/) den Korpus, bauen die Routing-Schicht und sichern sie mit Evaluation ab. [Twinsoft AI](/de/case-studies/twinsoft-ai/) zeigt dasselbe Prinzip in einem produktiven KI-System: Qualitäts-Gates und nachvollziehbare Evidenz rund um Modelloutput. Der [Leitfaden zur Technologieauswahl für ein MVP](/de/software-development-guide/how-to-choose-a-tech-stack-for-mvp/) hilft früh zu entscheiden, welche Schichten du selbst besitzen und welche du einkaufen solltest.

## Häufige Fragen

### Ist pdf-inspector eine OCR-Engine?

Nein. Das Tool klassifiziert PDFs und extrahiert nativen Text ohne OCR-Modell. Gescannte, bildbasierte, schwach erkannte oder falsch codierte Seiten brauchen weiterhin eine eigene OCR- oder Vision-Stufe.

### Ist pdf-inspector wirklich der schnellste PDF-Parser?

Im veröffentlichten Firecrawl-Vergleich vom 31. Juli 2026 hatte das Tool den schnellsten Gesamtlauf unter fünf lokalen Parsern ohne Modell auf 200 Dokumenten. Der Test lief auf einem Apple M4 Pro und ohne OCR. Reproduziere ihn auf deinem Korpus, bevor du die Aussage verallgemeinerst.

### Läuft pdf-inspector vollständig im Browser?

Ja. Das WebAssembly-Paket klassifiziert und extrahiert lokal aus einem Uint8Array. Laut offizieller Dokumentation werden die Bytes nicht hochgeladen. Große Dateien sollten wegen der synchronen Extraktion in einem Web Worker laufen. Reine Bilddateien benötigen weiterhin OCR.

### Wie viel OCR-Kosten spart das Routing?

Das hängt vom Anteil der Seiten mit zuverlässigem nativen Text ab. Zähle vermiedene OCR-Seiten im eigenen Korpus, multipliziere sie mit den Grenzkosten pro OCR-Seite und ziehe Parser-Compute, Engineering, Monitoring und Handkorrektur ab. Firecrawls 54 Prozent beschreiben den eigenen Workload.

### Eignet sich pdf-inspector für RAG?

Das Tool ist ein starker Kandidat für das Ingestion-Gate vor dem Chunking, wenn viele PDFs nativen Text enthalten. Erhalte Seitenherkunft, route Scans zu OCR, validiere die Struktur und teste Retrieval, Rechte und Antwortquellen separat.

## Primärquellen und Benchmark-Datum

- [Firecrawl pdf-inspector Repository und Benchmark](https://github.com/firecrawl/pdf-inspector), aktualisiert am 31. Juli 2026.
- [Offizielle Node.js- und Bun-API-Dokumentation](https://github.com/firecrawl/pdf-inspector/blob/main/napi/README.md).
- [Offizielle Python-API-Dokumentation](https://github.com/firecrawl/pdf-inspector/blob/main/docs/python.md).
- [Offizielle Browser-WebAssembly-Dokumentation](https://github.com/firecrawl/pdf-inspector/blob/main/wasm/README.md).
- [Firecrawls Ankündigung der Fire-PDF-Architektur](https://www.firecrawl.dev/blog/fire-pdf-launch).
- [OWASP File Upload Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html).

## Fazit

pdf-inspector ist interessant, weil es eine günstige Entscheidung vor eine teure Operation setzt. Der veröffentlichte Benchmark macht die Bibliothek zu einem glaubwürdigen Kandidaten für PDF-Extraktion aus nativen Textebenen. Das seitenweise Routing macht gemischte Dokumentbestände wirtschaftlich. Die Einschränkung gehört zur gleichen Aussage: Das Tool führt keine OCR aus, und 0,470 Sekunden beschreiben keine Scan-Verarbeitung.

Nutze pdf-inspector als Router, nicht als Wunderlösung. Pinne die Version, isoliere fremde Dateien, benchmarke den eigenen Korpus, sende nur unsichere Seiten zur OCR und bewerte akzeptierte Dokumente, Korrekturzeit und Gesamtkosten. So wird aus einem viralen Speed-Claim eine belastbare Produktionsarchitektur.

## Das könnte dich auch interessieren..

[**RAG-Production-Readiness-Checkliste für EU-Unternehmen** Retrieval, Rechte, Evaluation und Quellenangaben beginnen nach der PDF-Extraktion.](/de/blog/rag-production-readiness-checklist-eu/) [**AI Enablement oder generische KI-Beratung** Vergleiche ein funktionierendes KI-Setup auf deiner Infrastruktur mit einem reinen Strategie-Engagement.](/de/compare/ai-enablement-vs-generic-ai-consultancy/)

Modelle und Infrastruktur

## In diesem Cluster weiterlesen

[Mit dem Grundlagenartikel starten**LLMs in der EU selbst hosten: Wann sich Open Weights wirklich rechnen**](/de/blog/self-hosting-llms-eu-cost/)

- [Lokaler multimodaler KI-Coding-Assistent: Sprache, OCR und Datenschutz](/de/blog/local-multimodal-ai-coding-assistant/)
- [DeepSeek V4 Flash 0731 auf einem KI-PC: Was funktioniert?](/de/blog/deepseek-v4-flash-0731-local-ai-pc/)
- [Gemma 4 kostenlos mit Unsloth und Colab tunen](/de/blog/fine-tune-gemma-4-free-unsloth-colab/)
- [Taalas HC1 im Check: Lohnt sich ein fest verdrahteter LLM-ASIC?](/de/blog/taalas-hc1-llm-asic-review/)
- [Welches lokale LLM läuft auf deiner Hardware? llmfit Guide](/de/blog/llmfit-local-llm-hardware-guide/)

Postfach, ohne Lärm

## Folge der Arbeit, die für dich zählt

Du bekommst eine kurze E-Mail, wenn wir etwas Neues veröffentlichen. Folge dem ganzen Blog oder nur den Themen, die dich interessieren.

[**Zurück**](/de/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/de/team/kevin-riedl/)

[Kevin Riedl](/de/team/kevin-riedl/) https://linkedin.com/in/wsdt

14 min Lesezeit · 6. August 2026

[**Weiter**](/de/blog/local-multimodal-ai-coding-assistant/)

Neue Beiträge per E-Mail ×

×

Neue Beiträge per E-Mail

Eine kurze E-Mail, wenn wir etwas veröffentlichen. Kostenlos, ohne Tracking.

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/de/blog/pdf-inspector-ocr-routing/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-08-06",
      "inLanguage": "de",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-08-06",
      "url": "https://wavect.io/de/blog/pdf-inspector-ocr-routing/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "pdf-inspector ist eine MIT-lizenzierte Rust-Bibliothek, die PDFs klassifiziert und nativen Text ohne OCR als Markdown extrahiert. Firecrawls Benchmark vom 31. Juli 2026 nennt 0,470 Sekunden für 200 Dokumente auf einem Apple M4 Pro. OCR war dabei deaktiviert, deshalb belegt der Test direkte Textextraktion und nicht millisekundenschnelle Scan-Verarbeitung. Nutze das Tool als erste Stufe einer hybriden Pipeline: Upload prüfen und isolieren, hochwertigen Text lokal extrahieren, nur markierte Seiten oder Regionen an OCR senden, Seitenherkunft erhalten und Qualität am eigenen Korpus messen. Bindings gibt es für Node.js, Python, Rust und Browser-WebAssembly.",
  "articleBody": " Blog-Übersicht/AI und Agents/Modelle und Infrastruktur pdf-inspector im Test: Erst PDF parsen, dann nur nötige Seiten per OCR TL;DR pdf-inspector ist eine MIT-lizenzierte Rust-Bibliothek, die PDFs klassifiziert und nativen Text ohne OCR als Markdown extrahiert. Firecrawls Benchmark vom 31. Juli 2026 nennt 0,470 Sekunden für 200 Dokumente auf einem Apple M4 Pro. OCR war dabei deaktiviert, deshalb belegt der Test direkte Textextraktion und nicht millisekundenschnelle Scan-Verarbeitung. Nutze das Tool als erste Stufe einer hybriden Pipeline: Upload prüfen und isolieren, hochwertigen Text lokal extrahieren, nur markierte Seiten oder Regionen an OCR senden, Seitenherkunft erhalten und Qualität am eigenen Korpus messen. Bindings gibt es für Node.js, Python, Rust und Browser-WebAssembly. pdf-inspector ist ein schneller lokaler PDF-Parser und OCR-Router, aber keine OCR-Engine. Firecrawls Open-Source-Bibliothek in Rust klassifiziert ein Dokument als textbasiert, gescannt, bildbasiert oder gemischt. Sie extrahiert brauchbaren nativen Text als Markdown und meldet, welche Seiten weiterhin OCR benötigen. Darin liegt der wirtschaftliche Nutzen: Die langsamste und teuerste Verarbeitungsstufe läuft nicht mehr über Seiten, die bereits maschinenlesbaren Text enthalten. Der virale Beitrag nennt 0,002 Sekunden pro Seite. Im Repository steht ein starker Benchmark, aber kein universelles Versprechen mit genau dieser Aussage. Dieser Test trennt Messwert und Social-Media-Claim, zeigt die Grenze von nativem Parsing und liefert ein Entscheidungsmodell für RAG-Ingestion, Rechnungsextraktion, Vertragsrecherche und KI-Agenten. Was macht pdf-inspector genau? Das Tool liest zuerst die interne PDF-Struktur, bevor eine Seite gerendert oder ein Modell aufgerufen wird. Der Detector sucht im Seitenbaum nach Text- und Bildoperatoren. Danach rekonstruiert der Extractor Text samt Positionen, Schriftinformationen, Spalten, Links, Listen, Überschriften und Tabellen. Das Ergebnis enthält Konfidenz, Layout-Hinweise und die Seiten, die OCR brauchen. PDF-ErgebnisEmpfohlene RouteBegründung TextBased mit hoher KonfidenzLokal zu Markdown extrahierenDie Datei besitzt bereits eine brauchbare Textebene. OCR erhöht Latenz und kann Erkennungsfehler einführen. MixedNative Seiten extrahieren, nur markierte Seiten oder Regionen per OCR lesenEin Dokument kann exportierte Reports, Unterschriften, Scan-Anhänge und Bildseiten kombinieren. Scanned oder ImageBasedRendern und an eine OCR- oder Vision-Pipeline sendenEs gibt keinen verwertbaren nativen Text. Encoding-Probleme oder niedrige KonfidenzOCR-Fallback und anschließende ValidierungTextoperatoren können vorhanden sein, obwohl die decodierten Zeichen unbrauchbar sind. Die Bibliothek bringt kein OCR-Modell mit. Das ist Absicht. Das offizielle pdf-inspector-Repository beschreibt einen reinen Rust-Parser ohne ML-Modell oder externen Dienst. Firecrawls gehostete Fire-PDF-Pipeline ist ein breiteres Produkt: pdf-inspector übernimmt Klassifikation und native Extraktion, danach bearbeiten Layout-Erkennung und GLM-OCR nur die nötigen Regionen. Wer beide gleichsetzt, bewertet das falsche Produkt. Verarbeitet das Tool wirklich 200 PDFs in 0,470 Sekunden? Ja, in Firecrawls veröffentlichtem Direct-Text-Benchmark. Nein, daraus werden nicht zwei Millisekunden für jede beliebige PDF-Seite. Veröffentlichte AngabeWas sie bedeutetWas sie nicht belegt 200 Dokumente aus opendataloader-benchEin gemeinsamer Evaluierungskorpus, sequenziell in einem Prozess verarbeitetDeine Rechnungen, Verträge, Scans und Sprachen entsprechen diesem Korpus 0,470 Sekunden gesamtAls einfacher Korpus-Mittelwert etwa 2,35 Millisekunden pro DokumentZwei Millisekunden pro Seite, p95-Latenz, Upload- oder OCR-Zeit Apple M4 Pro, Median aus fünf LäufenDokumentierte Hardware und WiederholungsmethodeGleiches Tempo im Browser, Container, günstigen VM-Tarif oder Cold Start OCR deaktiviertFairer Vergleich lokaler Parser ohne ModellGenauigkeit oder Tempo auf gescannten Seiten Overall 0,875, Reading Order 0,915, Tabellen 0,814Starke gemeldete Strukturwerte für Version 0.2.6 in diesem TestFehlerfreie Extraktion oder Überlegenheit bei jedem Dokumenttyp Die Ergebnisse wurden am 31. Juli 2026 aktualisiert. Verglichen wurden pdf-inspector 0.2.6, LiteParse, OpenDataLoader, PyMuPDF4LLM und MarkItDown. Konfiguration und Artefakte sind im Repository verlinkt. Die belastbare Kaufentscheidung lautet daher nicht „überall schnellster PDF-Parser“, sondern „vielversprechender lokaler Standard für PDFs mit nativer Textebene, den wir am eigenen Korpus testen“. Firecrawl schreibt außerdem, dass rund 54 Prozent der PDFs im eigenen Workload keine OCR brauchen. Das ist eine Herstellerangabe zum eigenen Datenmix, keine allgemeine Verteilung. Lass die Erkennung über die Dokumente der letzten 30 bis 90 Tage laufen, bevor du daraus einen Business Case baust. Produktionsarchitektur: zuerst klassifizieren, dann eskalieren Sicher annehmen: Datei- und Seitenlimits setzen, Signatur statt MIME-Header",
  "articleSection": "Engineering",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "dateModified": "2026-08-06",
  "datePublished": "2026-08-06",
  "description": "pdf-inspector ist eine MIT-lizenzierte Rust-Bibliothek, die PDFs klassifiziert und nativen Text ohne OCR als Markdown extrahiert. Firecrawls Benchmark vom 31. Juli 2026 nennt 0,470 Sekunden für 200 Dokumente auf einem Apple M4 Pro. OCR war dabei deaktiviert, deshalb belegt der Test direkte Textextraktion und nicht millisekundenschnelle Scan-Verarbeitung. Nutze das Tool als erste Stufe einer hybriden Pipeline: Upload prüfen und isolieren, hochwertigen Text lokal extrahieren, nur markierte Seiten oder Regionen an OCR senden, Seitenherkunft erhalten und Qualität am eigenen Korpus messen. Bindings gibt es für Node.js, Python, Rust und Browser-WebAssembly.",
  "headline": "pdf-inspector im Test: PDFs vor OCR lokal routen",
  "image": "https://wavect.io/img/blog/headers/header_pdf-inspector-ocr-routing.svg",
  "inLanguage": "de",
  "keywords": "PDF-Parsing, OCR-Routing",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/de/blog/pdf-inspector-ocr-routing/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/de/blog/pdf-inspector-ocr-routing/",
  "wordCount": 1922
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/",
      "name": "Startseite",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/blog/overview/",
      "name": "Blog",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/blog/pdf-inspector-ocr-routing/",
      "name": "pdf-inspector im Test: PDFs vor OCR lokal routen",
      "position": 3
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/",
      "name": "Startseite",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/blog/overview/",
      "name": "Blog-Übersicht",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/blog/topics/ai-agents/",
      "name": "AI und Agents",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/blog/clusters/models-infrastructure/",
      "name": "Modelle und Infrastruktur",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/blog/pdf-inspector-ocr-routing/",
      "name": "pdf-inspector Test: Lokaler PDF-Parser vor OCR | ",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nein. Das Tool klassifiziert PDFs und extrahiert nativen Text ohne OCR-Modell. Gescannte, bildbasierte, schwach erkannte oder falsch codierte Seiten brauchen weiterhin eine eigene OCR- oder Vision-Stufe."
      },
      "name": "Ist pdf-inspector eine OCR-Engine?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Im veröffentlichten Firecrawl-Vergleich vom 31. Juli 2026 hatte das Tool den schnellsten Gesamtlauf unter fünf lokalen Parsern ohne Modell auf 200 Dokumenten. Der Test lief auf einem Apple M4 Pro und ohne OCR. Reproduziere ihn auf deinem Korpus, bevor du die Aussage verallgemeinerst."
      },
      "name": "Ist pdf-inspector wirklich der schnellste PDF-Parser?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Ja. Das WebAssembly-Paket klassifiziert und extrahiert lokal aus einem Uint8Array. Laut offizieller Dokumentation werden die Bytes nicht hochgeladen. Große Dateien sollten wegen der synchronen Extraktion in einem Web Worker laufen. Reine Bilddateien benötigen weiterhin OCR."
      },
      "name": "Läuft pdf-inspector vollständig im Browser?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Das hängt vom Anteil der Seiten mit zuverlässigem nativen Text ab. Zähle vermiedene OCR-Seiten im eigenen Korpus, multipliziere sie mit den Grenzkosten pro OCR-Seite und ziehe Parser-Compute, Engineering, Monitoring und Handkorrektur ab. Firecrawls 54 Prozent beschreiben den eigenen Workload."
      },
      "name": "Wie viel OCR-Kosten spart das Routing?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Das Tool ist ein starker Kandidat für das Ingestion-Gate vor dem Chunking, wenn viele PDFs nativen Text enthalten. Erhalte Seitenherkunft, route Scans zu OCR, validiere die Struktur und teste Retrieval, Rechte und Antwortquellen separat."
      },
      "name": "Eignet sich pdf-inspector für RAG?"
    }
  ]
}
```
