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

ลบ PII ออกจาก PDF ผ่าน Connect

สูตรนี้ใช้เครื่องมือปิดบังที่ NextPDF Connect เปิดให้ใช้งาน เพื่อลบข้อมูลที่ระบุตัวบุคคลได้ (personally identifiable information, PII) ที่ตรวจพบออกจากชั้นข้อความของเอกสาร เครื่องมือเหล่านี้อยู่ใน ระดับ Enterprise โดย ToolRegistry จะสร้าง redact_pdf, zone_redact_pdf และ deidentify_pdf ด้วยการตรวจหาคลาสความเป็นส่วนตัวระดับ Enterprise (RedactionEngine + PiiDetector) ผ่าน class_exists() เครื่องมือแต่ละตัวจะถูกลงทะเบียนภายใต้ระดับ enterprise เฉพาะเมื่อคลาสเหล่านั้น autoload ได้เท่านั้น ในการติดตั้งที่มีเฉพาะ open-source เครื่องมือเหล่านี้จะไม่มีอยู่ การเรียกใช้จะล้มเหลวด้วยข้อผิดพลาด unknown-tool แทนการลดทอนการทำงานอย่างเงียบๆ เครื่องมือทั้งสามตัวประกาศ destructiveHint: true การแก้ไขนี้เขียนทับเนื้อหาของหน้าและไม่สามารถย้อนกลับได้จากเอกสารที่แก้ไขแล้ว

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

Terminal window
composer require nextpdf/server

เครื่องมือปิดบังจะลงทะเบียนเฉพาะเมื่อติดตั้งโมดูลความเป็นส่วนตัวระดับ Enterprise ควบคู่ไปกับเซิร์ฟเวอร์เท่านั้น โมดูลนี้มาพร้อมกับ nextpdf/premium โปรดตรวจยืนยันว่าเครื่องมือมีอยู่ในการนำไปใช้งานที่กำลังทำงานอยู่ ก่อนพึ่งพาเครื่องมือนั้น:

Terminal window
./vendor/bin/nextpdf-mcp <<'EOF'
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"c","version":"1.0.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
EOF

หาก redact_pdf ขาดหายไปจากผลลัพธ์ของ tools/list แสดงว่าคลาสความเป็นส่วนตัวระดับ Enterprise ไม่ได้ทำงานในการติดตั้งนี้ ดู /connect/tool-catalog/ เพื่อเรียนรู้ว่ารีจิสทรีคำนวณชุดเครื่องมือต่อระดับขณะบูตอย่างไร

เครื่องมือสามตัวครอบคลุมกลยุทธ์การปิดบังสามแบบ ทั้งหมดเป็นเครื่องมือระดับ Enterprise และทั้งหมดระบุคำใบ้แบบทำลายข้อมูล (destructive hint):

  • redact_pdf — ตรวจจับและลบข้อมูลส่วนบุคคลออกจากเนื้อหาข้อความล้วนของเอกสารด้วยตัวตรวจจับในตัว แล้วส่งคืนเนื้อหาที่แก้ไขแล้วและรายงานแบบมีโครงสร้าง
  • zone_redact_pdf — ใช้การปิดบังตามโซนที่อิงพิกัดกับเนื้อหาข้อความล้วน ใช้เครื่องมือนี้เมื่อทราบพื้นที่จากตำแหน่งมากกว่าจากรูปแบบ
  • deidentify_pdf — ใช้กลยุทธ์การทำให้ไม่สามารถระบุตัวตนได้ (de-identification) อย่างเป็นระบบ (ปิดบังหรือกำจัด) กับเอนทิตีที่ตรวจพบทั้งหมด

การลบเนื้อหาออกจากสตรีมเนื้อหาของหน้าเป็นการแก้ไขสตรีมนั้นแบบทำลายข้อมูล ไบต์ที่ได้รับผลกระทบจะถูกเขียนทับและไม่สามารถกู้คืนได้จากเอกสารที่แก้ไขแล้ว (ISO 32000-2 §14.11) ตามการออกแบบ รายงานจะบันทึกจำนวนอักขระและตำแหน่งของการลบแต่ละครั้ง โดยไม่บันทึกข้อความจริงที่ถูกลบ

แพ็กเกจ Enterprise ที่นิยามเครื่องมือแต่ละตัวยังจัดเตรียมสคีมาคำขอและคำตอบที่แน่นอนของเครื่องมือนั้นไว้ด้วย หน้านี้อธิบายสัญญาการเรียกใช้ของ Connect ไม่ใช่รายการพารามิเตอร์แบบตายตัว ชื่อเครื่องมือที่ต้องตรวจสอบกับรีจิสทรีที่กำลังทำงานอยู่ ได้แก่ redact_pdf, zone_redact_pdf และ deidentify_pdf ทั้งหมดอยู่ในหมวด document พร้อม destructiveHint: true แค็ตตาล็อกที่เป็นแหล่งอ้างอิงอย่างเป็นทางการคือ /connect/tool-catalog/ สูตรนี้ไม่ระบุจำนวนเครื่องมือซ้ำ เพราะค่านั้นเป็นคุณสมบัติขณะรันไทม์ของการนำไปใช้งาน

