Lewati ke konten
getnextpdf.com

Pro edisi

Classifier — Referensi Mendalam

Halaman ini adalah referensi tingkat kontrak untuk classifier dokumen NextPDF Pro. Permukaannya adalah satu orchestrator, NextPDF\Pro\Classifier\DocumentClassifier, beserta kolaboratornya: StructureAnalyzer, LanguageDetector, dan strategi ClassifierInterface dengan HeuristicClassifier bawaannya. Hasil datang sebagai objek ClassificationResult yang immutable yang membawa DocumentType, confidence dalam [0.0, 1.0], nilai ClassificationFeature yang terdeteksi, dan kode bahasa ISO 639-1. Klasifikasi berbasis aturan dan deterministik: tanpa inferensi model, tanpa keacakan, tanpa panggilan jaringan, tanpa akses filesystem. Halaman ini menyatakan API publik, kontrak perilaku yang teramati, dan mode kegagalan.

Kapabilitas ini disertakan dalam NextPDF Pro (nextpdf/pro) dan diaktifkan dengan envelope lisensi tier Pro. Deployment tanpa entitlement tersebut tidak memuat kelas-kelas kapabilitas ini. Bandingkan edisi dan dapatkan lisensi.

Tidak ada flag kapabilitas runtime yang menggerbangi modul ini. Kelas-kelas classifier tersedia kapan pun nextpdf/pro terpasang.

SimbolParameterPerilaku bawaanMengembalikanMelempar atau gagal denganCatatan
DocumentClassifierconstructor: StructureAnalyzer, LanguageDetector, ClassifierInterfaceMengorkestrasi analisis struktur, klasifikasi strategi, dan deteksi bahasafinal; injeksi kolaborator hanya untuk strategi kustom
DocumentClassifier::create()tidak adaMembangun kolaborator bawaan dengan HeuristicClassifier sebagai strateginyaselfKonfigurasi bawaan yang deterministik
DocumentClassifier::classifyFromText()$text, $pdfData = ''$pdfData kosong menggunakan struktur kosong; byte mentah non-kosong menambah sinyal strukturalClassificationResultTidak melempar; input yang sparse menurunkan confidenceDeteksi bahasa selalu berjalan pada $text
DocumentClassifier::classifyFromFile()string $pdfDataMemindai content stream, memulihkan teks §9.4, menganalisis struktur, mengklasifikasiClassificationResultTidak melempar; stream yang tidak terbaca mengurangi teks yang dipulihkanPemindaian byte terbatas, bukan parse PDF penuh
ClassifierInterface::classify()$text, StructureAnalysis $structureKontrak strategi yang dikonsumsi oleh orchestratorClassificationResultDitentukan oleh implementasiTitik ekstensi untuk strategi klasifikasi kustom
ClassifierInterface::supports()string $contentTypeProbe content-type untuk classifier kompositboolMenerima MIME type atau deskriptor konten
HeuristicClassifiertidak adaStrategi bawaan: kamus keyword ditambah heuristik strukturalTidak melemparfinal; supports() menerima application/pdf dan text/plain
StructureAnalyzer::analyze()string $pdfDataPemindaian regex atas byte mentah; tanpa parse PDF penuhStructureAnalysisTidak melemparMenghitung halaman, gambar, font; mendeteksi field form dan signature
LanguageDetector::detect()string $textPencocokan profil trigram dengan pra-pemeriksaan rentang skrip CJKkode ISO 639-1 non-empty-stringTidak melemparJatuh kembali ke en di bawah ambang penerimaan
LanguageDetector::detectWithConfidence()string $textSeperti detect(), dengan confidence yang dieksposarray{language: non-empty-string, confidence: float}Tidak melemparTeks pendek mengembalikan en dengan confidence 0.0
ClassificationResultconstructor: $type, $confidence, $features, $language, $metadata = []Objek nilai yang immutablefinal readonly; metadata membawa scores dan method
ClassificationResult::isConfident()float $threshold = 0.7Membandingkan confidence terhadap ambangboolGerbang terdokumentasi untuk perutean tinjauan manual
StructureAnalysisconstructor: $pageCount, $imageCount, $fontCount, $hasFormFields, $hasSignatureFields, $imageDensity, $detectedFeaturesObjek nilai immutable yang dihasilkan oleh StructureAnalyzerfinal readonly; imageDensity adalah gambar per halaman
DocumentTypeenum berbasis string, 12 caseCase: Invoice, Contract, Form, Report, Letter, Receipt, Legal, Medical, Financial, Technical, Academic, Othernilai backing invoiceotherlabel() mengembalikan nama yang dapat dibaca manusia
ClassificationFeatureenum berbasis string, 7 caseCase: HasTables, HasHeaders, HasSignatures, HasLogos, HasBarcodes, HasForms, IsScannednilai backing has_tablesis_scannedSinyal struktural yang diumpankan ke klasifikasi
public static function create(): self
public function classifyFromText(string $text, string $pdfData = ''): ClassificationResult
public function classifyFromFile(string $pdfData): ClassificationResult
public function classify(string $text, StructureAnalysis $structure): ClassificationResult;
public function supports(string $contentType): bool;
public function analyze(string $pdfData): StructureAnalysis
public function detect(string $text): string
public function detectWithConfidence(string $text): array
public function __construct(
public DocumentType $type,
public float $confidence,
public array $features,
public string $language,
public array $metadata = [],
) {}
public function isConfident(float $threshold = 0.7): bool

