Pro รุ่น
การแยกข้อมูล
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”NextPDF\Pro\Extraction เดินผ่าน AST ของเอกสารที่แจงแล้วและผลิต บล็อก ข้อความและตาราง โดยแต่ละบล็อกนำพา citation anchor (ดัชนีหน้า กล่องล้อมรอบ การอ้างอิงโหนด) นี่คือตัวสกัดเชิงโครงสร้างแบบกำหนดได้แน่นอนสำหรับไปป์ไลน์การระบุแหล่งที่มา ไม่ใช่เอนจินค้นหาหรือเข้าใจเนื้อหา
การมีให้ใช้งานและการอนุญาต
หัวข้อที่มีชื่อว่า “การมีให้ใช้งานและการอนุญาต”ความสามารถนี้มาพร้อมกับ NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วยซองใบอนุญาตระดับ Pro การติดตั้งใช้งานที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ ไม่มีแฟล็กความสามารถรันไทม์ที่ควบคุมโมดูลนี้ คลาส Extraction มีให้ใช้งานเมื่อใดก็ตามที่ติดตั้ง nextpdf/pro แล้ว เปรียบเทียบรุ่นและขอใบอนุญาต
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/pro:^3ภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”ตัวสกัดทั้งสองรับ NextPDF\Ast\AstDocument ซึ่งเป็น tree ของเอกสารที่แจงแล้วที่ผลิตโดยระบบย่อย AST ของ Core ตัวสกัดไม่แจงไบต์ PDF ดิบเอง AST คือขอบเขตของอินพุต
CitedTextExtractorเดินผ่าน tree และปล่อยCitedTextBlockสำหรับโหนดข้อความที่มีสาระแต่ละโหนด (ย่อหน้า หัวข้อ รายการ เซลล์ตาราง โค้ด คำอธิบายประกอบ) ที่ข้อความซึ่งตัดช่องว่างแล้วมีความยาวถึงขั้นต่ำ token budget แบบเลือกได้จะแบ่งข้อความยาวที่ขอบเขตประโยค แต่ละบล็อกนำพาCitationAnchorพร้อม node id ดัชนีหน้า กล่องล้อมรอบ และค่าความเชื่อมั่นที่อ่านจากโหนด (ค่าเริ่มต้น 1.0) โหนดที่ไม่มีกล่องล้อมรอบจะได้รับกล่อง sentinel พื้นที่ศูนย์เพื่อให้ anchor ถูกต้องเสมอCitedTableExtractorค้นหาโหนดTableอ่านแถวและเซลล์ และสร้างเมทริกซ์แบบแถวต่อแถวที่เป็นสี่เหลี่ยมซึ่งเสริมให้ครบจนถึงแถวที่กว้างที่สุด ไม่มีการลงลึกเข้าไปในตารางซ้อน ค่าความเชื่อมั่นของเซลล์ตั้งค่าเริ่มต้นเป็น 0.8 เว้นแต่โหนดจะนำพาค่าที่ระบุไว้ชัดเจน
ลำดับชั้นเชิงโครงสร้างที่ตัวสกัดเหล่านี้เดินผ่านสอดคล้องกับแบบจำลองโครงสร้างเชิงตรรกะของ PDF (ISO 32000-2:2020 §14.7) และองค์ประกอบโครงสร้างตาราง (§14.8) เมื่อเอกสารต้นทางถูกแท็ก
เหตุใดจึงทำงานเช่นนี้
หัวข้อที่มีชื่อว่า “เหตุใดจึงทำงานเช่นนี้”ตัวสกัดรับ AST ที่แจงแล้วเป็นขอบเขตของอินพุต ไม่ใช่ไบต์ PDF ดิบ ความเสี่ยงจากการแจงจึงแยกออกจากตรรกะการสกัด ค่าความเชื่อมั่นถูกอ่านตรงจากโหนด AST และส่งผ่านโดยไม่เปลี่ยนแปลง โมดูลไม่เคยคำนวณ จัดอันดับ หรือปรับปรุงค่านี้ เอาต์พุตคงอยู่ในลำดับเอกสาร ไม่ใช่ลำดับความเกี่ยวข้อง เพราะการระบุแหล่งที่มาต้องการแหล่งกำเนิดที่ตรวจสอบได้ ไม่ใช่การคาดเดาเชิงฮิวริสติกที่ตัวสกัดปกป้องไม่ได้ ทุกบล็อกนำพา citation anchor คือ node id ดัชนีหน้า กล่องล้อมรอบ เพื่อให้ไปป์ไลน์ปลายทางสามารถสืบย้อนแต่ละคำอ้างกลับไปยังต้นกำเนิด สิ่งนี้จงใจให้โมดูลเป็นตัวสกัดเชิงโครงสร้างแบบกำหนดได้แน่นอน มันรายงานสิ่งที่ AST ยืนยันและปฏิเสธที่จะสร้างสิ่งใดขึ้นมาที่เอกสารไม่ได้ระบุ
ภูมิหลังการออกแบบ API ที่ปฏิเสธการคาดเดา
สัญญาพฤติกรรม
หัวข้อที่มีชื่อว่า “สัญญาพฤติกรรม”- อินพุต
NextPDF\Ast\AstDocumentโมดูลไม่รับไบต์ PDF ดิบ ให้ผลิต AST ด้วยระบบย่อย AST ของ Core ก่อน - เอาต์พุต
list<CitedTextBlock>หรือlist<CitedTableBlock>ในลำดับเอกสาร - ค่าความเชื่อมั่นเป็นแบบส่งผ่าน ค่านี้อ่านจากแอตทริบิวต์ของโหนด AST (หรือค่าเริ่มต้นตายตัว) โมดูลนี้ไม่คำนวณหรือปรับปรุงค่าความเชื่อมั่น
- ไม่มีการประมวลผลเชิงความหมาย ตัวสกัดไม่ทำการฝังเวกเตอร์ การหาความคล้ายเชิงเวกเตอร์ การจัดอันดับ หรือการเข้าใจเอกสาร การจัดลำดับเอาต์พุตเป็นลำดับเอกสาร ไม่ใช่ลำดับความเกี่ยวข้อง
- ความแน่นอน สำหรับ AST เดียวกัน บล็อก anchor และดัชนีชิ้นส่วนที่ผลิตได้จะเสถียร
พื้นผิว API สาธารณะ
หัวข้อที่มีชื่อว่า “พื้นผิว API สาธารณะ”| Type | Kind | Key members |
|---|---|---|
NextPDF\Pro\Extraction\CitedTextExtractor | final class | __construct(?int $maxTokensPerChunk = null, int $minChunkLength = 10), extract(AstDocument $document): list<CitedTextBlock> |
NextPDF\Pro\Extraction\CitedTableExtractor | final class | extract(AstDocument $document): list<CitedTableBlock> |
NextPDF\Pro\Extraction\CitedTextBlock | final readonly class | string $text, CitationAnchor $anchor, float $confidence, int $chunkIndex, array $metadata, estimatedTokens(): int |
NextPDF\Pro\Extraction\CitedTableBlock | final readonly class | string $nodeId, int $pageIndex, int $rowCount, int $colCount, array $matrix |
NextPDF\Pro\Extraction\CitedTableCell | final readonly class | int $row, int $col, ?string $textContent, float $confidence |
ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว”<?php
declare(strict_types=1);
use NextPDF\Pro\Extraction\CitedTextExtractor;
/** @var \NextPDF\Ast\AstDocument $ast */$blocks = (new CitedTextExtractor())->extract($ast);
foreach ($blocks as $block) { printf( "p%d chunk#%d (%d tokens): %s\n", $block->anchor->pageIndex, $block->chunkIndex, $block->estimatedTokens(), $block->text, );}ตัวอย่างโค้ด — การใช้งานจริง
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — การใช้งานจริง”<?php
declare(strict_types=1);
use NextPDF\Pro\Extraction\CitedTextExtractor;
function chunkForCitation(\NextPDF\Ast\AstDocument $ast): array{ // Token-bounded chunks for downstream citation storage. $extractor = new CitedTextExtractor( maxTokensPerChunk: 400, minChunkLength: 16, );
$rows = []; foreach ($extractor->extract($ast) as $block) { $rows[] = [ 'text' => $block->text, 'page' => $block->anchor->pageIndex, 'node_id' => $block->anchor->nodeId, 'chunk' => $block->chunkIndex, ]; }
return $rows;}กรณีขอบและข้อควรระวัง
หัวข้อที่มีชื่อว่า “กรณีขอบและข้อควรระวัง”- เอกสารที่ไม่ได้แท็กหรือแท็กไม่ดีจะให้โหนดข้อความน้อยลง คุณภาพของ AST คือขอบเขตบนของคุณภาพการสกัด
- โหนดที่ไม่มีกล่องล้อมรอบจะได้กล่อง sentinel พื้นที่ศูนย์
BoundingBox(0,0,0,0)ให้ตรวจจับด้วยwidth === 0.0 && height === 0.0หากต้องการบริเวณจริง - ตารางซ้อนจะไม่ถูกลงลึก มีเพียงโหนด
Tableนอกสุดที่ถูกปล่อยออกมา - แถวสั้นจะถูกเสริมด้วยเซลล์สังเคราะห์ที่มีความเชื่อมั่นศูนย์ เพื่อให้ทุกแถวมีจำนวนคอลัมน์เท่ากัน
ที่ตั้งข้อมูลและการลดทอน PII
หัวข้อที่มีชื่อว่า “ที่ตั้งข้อมูลและการลดทอน PII”โมดูลนี้ประมวลผลข้อความใด ๆ ที่ AST ที่จัดหาให้บรรจุอยู่และคืนกลับโดยไม่เปลี่ยนแปลงภายในบล็อก โดยไม่ทำการเรียกเครือข่าย ไม่มีการจัดเก็บภายนอก และไม่มีการบันทึกเนื้อหาที่สกัดออกมา การจัดการ PII การปิดบัง และการควบคุมที่ตั้งข้อมูลเป็นความรับผิดชอบของผู้เรียกบนบล็อกที่ผลิตได้ ดูแนวทางการจัดการ PII ของ Core
การวัดและส่งข้อมูลที่ปลอดภัยและการล้างข้อมูลในบันทึก
หัวข้อที่มีชื่อว่า “การวัดและส่งข้อมูลที่ปลอดภัยและการล้างข้อมูลในบันทึก”ตัวสกัดไม่ปล่อยข้อมูลการวัดและส่งและไม่บันทึกข้อความที่สกัดออกมา หากผู้เรียกห่อหุ้มด้วยการบันทึก ให้ล้าง text, metadata และเนื้อหาเซลล์ใด ๆ ก่อนปล่อยบันทึก
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”การสกัดเป็นการเดิน tree รอบเดียว เชิงเส้นตามจำนวนโหนด การแบ่งชิ้นส่วนเพิ่มงานตามสัดส่วนความยาวของข้อความ ดู performance_budget
บันทึกด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “บันทึกด้านความปลอดภัย”อินพุตคือ AST ที่แจงไว้ล่วงหน้า ดังนั้นโมดูลนี้จึงไม่แจงไบต์ PDF ที่เป็นปฏิปักษ์เอง จงปฏิบัติต่อข้อความที่สกัดออกมาว่าไม่น่าเชื่อถือและหลีกสำหรับปลายทางของมัน
ความสอดคล้องกับมาตรฐาน
หัวข้อที่มีชื่อว่า “ความสอดคล้องกับมาตรฐาน”| Claim | Spec clause | Status |
|---|---|---|
| Logical-structure node traversal | ISO 32000-2:2020 §14.7 | Verified (unit suite, tagged AST) |
| Table row/cell extraction | ISO 32000-2:2020 §14.8 | Verified (unit suite) |
| Semantic search / embeddings | — | Not supported (out of scope) |
ทางสำรอง / ทางเลือกของ Core
หัวข้อที่มีชื่อว่า “ทางสำรอง / ทางเลือกของ Core”ระบบย่อย AST ของ Core ผลิต AstDocument ที่ใช้ในที่นี้ ไม่มีสิ่งเทียบเท่าใน Core สำหรับการสกัด citation block เอง ดู /modules/core/ast/
บันทึกขอบเขตของ Enterprise
หัวข้อที่มีชื่อว่า “บันทึกขอบเขตของ Enterprise”โมดูลนี้เป็นตัวสกัดเชิงโครงสร้างเท่านั้น โดยไม่ทำการค้นหาเชิงความหมาย การฝังเวกเตอร์ การจัดอันดับความคล้าย หรือ document intelligence ความสามารถเหล่านั้นไม่ได้เป็นส่วนหนึ่งของโมดูลนี้และไม่ได้สื่อโดยนัยจากโมดูลนี้
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้อธิบายเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้าตั๋วอยู่นอกขอบเขต