ตรวจจับและลบเนื้อหาผ่าน Model Context Protocol (MCP) (tools/call) อาร์กิวเมนต์ด้านล่างแสดงรูปแบบการเรียกใช้ สคีมาอาร์กิวเมนต์ที่ถือเป็นแหล่งอ้างอิงคือสคีมาที่ tools/list ส่งคืนในการนำไปใช้งานของคุณ:

{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "redact_pdf",
"arguments": {
"source": "/var/lib/nextpdf/in/employee-directory.pdf"
}
}
}

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

ให้ถือว่าการเรียกใช้การปิดบังเป็นการดำเนินการแบบทำลายข้อมูล และตรวจสอบรายงานก่อนปล่อยเอกสารออกไป เมื่อใช้ผ่านทรานสปอร์ตบนเครือข่าย ให้จัดการความล้มเหลวของทรานสปอร์ตและข้อผิดพลาดระดับเครื่องมือเป็นกรณีแยกกัน:

Terminal window
curl -sS -X POST https://connect.example.com/v1/tools/redact_pdf \
-H 'Authorization: Bearer '"$NEXTPDF_CONNECT_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"source":"/var/lib/nextpdf/in/legal-discovery-batch.pdf"}' \
-o /tmp/redaction-report.json -w '%{http_code}' > /tmp/redaction-status
Terminal window
status="$(cat /tmp/redaction-status)"
if [ "$status" != "200" ]; then
# 4xx/5xx is a normal HTTP outcome the caller inspects, not a transport
# failure. A connection error (curl non-zero exit) is the separate case.
echo "redact_pdf returned HTTP $status; inspect the body, do not release the document" >&2
exit 1
fi

ปล่อยเอกสารที่แก้ไขแล้วออกไปก็ต่อเมื่อมนุษย์หรือกลไกควบคุมปลายทางได้ตรวจสอบรายงานแล้วเท่านั้น การหน่วงการปล่อยเอกสารไว้จนหลังการตรวจสอบเป็นการวางกลไกควบคุมไว้ตรงจุดที่การแก้ไขแบบอัตโนมัติทำให้เกิดความเสี่ยงจากข้อมูลตกค้าง (IEC 31010:2019)

  • PDF ที่สแกนมาและไม่มีชั้นข้อความ การตรวจจับทำงานบนชั้นข้อความที่สกัดได้ หน้าที่มีเฉพาะรูปภาพจะได้ผลการลบเป็นศูนย์ และไม่ถือเป็นข้อผิดพลาด หากเนื้อหาถูกแปลงเป็นภาพแรสเตอร์ ให้รันการรู้จำอักขระด้วยแสง (optical character recognition, OCR) บนเอกสารก่อนการปิดบัง
  • แหล่งที่มาที่เข้ารหัสไว้ ระบุรหัสผ่านของเอกสารผ่านสคีมาอาร์กิวเมนต์ของเครื่องมือ หากไม่มีรหัสผ่าน การเรียกใช้จะล้มเหลวแทนการประมวลผลเอกสารเพียงบางส่วน
  • ไม่มีเครื่องมือ ในการติดตั้งที่มีเฉพาะ open-source คลาสความเป็นส่วนตัวระดับ Enterprise จะไม่ทำงานและ redact_pdf จะไม่ถูกลงทะเบียน ดังนั้นการเรียกใช้จึงล้มเหลวด้วยข้อผิดพลาด unknown-tool นี่เป็นขอบเขตที่ตั้งใจไว้ ไม่ใช่การลดทอนการทำงาน
  • การตรวจจับที่ซ้อนทับกัน เมื่อมีตัวตรวจจับมากกว่าหนึ่งตัวจับคู่พื้นที่เดียวกัน เครื่องมือจะลบพื้นที่นั้นเพียงครั้งเดียวและขจัดรายการซ้ำในรายงาน

งบประมาณด้านประสิทธิภาพใน front-matter เป็นเพดานสำหรับเอกสาร ไม่ใช่การรับประกันระดับบริการ เอกสารขนาดใหญ่จะถูกประมวลผลทีละหน้า ควรวางแผนเรียกใช้ซ้ำกับชุดย่อยของช่วงหน้าแทนการเพิ่มไทม์เอาต์ระดับส่วนกลาง

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

เทเลเมตรีที่ปลอดภัยและการกรองข้อมูลออกจากบันทึก

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

