Pro Edition
Klassifizierer
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“NextPDF\Pro\Classifier weist einem Dokument einen Dokumenttyp (Rechnung,
Vertrag, Bericht usw.) und eine erkannte Sprache zu, und zwar mithilfe
deterministischer Heuristiken über Dokumenttext und -struktur. Es ist
regelbasiert, kein Machine-Learning-Modell.
Verfügbarkeit & Lizenzierung
Abschnitt betitelt „Verfügbarkeit & Lizenzierung“Diese Funktion ist in NextPDF Pro (nextpdf/pro) enthalten und wird mit einem Lizenz-Envelope der Pro-Stufe aktiviert. Eine Bereitstellung ohne diese Berechtigung lädt die Klassen der Funktion nicht. Editionen vergleichen und Lizenz erwerben.
Kein Laufzeit-Fähigkeits-Flag schaltet dieses Modul. Die Classifier-Klassen sind verfügbar, sobald nextpdf/pro installiert ist.
Installation
Abschnitt betitelt „Installation“composer require nextpdf/pro:^3Konzeptioneller Überblick
Abschnitt betitelt „Konzeptioneller Überblick“DocumentClassifier orchestriert drei Kollaborateure:
StructureAnalyzeruntersucht das PDF auf Seitenzahl, Bild- und Schriftarten-Anzahl sowie Formular-/Signaturfelder und erzeugt eineStructureAnalysis.HeuristicClassifier(das standardmäßigeClassifierInterface) bewertet den Text anhand typbezogener Schlüsselwort-Wörterbücher und wendet strukturelle Heuristiken an (zum Beispiel werden kurze Dokumente vom Typ „report“ weggewichtet) und liefert einenDocumentTypesowie eine Konfidenz.LanguageDetectorermittelt die Sprache anhand von Zeichen-Trigramm-Häufigkeitsprofilen für zehn Sprachen und fällt unterhalb einer Konfidenzschwelle auf Englisch zurück.
classifyFromText() akzeptiert bereits extrahierten Text (mit optionalen
rohen PDF-Bytes für die Struktur); classifyFromFile() akzeptiert rohe
PDF-Bytes und extrahiert Text, indem es die textanzeigenden Operatoren aus
§9.4 direkt parst.
Warum es so funktioniert
Abschnitt betitelt „Warum es so funktioniert“Die tragende Entscheidung besteht darin, mit deterministischen Heuristiken zu klassifizieren, nicht mit einem Machine-Learning-Modell. Eine regelbasierte Pipeline ist eine reine Funktion ihrer Eingabe: Identische Bytes liefern stets einen identischen Typ, eine identische Konfidenz und Sprache, ohne Modelldrift und ohne Netzwerkaufruf. Dieser Determinismus erlaubt es dem Ergebnis, eine explizite Konfidenz, ein isConfident()-Gate und eine typbezogene scores-Map offenzulegen, sodass das Modul zeigt, wie es entschieden hat, statt die Wahl hinter einem Modell zu verbergen. Aufrufer leiten Dokumente mit niedriger Konfidenz daher vertraglich zur manuellen Prüfung weiter, und Text, der zu kurz zum Bewerten ist, fällt nach derselben festen Regel auf en zurück. Der Kompromiss ist bewusst gewählt: Die Genauigkeit ist durch feste Schlüsselwort- und Trigramm-Profile begrenzt, im Austausch gegen Reproduzierbarkeit, Prüfbarkeit und einen Classifier, der vollständig prozessintern läuft.
Design-Hintergrund: Eine API, die sich weigert zu raten.
Verhaltensvertrag
Abschnitt betitelt „Verhaltensvertrag“- Eingabe. Extrahierter Text (
classifyFromText) oder rohe PDF-Bytes (classifyFromFile). Eine leere Eingabe ist gültig und liefert ein Ergebnis mit niedriger Konfidenz, typischerweiseDocumentType::Other. - Ausgabe. Ein
ClassificationResultmit demDocumentType, einer Konfidenz in[0.0, 1.0], erkannten strukturellen Merkmalen, einem ISO 639-1-Sprachcode und Metadaten.isConfident(0.7)ist der dokumentierte Schwellenwert-Helfer. - Determinismus. Klassifizierung und Spracherkennung sind reine Funktionen der Eingabe — gleiche Eingabe, gleiches Ergebnis, keine Zufälligkeit, kein Netzwerk.
- Geltungsbereich. Zwölf Dokumenttypen und zehn Sprachprofile, beide in
diesem Release fest. Eigene Strategien lassen sich über
ClassifierInterfacebereitstellen.
Öffentliche API-Oberfläche
Abschnitt betitelt „Öffentliche API-Oberfläche“| Type | Kind | Key members |
|---|---|---|
NextPDF\Pro\Classifier\DocumentClassifier | final class | static create(): self, classifyFromText(string $text, string $pdfData = ''): ClassificationResult, classifyFromFile(string $pdfData): ClassificationResult |
NextPDF\Pro\Classifier\ClassifierInterface | interface | classify(string $text, StructureAnalysis $structure): ClassificationResult, supports(string $contentType): bool |
NextPDF\Pro\Classifier\HeuristicClassifier | final class | implements ClassifierInterface |
NextPDF\Pro\Classifier\StructureAnalyzer | final class | analyze(string $pdfData): StructureAnalysis |
NextPDF\Pro\Classifier\LanguageDetector | final class | detect(string $text): string |
NextPDF\Pro\Classifier\ClassificationResult | final readonly class | DocumentType $type, float $confidence, array $features, string $language, isConfident(float $threshold = 0.7): bool |
NextPDF\Pro\Classifier\DocumentType | enum | 12 cases (Invoice, Contract, Form, Report, Letter, Receipt, Legal, Medical, Financial, Technical, Academic, Other); label(): string |
Codebeispiel — Schnellstart
Abschnitt betitelt „Codebeispiel — Schnellstart“<?php
declare(strict_types=1);
use NextPDF\Pro\Classifier\DocumentClassifier;
$result = DocumentClassifier::create() ->classifyFromText('Invoice #4471 — Amount due: $1,200.00');
printf( "%s (%.0f%% confidence), lang=%s\n", $result->type->label(), $result->confidence * 100, $result->language,);Codebeispiel — Produktion
Abschnitt betitelt „Codebeispiel — Produktion“<?php
declare(strict_types=1);
use NextPDF\Pro\Classifier\DocumentClassifier;use NextPDF\Pro\Classifier\DocumentType;
function routeDocument(string $pdfBytes): string{ $result = DocumentClassifier::create()->classifyFromFile($pdfBytes);
if (! $result->isConfident(0.7)) { return 'manual-review'; }
return match ($result->type) { DocumentType::Invoice, DocumentType::Receipt => 'accounts-payable', DocumentType::Contract, DocumentType::Legal => 'legal-intake', default => 'general-inbox', };}Randfälle & Fallstricke
Abschnitt betitelt „Randfälle & Fallstricke“- Die Konfidenz ist heuristisch. Behandeln Sie Ergebnisse unterhalb der Schwelle als „unsicher“ und leiten Sie sie zur manuellen Prüfung weiter, wie es das Produktionsbeispiel tut.
- Die Spracherkennung benötigt genügend Text; sehr kurze Strings fallen bauartbedingt auf Englisch zurück.
classifyFromFile()verwendet eine begrenzte Textextraktion auf Byteebene; stark komprimierte oder reine Bild-PDFs verringern den zur Bewertung verfügbaren Text.- Die Mengen an Dokumenttypen und Sprachen sind in diesem Release fest;
erweitern Sie die Klassifizierung, indem Sie
ClassifierInterfaceimplementieren, nicht indem Sie eingebaute Wörterbücher verändern.
Datenresidenz & PII-Maßnahmen
Abschnitt betitelt „Datenresidenz & PII-Maßnahmen“Die Klassifizierung läuft prozessintern, ohne Netzwerkaufrufe und ohne
Speicherung der Eingabe. Das Ergebnis enthält einen DocumentType und einen
Sprachcode, nicht den Quelltext. Wenn Aufrufer metadata persistieren, prüfen
Sie diese vor der Speicherung auf zufällige PII.
Sichere Telemetrie & Log-Bereinigung
Abschnitt betitelt „Sichere Telemetrie & Log-Bereinigung“Das Modul gibt keine Telemetrie aus und protokolliert keine Eingabe. Aufrufer,
die Logging hinzufügen, sollten nur den resultierenden DocumentType und den
Sprachcode aufzeichnen, niemals den klassifizierten Text.
Performance
Abschnitt betitelt „Performance“Schlüsselwort-Bewertung und Trigramm-Zählung sind linear in der Textlänge. Die
Strukturanalyse ist linear in der PDF-Bytelänge mit einer begrenzten
Dekomprimierungsgrenze. Siehe performance_budget.
Sicherheitshinweise
Abschnitt betitelt „Sicherheitshinweise“classifyFromFile() parst nicht vertrauenswürdige PDF-Bytes mit begrenztem
Scannen und einer Dekomprimierungs-Größengrenze, um Dekomprimierungsbomben als
Eingabe abzuwehren. Es werden keine eingebetteten Skripte ausgeführt.
Konformität
Abschnitt betitelt „Konformität“| Claim | Spec clause | Status |
|---|---|---|
Text recovered via Tj for file classification | ISO 32000-2:2020 §9.4 | Verified (unit suite) |
Text recovered via TJ for file classification | ISO 32000-2:2020 §9.4 | Verified (unit suite) |
| Machine-learning / model-based classification | — | Not supported (heuristic only) |
Core-Rückfalloption / Alternative
Abschnitt betitelt „Core-Rückfalloption / Alternative“Für Dokumentklassifizierung oder Spracherkennung gibt es kein Core-Äquivalent.
Hinweis zur Enterprise-Abgrenzung
Abschnitt betitelt „Hinweis zur Enterprise-Abgrenzung“Dieser Classifier ist regelbasiert und deterministisch. Er führt kein Embedding, keine Vektorähnlichkeit, keine Modellinferenz und kein semantisches Verständnis durch. Diese Fähigkeiten sind nicht Teil dieses Moduls und werden von ihm nicht impliziert.
Veröffentlichungsgrenze
Abschnitt betitelt „Veröffentlichungsgrenze“Diese Seite dokumentiert ausschließlich extern beobachtbares Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Hilfsklassen, Mechanismus-Tabellen, Runbook-Dateinamen und Ticket-Präfixe liegen außerhalb des Geltungsbereichs.
Siehe auch
Abschnitt betitelt „Siehe auch“- Classifier — Ausführliche Referenz — die vollständige öffentliche API-Oberfläche, Pipeline-Reihenfolge und Fehlermodi.
- Extraction
- Filter
- Diff