DocumentClassifier menjalankan analisis struktur, lalu klasifikasi strategi, lalu deteksi bahasa, dan merakit sebuah ClassificationResult. Strategi memasok tipe, confidence, features, dan metadata; detektor memasok bahasa. classifyFromText() tanpa byte PDF menggantikan dengan struktur kosong: nol halaman, nol hitungan, tanpa features. classifyFromFile() menurunkan baik struktur maupun teks dari byte mentah yang sama.

HeuristicClassifier menilai teks yang telah dijadikan huruf kecil terhadap kamus keyword per-tipe-dokumen, dinormalisasi berdasarkan panjang teks. Kamus, bobot, dan ambang spesifik adalah detail implementasi dan tidak dipublikasikan. Sinyal struktural kemudian menyesuaikan skor: nilai ClassificationFeature yang cocok mendorong tipe yang terkait dengannya; dokumen di atas ambang halaman condong menjauh dari Letter dan Receipt; dokumen multi-halaman dengan header dan tabel menerima dorongan Report; feature form yang terdeteksi menambah sinyal Form yang kuat. Skor tertinggi menang dan dipetakan ke sebuah DocumentType. Normalisasi terbatas memetakan skor mentah ke [0.0, 1.0]. Skor di bawah minimum menghasilkan DocumentType::Other dengan lantai confidence non-nol yang kecil. metadata hasil membawa peta scores per-tipe dan method: heuristic. HeuristicClassifier sendiri melaporkan bahasa en; DocumentClassifier menimpanya dengan keluaran detektor.

Pemeriksaan rentang skrip untuk teks CJK berjalan sebelum penilaian trigram. Dominasi Hangul memilih ko; kana apa pun memilih ja; jika tidak, rasio ideograph yang cukup memilih zh. Semua teks lain dinilai berdasarkan frekuensi trigram karakter terhadap sepuluh profil bawaan. Nilai kembalian yang mungkin adalah kode ISO 639-1 en, zh, ja, ko, de, fr, es, pt, it, dan nl. Teks di bawah panjang minimum mengembalikan en dengan confidence 0.0. Hasil di bawah ambang penerimaan dengan margin sempit juga mengembalikan en. Confidence mencerminkan margin antara skor profil terbaik dan terbaik kedua.

classifyFromFile() memindai byte mentah untuk segmen stream/endstream. Setiap segmen dicoba sebagai data Flate di bawah batas inflasi terbatas; pada kegagalan, byte segmen mentah digunakan. Ketika kamus stream yang berdekatan mendeklarasikan PNG predictor di /DecodeParms, pembalikan menghormati parameter Predictor, Columns, Colors, dan BitsPerComponent sesuai ISO 32000-2:2020 §7.4.4.4, menggunakan kelas DecodeParms dan PngPredictor dari modul Filter. Teks kemudian dipulihkan dari operator penampil teks §9.4: string literal yang ditampilkan dengan Tj dan string literal di dalam array TJ. Classifier menilai teks yang dipulihkan; ia tidak bergantung pada tata letak visual.