ห้ามบันทึกพาธของเอกสารต้นทางหรือเนื้อหารายงานในระดับบันทึกที่ส่งออกไปภายนอก ให้บันทึกเฉพาะชื่อเครื่องมือ request id และผลลัพธ์ pass/fail เท่านั้น

การปิดบังที่ครอบข้อความไว้ในเชิงภาพแต่ไม่ได้ลบข้อความนั้นออกยังทำให้ข้อมูลถูกสกัดได้ เครื่องมือเหล่านี้เขียนทับสตรีมเนื้อหาที่ได้รับผลกระทบแทนที่จะวางสี่เหลี่ยมทับ การกู้คืนไบต์ที่ถูกลบจากเอกสารที่แก้ไขแล้วไม่สามารถทำได้ (ISO 32000-2 §14.11) ความเสี่ยงตกค้างยังคงมีอยู่เมื่อตัวตรวจจับพลาดเนื้อหา เช่น รูปแบบที่อยู่นอกกฎเกณฑ์ของตัวตรวจจับ หรือข้อความที่มีอยู่ในรูปภาพแรสเตอร์เท่านั้น เวิร์กโฟลว์ลดความเสี่ยงดังกล่าวด้วยการบังคับตรวจสอบรายงาน ไม่ใช่ด้วยการอ้างว่าทำได้ครบถ้วนสมบูรณ์

การปิดบังไม่ได้ดำเนินการด้านการเข้ารหัสลับใดๆ และไม่ได้รับผลกระทบจากนโยบายโหมด Federal Information Processing Standards (FIPS) บนโฮสต์

ข้อกล่าวอ้างข้อกำหนดรหัสอ้างอิง (reference_id)
การลบเนื้อหาเป็นการเขียนทับสตรีมเนื้อหาที่ได้รับผลกระทบISO 32000-2 §14.11
การปิดบังจะทำเครื่องหมายก่อนแล้วจึงลบ การลบนั้นเป็นการแก้ไขเนื้อหาISO 32000-2 §14.11
วางกลไกควบคุมไว้ ณ จุดที่การแก้ไขแบบอัตโนมัติทำให้เกิดความเสี่ยงIEC 31010:2019

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

เครื่องมือปิดบังเป็นเครื่องมือระดับ Enterprise เครื่องมือเหล่านี้จะลงทะเบียนเฉพาะเมื่อติดตั้ง nextpdf/premium ควบคู่ไปกับเซิร์ฟเวอร์เท่านั้น ดูลิงก์ conversion ใน front-matter

สามารถเรียกใช้เครื่องมือในแบบเดียวกันผ่านทุกทรานสปอร์ตที่ใช้ตัวดำเนินการเครื่องมือร่วมกัน ได้แก่ MCP tools/call, เอนด์พอยต์เครื่องมือ REST และบริการ gRPC สคีมาอาร์กิวเมนต์ไม่ขึ้นกับทรานสปอร์ต สคีมานี้คือสคีมาที่ส่งคืนโดย tools/list (MCP) หรือตัวบรรยายบริการ (gRPC)

เครื่องมือทั้งสามตัวประกาศ destructiveHint: true เมื่อผู้ดำเนินการยกระดับเครื่องมือขึ้นเป็นระดับความเสี่ยง approval_required ผ่านการเขียนทับการตั้งค่า การเรียกใช้จะถูกควบคุมผ่าน ConfirmationGate การเขียนทับสามารถยกระดับความเสี่ยงได้เท่านั้น ไม่สามารถลดระดับลงได้ ดู /connect/hitl-risk-tiers/

เมื่อเครื่องมือถูกควบคุมด้วยเกตและถูกเรียกใช้โดยไม่มีโทเค็นที่ถูกต้อง เกตจะส่งคืนซองข้อมูล challenge ในรูปแบบนี้:

{ "allowed": false, "challenge": "<human-readable text>", "token": "confirm_<nonce>" }

ผู้เรียกใช้จะเรียกใช้เครื่องมือตัวเดิมอีกครั้งโดยตั้งค่า arguments._confirmation_token เป็นโทเค็นที่ออกให้ โทเค็นผูกกับชื่อเครื่องมือ nonce และ TTL 300 วินาที — ไม่ใช่อาร์กิวเมนต์ — และใช้ได้เพียงครั้งเดียว

  • /connect/tool-catalog/ — รีจิสทรีคำนวณชุดเครื่องมือต่อระดับอย่างไร
  • /connect/hitl-risk-tiers/ — แบบจำลองความเสี่ยงสี่ระดับและเกต
  • /cookbook/connect/extract-text-content/ — ดูตัวอย่างข้อความที่สกัดได้ก่อนการปิดบัง
  • /cookbook/connect/digital-signature/ — ลงลายเซ็นเอกสารที่แก้ไขแล้วเพื่อสร้างห่วงโซ่การดูแลหลักฐาน (chain-of-custody)