تخطَّ إلى المحتوى

تنقيح المعلومات الشخصية القابلة للتعريف في ملف PDF عبر Connect

تنقيح المعلومات الشخصية القابلة للتعريف في ملف ⁨PDF⁩ عبر ⁨Connect⁩

قسم بعنوان «تنقيح المعلومات الشخصية القابلة للتعريف في ملف ⁨PDF⁩ عبر ⁨Connect⁩»

توضّح هذه الوصفة كيفية إزالة المعلومات الشخصية القابلة للتعريف (⁨PII⁩) المكتشفة من طبقة النص في المستند باستخدام أدوات التنقيح التي يوفّرها ⁨NextPDF Connect⁩. هذه الأدوات من فئة ⁨Enterprise⁩. ينشئ ToolRegistry الأدوات redact_pdf و zone_redact_pdf و deidentify_pdf عبر اكتشاف فئات الخصوصية من فئة ⁨Enterprise⁩ (RedactionEngine + PiiDetector) باستخدام class_exists(). ويسجّل كل أداة ضمن فئة ⁨enterprise⁩ فقط عندما تكون تلك الفئات قابلة للتحميل التلقائي. في التثبيت الذي يقتصر على المصدر المفتوح، تكون الأدوات غائبة: يفشل الاستدعاء بخطأ أداة غير معروفة بدلاً من أن يتدهور بصمت. تعلن الأدوات الثلاث كلها 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⁩، وتحمل جميعها تلميح الإجراء المدمِّر:

  • redact_pdf — تكتشف البيانات الشخصية ضمن محتوى النص العادي في المستند وتزيلها باستخدام كاشف مدمج، ثم تُعيد المحتوى المعدَّل وتقريراً منظَّماً.
  • zone_redact_pdf — تطبّق تنقيحات مناطقية قائمة على الإحداثيات على المحتوى النصي العادي. استخدمها عندما تعرف المنطقة بحسب الموضع لا بحسب النمط.
  • deidentify_pdf — تطبّق استراتيجية منهجية لإزالة الهوية (تنقيح أو حذف) عبر الكيانات المكتشفة.

تؤدي إزالة المحتوى من دفق محتوى الصفحة إلى تعديل ذلك الدفق تعديلاً مدمِّراً: تُعاد كتابة البايتات المتأثرة ولا يمكن استرجاعها من المستند المعدَّل (⁨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⁩ ممسوح ضوئياً بلا طبقة نص. يعمل الاكتشاف على طبقة النص القابلة للاستخراج. تُنتج الصفحة التي تحتوي على صورة فقط صفر عمليات إزالة، وهذا ليس خطأ. إذا كان المحتوى مُنقَّطاً، فشغّل التعرّف الضوئي على المحارف (⁨OCR⁩) على المستند قبل التنقيح.
  • مصدر مشفَّر. زوّد كلمة مرور المستند عبر مخطط وسائط الأداة. من دونها، يفشل الاستدعاء بدلاً من أن يعالج جزءاً فقط من المستند.
  • أداة غائبة. في التثبيت الذي يقتصر على المصدر المفتوح، لا تُحَلّ فئات الخصوصية من فئة ⁨Enterprise⁩ ولا تُسجَّل redact_pdf، فيفشل الاستدعاء بخطأ أداة غير معروفة. هذا هو الحد المقصود، لا تدهور.
  • اكتشافات متداخلة. عندما يطابق أكثر من كاشف المنطقة نفسها، تزيل الأداة المنطقة مرة واحدة وتزيل التكرار من التقرير.

ميزانية الأداء في البيانات الوصفية هي سقف توثيقي، لا ضمان على مستوى الخدمة. تُعالَج المستندات الكبيرة صفحة بصفحة. خطّط لإعادة تشغيل الاستدعاء على مجموعة فرعية من نطاق الصفحات بدلاً من رفع مهلة عامة.

إقامة البيانات وتدابير تخفيف المعلومات الشخصية القابلة للتعريف

قسم بعنوان «إقامة البيانات وتدابير تخفيف المعلومات الشخصية القابلة للتعريف»

يعالج مضيف ⁨Connect⁩ نص المستند ضمن العملية نفسها. يحذف التقرير عمداً النص المُزال ويُبلّغ عن الأعداد والمواضع فقط، بحيث لا يعيد التقرير إدخال البيانات الشخصية التي يصفها. إقامة البيانات على مستوى النشر للمدخلات وللمخرجات المعدَّلة هي مسؤولية المُدمِج، لا خاصية من خصائص الأداة.

القياس عن بُعد الآمن وتنقية السجلات

قسم بعنوان «القياس عن بُعد الآمن وتنقية السجلات»

لا تسجّل مسار المستند المصدر أو نص التقرير عند مستوى سجلّ يُصدَّر خارجياً. سجّل فقط اسم الأداة ومعرّف الطلب ونتيجة ⁨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 إلى جانب الخادم. راجع رابط التحويل في البيانات الوصفية.

توفّر وسائط النقل (⁨MCP⁩ / ⁨REST⁩ / ⁨gRPC⁩)

قسم بعنوان «توفّر وسائط النقل (⁨MCP⁩ / ⁨REST⁩ / ⁨gRPC⁩)»

استدعِ الأدوات بالطريقة نفسها عبر كل وسيط نقل يستخدم مُنفِّذ الأدوات المشترك: ⁨MCP⁩ tools/call، ونقطة نهاية أداة ⁨REST⁩، وخدمة ⁨gRPC⁩. مخطط الوسائط مستقل عن وسيط النقل، وهو الذي تُعيده tools/list (⁨MCP⁩) أو واصف الخدمة (⁨gRPC⁩).

تعلن الأدوات الثلاث كلها destructiveHint: true. عندما يرفع مشغّلٌ أداة إلى مستوى مخاطر approval_required عبر تجاوز في الإعداد، يصبح الاستدعاء خاضعاً لـ ⁨ConfirmationGate⁩. لا يجوز للتجاوز إلا رفع المخاطر، ولا يخفضها أبداً. راجع /⁨connect/hitl-risk-tiers/⁩.

عندما تكون الأداة خاضعة للبوابة وتُستدعى من دون رمز صالح، تُعيد البوابة غلاف تحدٍّ بهذا الشكل:

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

يعيد المُستدعي استدعاء الأداة نفسها مع ضبط arguments._confirmation_token على الرمز الصادر. يربط الرمز اسم الأداة ورقماً مستخدماً مرة واحدة ومدة بقاء قدرها 300 ثانية — لا الوسائط — وهو صالح لاستخدام واحد.

  • /⁨connect/tool-catalog/⁩ — كيف يحسب السجلّ مجموعة الأدوات لكل فئة.
  • /⁨connect/hitl-risk-tiers/⁩ — نموذج المخاطر رباعي المستويات والبوابة.
  • /⁨cookbook/connect/extract-text-content/⁩ — معاينة النص القابل للاستخراج قبل التنقيح.
  • /⁨cookbook/connect/digital-signature/⁩ — توقيع المستند المعدَّل من أجل سلسلة الحيازة.