StructureAnalyzer::analyze() menghitung token halaman, gambar, dan font dalam byte mentah, mendeteksi /AcroForm dan field signature, serta menurunkan densitas gambar. Deteksi feature bersifat heuristik: penggambaran rectangle berulang mengindikasikan tabel, deklarasi ukuran font besar mengindikasikan header, dan densitas gambar tinggi dengan sedikit font mengindikasikan dokumen hasil pindai. Hitungan mencerminkan token yang terlihat dalam byte mentah; struktur yang diserialkan di dalam compressed object stream tidak dihitung.

Seluruh pipeline adalah fungsi murni dari byte inputnya. Input yang identik menghasilkan ClassificationResult yang identik. Tidak ada inferensi model, tidak ada keacakan, tidak ada panggilan jaringan, dan tidak ada akses filesystem.

  • Teks kosong atau nyaris kosong menghasilkan DocumentType::Other dengan confidence rendah secara desain. Bercabanglah pada isConfident() alih-alih pada tipe saja.
  • Tidak ada metode publik dari modul ini yang melempar. Stream yang gagal didekompresi dipindai secara mentah; parameter predictor yang malformed atau tidak didukung jatuh kembali ke byte yang tidak difilter.
  • Pemulihan teks hanya mencocokkan bentuk string literal Tj dan TJ. String heksadesimal, teks di dalam konten terenkripsi, dan operator yang terpecah antar-stream tidak dipulihkan, yang mengurangi teks yang tersedia untuk dinilai.
  • Batas dekompresi membatasi memori selama inflasi stream dan menahan input decompression-bomb. Konten di luar batas tidak diinflasi.
  • PDF yang hanya berisi gambar atau yang terkompresi berat memulihkan sedikit teks; harapkan hasil confidence rendah dan rutekan ke tinjauan manual.
  • Deteksi bahasa di bawah panjang teks minimum mengembalikan en dengan confidence 0.0; string yang sangat pendek tidak pernah menghasilkan hasil non-Inggris.
  • Dua belas tipe dokumen dan sepuluh profil bahasa bersifat tetap untuk rilis ini. Ekstensi dilakukan melalui implementasi ClassifierInterface kustom, bukan dengan menyunting data bawaan.
  • Tidak ada operasi kriptografis yang terjadi dalam modul ini, sehingga tidak ada perilaku khusus mode FIPS.
KlaimStandarKlausa
Klasifikasi file memulihkan teks yang ditampilkan dengan operator Tj.ISO 32000-2:2020§9.4
Klasifikasi file memulihkan string literal di dalam operator array TJ.ISO 32000-2:2020§9.4
Pembalikan PNG-predictor menghormati parameter filter Predictor, Columns, Colors, dan BitsPerComponent.ISO 32000-2:2020§7.4.4.4

Kode bahasa mengikuti ISO 639-1; ini adalah pernyataan format keluaran yang berbasis produk, bukan klaim konformansi yang dikutip. Semua klausa diparafrasekan; NextPDF tidak mereproduksi teks normatif. Ini adalah pernyataan kapabilitas, bukan sertifikasi. NextPDF tidak memegang sertifikasi apa pun dan tidak memberikan apa pun. Klasifikasi bersifat heuristik dan best-effort: modul menegaskan determinisme, bukan akurasi, dan pemanggil memiliki ambang keputusannya sendiri.

  • Tersedia sejak nextpdf/pro 2.2.0; berlaku saat ini di nextpdf/pro 3.1.0.
  • Gunakan DocumentClassifier::create() untuk pipeline bawaan. Injeksi kolaborator hanya untuk memasok strategi ClassifierInterface kustom.
  • Perlakukan hasil di bawah ambang sebagai tidak pasti dan rutekan ke tinjauan manual; isConfident() dengan bawaan 0.7-nya adalah gerbang yang terdokumentasi.
  • Modul tidak menyimpan apa pun, tidak memancarkan telemetri, dan tidak mencatat input. Jika pemanggil mempersistenkan metadata, tinjau terlebih dahulu terhadap kebijakan penanganan data mereka sendiri.
  • Penilaian keyword dan penghitungan trigram bersifat linier terhadap panjang teks. Analisis struktur bersifat linier terhadap panjang byte PDF di bawah batas dekompresi terbatas. Anggaran halaman adalah 1000 ms wall time dan 64 MB memori puncak.

Halaman ini hanya mendokumentasikan perilaku yang teramati secara eksternal dan permukaan API publik yang didukung. Jalur namespace internal, kelas pembantu, tabel mekanisme, nama file runbook, dan prefiks tiket berada di luar cakupan.