Pro รุ่น
Classifier
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”NextPDF\Pro\Classifier กำหนดประเภทเอกสาร (ใบแจ้งหนี้ สัญญา รายงาน และอื่น ๆ) และภาษาที่ตรวจจับได้ โดยใช้ฮิวริสติกแบบกำหนดได้แน่นอนบนข้อความและโครงสร้างของเอกสาร โดยเป็นแบบอิงกฎ ไม่ใช่โมเดลแมชชีนเลิร์นนิง
การพร้อมใช้งานและการอนุญาต
หัวข้อที่มีชื่อว่า “การพร้อมใช้งานและการอนุญาต”ความสามารถนี้มาพร้อมกับ NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วยซองใบอนุญาตระดับ Pro การนำไปติดตั้งที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอใบอนุญาต
ไม่มีแฟล็กความสามารถรันไทม์ที่ควบคุมโมดูลนี้ คลาส classifier มีให้ใช้งานเมื่อใดก็ตามที่ติดตั้ง nextpdf/pro แล้ว
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/pro:^3ภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”DocumentClassifier ประสานงานผู้ร่วมงานสามตัว:
StructureAnalyzerตรวจสอบ PDF เพื่อนับจำนวนหน้า จำนวนภาพและฟอนต์ และฟิลด์ฟอร์ม/ลายเซ็น โดยผลิตเป็นStructureAnalysisHeuristicClassifier(ค่าเริ่มต้นของClassifierInterface) ให้คะแนนข้อความเทียบกับพจนานุกรมคำสำคัญต่อประเภท และใช้ฮิวริสติกเชิงโครงสร้าง (ตัวอย่างเช่น เอกสารสั้นจะเอนเอียงออกห่างจาก “report”) โดยให้ผลเป็นDocumentTypeและค่าความเชื่อมั่นLanguageDetectorระบุภาษาจากโปรไฟล์ความถี่ของไทรแกรมตัวอักษรสำหรับสิบภาษา โดยถอยกลับไปใช้ภาษาอังกฤษเมื่อต่ำกว่าเกณฑ์ความเชื่อมั่น
classifyFromText() รับข้อความที่สกัดมาแล้ว (พร้อมไบต์ PDF ดิบสำหรับโครงสร้างที่เลือกได้) classifyFromFile() รับไบต์ PDF ดิบและสกัดข้อความโดยการแจงตัวดำเนินการแสดงข้อความตาม §9.4 โดยตรง
เหตุใดจึงทำงานแบบนี้
หัวข้อที่มีชื่อว่า “เหตุใดจึงทำงานแบบนี้”การตัดสินใจที่เป็นหัวใจคือการจำแนกด้วยฮิวริสติกแบบกำหนดได้แน่นอน ไม่ใช่โมเดลแมชชีนเลิร์นนิง ไปป์ไลน์แบบอิงกฎเป็นฟังก์ชันบริสุทธิ์ของอินพุต คือไบต์ที่เหมือนกันจะให้ประเภท ค่าความเชื่อมั่น และภาษาที่เหมือนกันเสมอ โดยไม่มีการเลื่อนไหลของโมเดลและไม่มีการเรียกเครือข่าย ความแน่นอนดังกล่าวทำให้ผลลัพธ์เปิดเผยค่าความเชื่อมั่นอย่างชัดแจ้ง เกต isConfident() และแมป scores ต่อประเภท เพื่อให้โมดูลแสดงว่าตัดสินใจอย่างไรแทนที่จะซ่อนตัวเลือกไว้เบื้องหลังโมเดล ดังนั้นผู้เรียกจึงกำหนดเส้นทางเอกสารที่มีความเชื่อมั่นต่ำไปยังการตรวจทานด้วยตนเองตามสัญญา และข้อความที่สั้นเกินกว่าจะให้คะแนนได้จะถอยกลับไปใช้ en ภายใต้กฎตายตัวเดียวกัน การแลกเปลี่ยนนี้เป็นไปโดยเจตนา คือความแม่นยำถูกจำกัดด้วยโปรไฟล์คำสำคัญและไทรแกรมที่ตายตัว เพื่อแลกกับความสามารถในการทำซ้ำ ความสามารถในการตรวจสอบ และตัวจำแนกประเภทที่ทำงานภายในกระบวนการทั้งหมด
เบื้องหลังการออกแบบ: API ที่ปฏิเสธจะเดา
สัญญาพฤติกรรม
หัวข้อที่มีชื่อว่า “สัญญาพฤติกรรม”- อินพุต ข้อความที่สกัดมาแล้ว (
classifyFromText) หรือไบต์ PDF ดิบ (classifyFromFile) อินพุตว่างเป็นค่าที่ถูกต้องและให้ผลที่มีความเชื่อมั่นต่ำ โดยทั่วไปคือDocumentType::Other - เอาต์พุต
ClassificationResultที่มีDocumentTypeค่าความเชื่อมั่นใน[0.0, 1.0]ลักษณะเชิงโครงสร้างที่ตรวจจับได้ รหัสภาษา ISO 639-1 และเมทาดาทาisConfident(0.7)คือตัวช่วยตามเกณฑ์ที่บันทึกไว้ - ความแน่นอน การจำแนกประเภทและการตรวจจับภาษาเป็นฟังก์ชันบริสุทธิ์ของอินพุต คืออินพุตเดียวกัน ผลลัพธ์เดียวกัน ไม่มีความสุ่ม ไม่มีเครือข่าย
- ขอบเขต ประเภทเอกสารสิบสองประเภทและโปรไฟล์ภาษาสิบภาษา ทั้งคู่ถูกตรึงไว้ในรุ่นนี้ สามารถจัดหากลยุทธ์แบบกำหนดเองได้ผ่าน
ClassifierInterface
พื้นผิว API สาธารณะ
หัวข้อที่มีชื่อว่า “พื้นผิว API สาธารณะ”| 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 |
ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว”<?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', };}ข้อควรระวังและกรณีขอบ
หัวข้อที่มีชื่อว่า “ข้อควรระวังและกรณีขอบ”- ค่าความเชื่อมั่นเป็นแบบฮิวริสติก ให้ถือผลลัพธ์ที่ต่ำกว่าเกณฑ์ว่า “ไม่แน่นอน” และกำหนดเส้นทางไปยังการตรวจทานด้วยตนเอง เช่นเดียวกับที่ตัวอย่างสำหรับโปรดักชันทำ
- การตรวจจับภาษาต้องการข้อความที่เพียงพอ สตริงที่สั้นมากจะถอยกลับไปใช้ภาษาอังกฤษโดยการออกแบบ
classifyFromFile()ใช้การสกัดข้อความระดับไบต์ที่มีขอบเขต PDF ที่บีบอัดหนักหรือเป็นภาพล้วนจะลดปริมาณข้อความที่นำมาให้คะแนนได้- ชุดประเภทเอกสารและภาษาถูกตรึงไว้ในรุ่นนี้ ให้ขยายการจำแนกประเภทโดยการนำ
ClassifierInterfaceไปใช้ ไม่ใช่โดยการเปลี่ยนแปลงพจนานุกรมในตัว
ที่ตั้งข้อมูลและการลดทอน PII
หัวข้อที่มีชื่อว่า “ที่ตั้งข้อมูลและการลดทอน PII”การจำแนกประเภททำงานในกระบวนการโดยไม่มีการเรียกเครือข่ายและไม่มีการจัดเก็บอินพุต ผลลัพธ์ประกอบด้วย DocumentType และรหัสภาษา ไม่ใช่ข้อความต้นฉบับ หากผู้เรียกเก็บรักษา metadata ให้ตรวจทานหา PII ที่เผลอติดมาก่อนจัดเก็บ
การวัดและส่งข้อมูลที่ปลอดภัยและการล้างข้อมูลในบันทึก
หัวข้อที่มีชื่อว่า “การวัดและส่งข้อมูลที่ปลอดภัยและการล้างข้อมูลในบันทึก”โมดูลไม่ปล่อยข้อมูลการวัดและส่งและไม่บันทึกอินพุต ผู้เรียกที่เพิ่มการบันทึกควรบันทึกเฉพาะ DocumentType และรหัสภาษาที่ได้ ไม่ใช่ข้อความที่จำแนกประเภท
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”การให้คะแนนคำสำคัญและการนับไทรแกรมเป็นเชิงเส้นตามความยาวของข้อความ การวิเคราะห์โครงสร้างเป็นเชิงเส้นตามความยาวไบต์ของ PDF พร้อมเพดานการคลายการบีบอัดที่มีขอบเขต ดู performance_budget
บันทึกด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “บันทึกด้านความปลอดภัย”classifyFromFile() แจงไบต์ PDF ที่ไม่น่าเชื่อถือด้วยการสแกนที่มีขอบเขตและเพดานขนาดการคลายการบีบอัดเพื่อต้านทานอินพุตที่เป็นระเบิดการคลายการบีบอัด ไม่มีการรันสคริปต์ที่ฝังอยู่
ความสอดคล้องกับมาตรฐาน
หัวข้อที่มีชื่อว่า “ความสอดคล้องกับมาตรฐาน”| 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
หัวข้อที่มีชื่อว่า “ทางเลือก / ทางสำรองของ Core”ไม่มีสิ่งเทียบเท่าใน Core สำหรับการจำแนกประเภทเอกสารหรือการตรวจจับภาษา
บันทึกขอบเขตของ Enterprise
หัวข้อที่มีชื่อว่า “บันทึกขอบเขตของ Enterprise”ตัวจำแนกประเภทนี้เป็นแบบอิงกฎและกำหนดได้แน่นอน โดยไม่ทำการฝังเวกเตอร์ การหาความคล้ายเชิงเวกเตอร์ การอนุมานโมเดล หรือการเข้าใจเชิงความหมาย ความสามารถเหล่านั้นไม่ได้เป็นส่วนหนึ่งของโมดูลนี้และไม่ได้สื่อโดยนัยจากโมดูลนี้
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทางเนมสเปซภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้าหมายเลขทิกเก็ตอยู่นอกขอบเขต
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”- Classifier — การอ้างอิงเชิงลึก — พื้นผิว API สาธารณะทั้งหมด ลำดับไปป์ไลน์ และโหมดความล้มเหลว
- Extraction
- Filter
- Diff