Ga naar inhoud
getnextpdf.com

Pro editie

Classifier

NextPDF\Pro\Classifier kent een documenttype toe (factuur, contract, rapport, enzovoort) en een gedetecteerde taal met behulp van deterministische heuristieken over de documenttekst en -structuur. Het is regelgebaseerd, geen machine-learningmodel.

Deze functie zit in NextPDF Pro (nextpdf/pro) en wordt geactiveerd met een licentie-envelop van de Pro-tier. Een deployment zonder die entitlement laadt de klassen van de functie niet. Vergelijk edities en vraag een licentie aan.

Geen runtime-mogelijkheidsvlag bewaakt deze module. De Classifier-klassen zijn beschikbaar zodra nextpdf/pro is geïnstalleerd.

Terminal window
composer require nextpdf/pro:^3

DocumentClassifier orkestreert drie samenwerkende componenten:

  • StructureAnalyzer inspecteert de PDF op paginaaantal, aantal afbeeldingen en lettertypen en formulier-/handtekeningvelden, en produceert een StructureAnalysis.
  • HeuristicClassifier (de standaard ClassifierInterface) scoort de tekst tegen woordenboeken met trefwoorden per type en past structurele heuristieken toe (korte documenten worden bijvoorbeeld weggestuurd van “report”), wat een DocumentType en een betrouwbaarheid oplevert.
  • LanguageDetector identificeert de taal aan de hand van frequentieprofielen van tekentrigrammen voor tien talen, en valt onder een betrouwbaarheidsdrempel terug op Engels.

classifyFromText() accepteert reeds geëxtraheerde tekst (met optioneel ruwe PDF- bytes voor structuur); classifyFromFile() accepteert ruwe PDF-bytes en extraheert tekst door de §9.4-tekstweergaveoperatoren rechtstreeks te parsen.

De dragende beslissing is om te classificeren met deterministische heuristieken, niet met een machine-learningmodel. Een regelgebaseerde pipeline is een pure functie van zijn invoer: identieke bytes leveren altijd een identiek type, betrouwbaarheid en taal op, zonder modeldrift en zonder netwerkoproep. Dat determinisme laat het resultaat een expliciete betrouwbaarheid tonen, een isConfident()-poort en een scores-map per type, zodat de module laat zien hoe hij beslist heeft in plaats van de keuze achter een model te verbergen. Callers routeren documenten met lage betrouwbaarheid daarom per contract naar handmatige beoordeling, en tekst die te kort is om te scoren valt onder dezelfde vaste regel terug op en. De afweging is bewust: de nauwkeurigheid wordt begrensd door vaste trefwoord- en trigramprofielen, in ruil voor reproduceerbaarheid, inspecteerbaarheid en een classifier die volledig in-process draait.

Ontwerpachtergrond: Een API die weigert te gokken.

  • Invoer. Geëxtraheerde tekst (classifyFromText) of ruwe PDF-bytes (classifyFromFile). Lege invoer is geldig en levert een resultaat met lage betrouwbaarheid op, doorgaans DocumentType::Other.
  • Uitvoer. Een ClassificationResult met het DocumentType, een betrouwbaarheid in [0.0, 1.0], gedetecteerde structurele kenmerken, een ISO 639-1-taalcode en metadata. isConfident(0.7) is de gedocumenteerde drempelhelper.
  • Determinisme. Classificatie en taaldetectie zijn pure functies van de invoer — dezelfde invoer, hetzelfde resultaat, geen willekeur, geen netwerk.
  • Bereik. Twaalf documenttypen en tien taalprofielen, beide vast in deze release. Aangepaste strategieën kunnen via ClassifierInterface worden aangeleverd.
TypeSoortBelangrijkste leden
NextPDF\Pro\Classifier\DocumentClassifierfinal classstatic create(): self, classifyFromText(string $text, string $pdfData = ''): ClassificationResult, classifyFromFile(string $pdfData): ClassificationResult
NextPDF\Pro\Classifier\ClassifierInterfaceinterfaceclassify(string $text, StructureAnalysis $structure): ClassificationResult, supports(string $contentType): bool
NextPDF\Pro\Classifier\HeuristicClassifierfinal classimplements ClassifierInterface
NextPDF\Pro\Classifier\StructureAnalyzerfinal classanalyze(string $pdfData): StructureAnalysis
NextPDF\Pro\Classifier\LanguageDetectorfinal classdetect(string $text): string
NextPDF\Pro\Classifier\ClassificationResultfinal readonly classDocumentType $type, float $confidence, array $features, string $language, isConfident(float $threshold = 0.7): bool
NextPDF\Pro\Classifier\DocumentTypeenum12 cases (Invoice, Contract, Form, Report, Letter, Receipt, Legal, Medical, Financial, Technical, Academic, Other); label(): string
<?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,
);
<?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',
};
}
  • Betrouwbaarheid is heuristisch. Behandel resultaten onder de drempel als “onzeker” en stuur ze naar handmatige beoordeling, zoals het productievoorbeeld doet.
  • Taaldetectie heeft voldoende tekst nodig; zeer korte strings vallen terug op Engels — dit is opzettelijk.
  • classifyFromFile() gebruikt begrensde tekstextractie op byteniveau; sterk gecomprimeerde of alleen-afbeelding-PDF’s verkleinen de tekst die beschikbaar is om te scoren.
  • De sets met documenttypen en talen liggen vast in deze release; breid classificatie uit door ClassifierInterface te implementeren, niet door ingebouwde woordenboeken te muteren.

Classificatie draait in-process zonder netwerkoproepen en zonder opslag van de invoer. Het resultaat bevat een DocumentType en taalcode, niet de bron- tekst. Als callers metadata bewaren, beoordeel het dan op incidentele PII vóór opslag.

De module zendt geen telemetrie uit en logt geen invoer. Callers die logging toevoegen, mogen alleen het resulterende DocumentType en de taalcode vastleggen, nooit de geclassificeerde tekst.

Trefwoordscoring en trigramtelling zijn lineair in de tekstlengte. Structuur- analyse is lineair in de PDF-bytelengte met een begrensde decompressielimiet. Zie performance_budget.

classifyFromFile() parseert niet-vertrouwde PDF-bytes met begrensd scannen en een decompressiegroottelimiet om bestand te zijn tegen decompressiebom-invoer. Er worden geen ingebedde scripts uitgevoerd.

ClaimSpec-clausuleStatus
Tekst hersteld via Tj voor bestandsclassificatieISO 32000-2:2020 §9.4Geverifieerd (unit suite)
Tekst hersteld via TJ voor bestandsclassificatieISO 32000-2:2020 §9.4Geverifieerd (unit suite)
Machine-learning-/modelgebaseerde classificatieNiet ondersteund (alleen heuristisch)

Er bestaat geen Core-equivalent voor documentclassificatie of taaldetectie.

Deze classifier is regelgebaseerd en deterministisch. Deze voert geen embedding, vectorgelijkenis, modelinferentie of semantisch begrip uit. Die mogelijkheden maken geen deel uit van deze module en worden er niet door geïmpliceerd.

Deze pagina documenteert alleen extern waarneembaar gedrag en het ondersteunde publieke API-oppervlak. Interne namespace-paden, helperklassen, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten het bereik.