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

Pro รุ่น

การแยกข้อมูล

NextPDF\Pro\Extraction เดินผ่าน AST ของเอกสารที่แจงแล้วและผลิต บล็อก ข้อความและตาราง โดยแต่ละบล็อกนำพา citation anchor (ดัชนีหน้า กล่องล้อมรอบ การอ้างอิงโหนด) นี่คือตัวสกัดเชิงโครงสร้างแบบกำหนดได้แน่นอนสำหรับไปป์ไลน์การระบุแหล่งที่มา ไม่ใช่เอนจินค้นหาหรือเข้าใจเนื้อหา

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

Terminal window
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 และดัชนีชิ้นส่วนที่ผลิตได้จะเสถียร
TypeKindKey members
NextPDF\Pro\Extraction\CitedTextExtractorfinal class__construct(?int $maxTokensPerChunk = null, int $minChunkLength = 10), extract(AstDocument $document): list<CitedTextBlock>
NextPDF\Pro\Extraction\CitedTableExtractorfinal classextract(AstDocument $document): list<CitedTableBlock>
NextPDF\Pro\Extraction\CitedTextBlockfinal readonly classstring $text, CitationAnchor $anchor, float $confidence, int $chunkIndex, array $metadata, estimatedTokens(): int
NextPDF\Pro\Extraction\CitedTableBlockfinal readonly classstring $nodeId, int $pageIndex, int $rowCount, int $colCount, array $matrix
NextPDF\Pro\Extraction\CitedTableCellfinal readonly classint $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 นอกสุดที่ถูกปล่อยออกมา
  • แถวสั้นจะถูกเสริมด้วยเซลล์สังเคราะห์ที่มีความเชื่อมั่นศูนย์ เพื่อให้ทุกแถวมีจำนวนคอลัมน์เท่ากัน

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

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

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

ตัวสกัดไม่ปล่อยข้อมูลการวัดและส่งและไม่บันทึกข้อความที่สกัดออกมา หากผู้เรียกห่อหุ้มด้วยการบันทึก ให้ล้าง text, metadata และเนื้อหาเซลล์ใด ๆ ก่อนปล่อยบันทึก

การสกัดเป็นการเดิน tree รอบเดียว เชิงเส้นตามจำนวนโหนด การแบ่งชิ้นส่วนเพิ่มงานตามสัดส่วนความยาวของข้อความ ดู performance_budget

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

ClaimSpec clauseStatus
Logical-structure node traversalISO 32000-2:2020 §14.7Verified (unit suite, tagged AST)
Table row/cell extractionISO 32000-2:2020 §14.8Verified (unit suite)
Semantic search / embeddingsNot supported (out of scope)

ระบบย่อย AST ของ Core ผลิต AstDocument ที่ใช้ในที่นี้ ไม่มีสิ่งเทียบเท่าใน Core สำหรับการสกัด citation block เอง ดู /modules/core/ast/

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

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