ข้ามไปยังเนื้อหา
getnextpdf.com

Pro รุ่น

Classifier

NextPDF\Pro\Classifier กำหนดประเภทเอกสาร (ใบแจ้งหนี้ สัญญา รายงาน และอื่น ๆ) และภาษาที่ตรวจจับได้ โดยใช้ฮิวริสติกแบบกำหนดได้แน่นอนบนข้อความและโครงสร้างของเอกสาร โดยเป็นแบบอิงกฎ ไม่ใช่โมเดลแมชชีนเลิร์นนิง

ความสามารถนี้มาพร้อมกับ NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วยซองใบอนุญาตระดับ Pro การนำไปติดตั้งที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอใบอนุญาต

ไม่มีแฟล็กความสามารถรันไทม์ที่ควบคุมโมดูลนี้ คลาส classifier มีให้ใช้งานเมื่อใดก็ตามที่ติดตั้ง nextpdf/pro แล้ว

Terminal window
composer require nextpdf/pro:^3

DocumentClassifier ประสานงานผู้ร่วมงานสามตัว:

  • StructureAnalyzer ตรวจสอบ PDF เพื่อนับจำนวนหน้า จำนวนภาพและฟอนต์ และฟิลด์ฟอร์ม/ลายเซ็น โดยผลิตเป็น StructureAnalysis
  • HeuristicClassifier (ค่าเริ่มต้นของ 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
TypeKindKey members
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',
};
}
  • ค่าความเชื่อมั่นเป็นแบบฮิวริสติก ให้ถือผลลัพธ์ที่ต่ำกว่าเกณฑ์ว่า “ไม่แน่นอน” และกำหนดเส้นทางไปยังการตรวจทานด้วยตนเอง เช่นเดียวกับที่ตัวอย่างสำหรับโปรดักชันทำ
  • การตรวจจับภาษาต้องการข้อความที่เพียงพอ สตริงที่สั้นมากจะถอยกลับไปใช้ภาษาอังกฤษโดยการออกแบบ
  • classifyFromFile() ใช้การสกัดข้อความระดับไบต์ที่มีขอบเขต PDF ที่บีบอัดหนักหรือเป็นภาพล้วนจะลดปริมาณข้อความที่นำมาให้คะแนนได้
  • ชุดประเภทเอกสารและภาษาถูกตรึงไว้ในรุ่นนี้ ให้ขยายการจำแนกประเภทโดยการนำ ClassifierInterface ไปใช้ ไม่ใช่โดยการเปลี่ยนแปลงพจนานุกรมในตัว

การจำแนกประเภททำงานในกระบวนการโดยไม่มีการเรียกเครือข่ายและไม่มีการจัดเก็บอินพุต ผลลัพธ์ประกอบด้วย DocumentType และรหัสภาษา ไม่ใช่ข้อความต้นฉบับ หากผู้เรียกเก็บรักษา metadata ให้ตรวจทานหา PII ที่เผลอติดมาก่อนจัดเก็บ

การวัดและส่งข้อมูลที่ปลอดภัยและการล้างข้อมูลในบันทึก

หัวข้อที่มีชื่อว่า “การวัดและส่งข้อมูลที่ปลอดภัยและการล้างข้อมูลในบันทึก”

โมดูลไม่ปล่อยข้อมูลการวัดและส่งและไม่บันทึกอินพุต ผู้เรียกที่เพิ่มการบันทึกควรบันทึกเฉพาะ DocumentType และรหัสภาษาที่ได้ ไม่ใช่ข้อความที่จำแนกประเภท

การให้คะแนนคำสำคัญและการนับไทรแกรมเป็นเชิงเส้นตามความยาวของข้อความ การวิเคราะห์โครงสร้างเป็นเชิงเส้นตามความยาวไบต์ของ PDF พร้อมเพดานการคลายการบีบอัดที่มีขอบเขต ดู performance_budget

classifyFromFile() แจงไบต์ PDF ที่ไม่น่าเชื่อถือด้วยการสแกนที่มีขอบเขตและเพดานขนาดการคลายการบีบอัดเพื่อต้านทานอินพุตที่เป็นระเบิดการคลายการบีบอัด ไม่มีการรันสคริปต์ที่ฝังอยู่

ClaimSpec clauseStatus
Text recovered via Tj for file classificationISO 32000-2:2020 §9.4Verified (unit suite)
Text recovered via TJ for file classificationISO 32000-2:2020 §9.4Verified (unit suite)
Machine-learning / model-based classificationNot supported (heuristic only)

ไม่มีสิ่งเทียบเท่าใน Core สำหรับการจำแนกประเภทเอกสารหรือการตรวจจับภาษา

ตัวจำแนกประเภทนี้เป็นแบบอิงกฎและกำหนดได้แน่นอน โดยไม่ทำการฝังเวกเตอร์ การหาความคล้ายเชิงเวกเตอร์ การอนุมานโมเดล หรือการเข้าใจเชิงความหมาย ความสามารถเหล่านั้นไม่ได้เป็นส่วนหนึ่งของโมดูลนี้และไม่ได้สื่อโดยนัยจากโมดูลนี้

หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทางเนมสเปซภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้าหมายเลขทิกเก็ตอยู่นอกขอบเขต