منصوبے کے بارے میں

pii-mask — ذاتی ڈیٹا (PII) کو کلاؤڈ LLM میں متن بھیجنے سے پہلے مقامی طور پر ماسک کرنے اور جواب میں اصل اقدار واپس رکھنے کا گیٹ وے۔ روسی مرکوز: روسی PII فارمیٹس کو پہچانتا ہے، NER استعمال کرتا ہے اور روسی زبان کی مورفولوجی کا خیال رکھتا ہے۔ بنیادی منظر نامہ — میٹنگ ٹرانسکرپٹس (خلاصے، ایکشن آئٹمز) کی پروسیسنگ بغیر نام، فون نمبر اور کمپنیوں کے ماڈل فراہم کنندہ کو لیک ہونے کے۔ کلاؤڈ ماڈل کبھی اصل ڈیٹا نہیں دیکھتا۔ یہ کیسے کام کرتا ہے: 1. Regex + چیک سمز (فارمیٹڈ روسی PII): فون، ای میل، INN (10/12، چیک ہندسے)، OGRN/OGRNIP (13/15، چیک ہندسہ)، SNILS، کارڈ (Luhn)، پاسپورٹ (صرف "پاسپورٹ"/"سیریز" کے لفظ کے قریب)، ٹیلیگرام نک، معاہدے کا UID، بڑے حروف میں اور ابتدائی حروف کے ساتھ مکمل نام۔ 2. NER (Natasha/slovnet، CPU، آف لائن): نام اور تنظیمیں۔ تسلسل کی کلید — نارمل شکل: "Иван Петров"، "Ивана Петрова" اور "Иваном Петровым" ایک ہی لیبل دیتے ہیں۔ تنہا نام واحد موزوں مکمل نام سے منسلک ہوتا ہے۔ 3. LLM آڈیٹر (اختیاری، --audit، Ollama): پہلے سے ماسک شدہ متن پر دوسرا پاس — "کون سا PII باقی ہے؟"۔ بالواسطہ پکڑتا ہے: "میری بیوی Оля"، بغیر فارمیٹ کے پتے، نک نیمز۔ ماڈل صرف امیدوار تجویز کرتا ہے (لفظی ذیلی strings)، تبدیلی ہمیشہ کوڈ کرتا ہے۔ اصول: - LLM متن دوبارہ نہیں لکھتا۔ تمام تبدیلیاں deterministic ہیں، spans کے مطابق۔ - Stateless۔ "لیبل -> اصل" میپنگ کالر کو واپس دی جاتی ہے (ٹاسک کے ساتھ فائل یا API جواب کا فیلڈ)۔ سروس کچھ محفوظ نہیں کرتی۔ - Fail-closed۔ یہ پائپ لائن کا مرحلہ ہے: ناکام ہوا تو متن کہیں نہیں گیا۔ Ollama دستیاب نہ ہونے پر درخواست کردہ --audit ایک خرابی ہے، خاموش ماسکنگ بغیر آڈٹ نہیں۔ - فون (+7 000 ...) اور ای میل ([email protected]) کے لیے فارمیٹ محفوظ کرنے والے جعلی۔ واپس تبدیلی میں فون ہندسوں سے بھی میچ ہوتے ہیں۔ - من گھڑت سے تحفظ: کوئی لیبل یا جعلی جو ان پٹ میں نہ تھا، unmask پر [نامعلوم قدر] بن جاتا ہے۔ - چھوڑنا اضافی ماسک سے مہنگا ہے: golden ٹیسٹ recall جانچتے ہیں، غلط مثبت کو خرابی نہیں سمجھا جاتا۔ جان بوجھ کر ماسک نہیں ہوتا: شہر/ملک (LOC)، تاریخیں اور رقم۔ تنصیب: Python 3.10+، pip install -e . --audit کے لیے Ollama درکار (ڈیفالٹ qwen3:1.7b)۔ استعمال: - CLI: pii-mask mask встреча.md -> встреча.masked.md + встреча.mapping.json (0600)؛ pii-mask unmask summary.md --mapping встреча.mapping.json -o summary.final.md۔ - اسی --mapping کے ساتھ دوبارہ mask نمبرنگ جاری رکھتا ہے: پورے مکالمے میں ایک ہستی — ایک لیبل۔ - فلیگز: --audit، --no-ner، --types PERSON,PHONE,...، --org-dict فائل۔ - نامزد سیٹس: pii-mask presets؛ pii-mask mask резюме.pdf --preset resume؛ pii-mask mask счет.xlsx --preset accounting؛ pii-mask mask файл.md --preset auto۔ - مائیکرو سروس: pii-mask serve --port 8377 (صرف 127.0.0.1 سنتا ہے)۔ POST /mask، POST /unmask، GET /health/live۔ درخواست کے bodies لاگ نہیں ہوتے۔ mapping فائلوں کی صفائی: *.mapping.json میں اصل PII ہوتا ہے، اجازتیں 600، .gitignore میں پیٹرن۔ فائل ٹاسک کے ساتھ رہتی ہے اور اس کے ساتھ حذف ہوتی ہے۔ 152-FZ سے تعلق: گیٹ وے خطرہ کم کرنے کا تکنیکی اقدام ہے، نہ کہ "باکس سے قانون کی تعمیل"۔ یہ pseudonymization ہے، anonymization نہیں (152-FZ کے آرٹیکل 3 کا پیرا 9)۔ پروسیسنگ کی قانونی بنیاد، اطلاع اور سرحد پار منتقلی صارف کی ذمہ داری رہتی ہے۔ quasi-identifiers (عہدہ + شہر + تاریخیں) regex سے نہیں پکڑے جاتے۔ درست فقرہ — "بیرونی پروسیسر کو بھیجے جانے والے ذاتی ڈیٹا کو کم سے کم کرنے کا تکنیکی اقدام"۔ یہ انجینئرنگ تفصیل ہے، قانونی رائے نہیں۔ معیار کے معیارات: 36 ٹیسٹ، pytest -q چلائیں۔ مکمل پن (9 مختلف شکلوں کے ذاتی ڈیٹا والا golden ٹرانسکرپٹ)، ساخت برقرار (5 کنٹرول لائنیں)، واپسی (roundtrip، بشمول دوبارہ فارمیٹ شدہ فون)، غلط کی کٹائی (18 recognizer ٹیسٹ)، idempotency، من گھڑت سے مزاحمت، LLM آڈیٹر کی حدود جانچی جاتی ہیں۔ ٹیسٹوں میں اصل PII استعمال نہیں ہوتا۔ اصل ڈیٹا پر مقداری recall نہیں۔ سرکاری دستاویزات: ایکٹ، رجسٹر، ایکسپورٹ۔ اہم ہے کہ متن کیسے نکالا گیا: pdftotext -layout ہستیوں کو توڑتا ہے، stream — مکمل رکھتا ہے۔ 76 صفحات کے ایکٹ پر پیمائش: صفحہ بہ صفحہ -layout کے ساتھ مکمل بڑے حروف والے نام 55، stream سے — 879۔ بڑے حروف والے نام والد کے نام کے suffix پر anchor کے ساتھ regex سے پکڑے جاتے ہیں۔ تفصیلات (OGRN، معاہدے کا UID) نام سے کم نہیں شناخت کرتیں۔ UID PDF لے آؤٹ میں ہائفن پر ٹوٹتا ہے، ٹیمپلیٹ ادھورا ٹکڑا بھی قبول کرتا ہے (12-20 ہیکسا ڈیسیمل حروف کا سرا)۔ ہدایات، رجسٹر اور آنے والے نمبروں کو نہیں چھیڑا جاتا۔ حدود: - pseudonyms کے بجائے لیبل: بحال شدہ متن میں نام ہمیشہ nominative case میں ہوتا ہے ("заявка для Иван Петров")۔ - NER ہمہ گیر نہیں: غیر معمولی نام اور نقل کے بگاڑ چھوٹ سکتے ہیں — حساس متن کے لیے --audit فعال کریں۔ - تنظیموں کے تمام نام ماسک نہیں ہوتے: قانونی شکل والا نام قاعدے سے لیا جاتا ہے، باقی NER کی ذمہ داری۔ بغیر رسمی نشان والا نام --org-dict یا --audit سے بند ہوتا ہے۔ - ایجنٹ منظرنامے (ماڈل خود فائلیں پڑھتا ہے) گیٹ وے کور نہیں کرتا — یہ "متن ادھر — متن ادھر واپس" پائپ لائن کے لیے ہے۔