ในยุคที่ข้อมูลส่วนบุคคล (PII - Personally Identifiable Information) กลายเป็นสินทรัพย์ที่มีค่ามากที่สุดขององค์กร การปกป้องข้อมูลเหล่านี้จึงไม่ใช่ทางเลือก แต่เป็นข้อบังคับทางกฎหมาย ไม่ว่าจะเป็น PDPA, GDPR หรือ CCPA บทความนี้จะพาคุณสร้าง Compliance Checklist สำหรับ PII Masking ที่ครอบคลุมและเหมาะกับการใช้งานจริงในปี 2026

ทำไมต้อง PII Masking?

PII Masking คือกระบวนการซ่อนหรือแทนที่ข้อมูลที่สามารถระบุตัวบุคคลได้ เช่น ชื่อ นามสกุล เลขบัตรประจำตัวประชาชน เบอร์โทรศัพท์ อีเมล หรือที่อยู่ ก่อนส่งข้อมูลเข้า AI API เพื่อป้องกันการรั่วไหลและลดความเสี่ยงทางกฎหมาย

เปรียบเทียบต้นทุน AI API ปี 2026

ก่อนเริ่มต้นพัฒนา มาดูต้นทุนของ AI API หลักในปี 2026 เพื่อวางแผนงบประมาณได้อย่างเหมาะสม:

โมเดล ราคา Output ($/MTok) ต้นทุน 10M Tokens/เดือน
GPT-4.1 $8.00 $80
Claude Sonnet 4.5 $15.00 $150
Gemini 2.5 Flash $2.50 $25
DeepSeek V3.2 $0.42 $4.20

จะเห็นได้ว่า DeepSeek V3.2 มีต้นทุนต่ำที่สุดถึง 95% เมื่อเทียบกับ Claude Sonnet 4.5 ซึ่งเหมาะมากสำหรับงาน PII Masking ที่ต้องประมวลผลข้อมูลจำนวนมาก

Compliance Checklist: 5 ขั้นตอนสำคัญ

1. ระบุประเภท PII ที่ต้องปกป้อง

ก่อนเริ่ม Masking ต้องทำ Inventory ของข้อมูล PII ที่มีในระบบ:

2. เลือกรูปแบบ Masking ที่เหมาะสม

แต่ละ Use Case ต้องการระดับการ Masking ที่ต่างกัน:

3. สร้าง Pipeline สำหรับ AI API Integration

# ตัวอย่าง: PII Masking Pipeline สำหรับ AI API
import re
import requests

class PIIMasker:
    def __init__(self, api_key):
        self.base_url = "https://api.holysheep.ai/v1"
        self.headers = {
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        }
    
    # Regex patterns สำหรับ PII ภาษาไทย
    THAI_ID_PATTERN = r'\b[0-9]{13}\b'
    PHONE_PATTERN = r'\b0[0-9]{9}\b'
    EMAIL_PATTERN = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
    
    def mask_thai_id(self, text):
        """Mask เลขบัตรประจำตัวประชาชน 13 หลัก"""
        return re.sub(self.THAI_ID_PATTERN, '[THAI_ID_REDACTED]', text)
    
    def mask_phone(self, text):
        """Mask เบอร์โทรศัพท์ไทย"""
        def replace_phone(match):
            num = match.group()
            return f"{num[:3]}-XXX-{num[-4:]}"
        return re.sub(self.PHONE_PATTERN, replace_phone, text)
    
    def mask_email(self, text):
        """Mask อีเมล"""
        def replace_email(match):
            email = match.group()
            local, domain = email.split('@')
            return f"{local[:2]}***@{domain}"
        return re.sub(self.EMAIL_PATTERN, replace_email, text)
    
    def mask_all(self, text):
        """Mask PII ทั้งหมดในข้อความ"""
        masked = self.mask_thai_id(text)
        masked = self.mask_phone(masked)
        masked = self.mask_email(masked)
        return masked
    
    def send_to_ai(self, masked_text, model="deepseek-chat"):
        """ส่งข้อความที่ Mask แล้วไปยัง AI API"""
        payload = {
            "model": model,
            "messages": [{"role": "user", "content": masked_text}]
        }
        response = requests.post(
            f"{self.base_url}/chat/completions",
            headers=self.headers,
            json=payload
        )
        return response.json()

การใช้งาน

masker = PIIMasker(api_key="YOUR_HOLYSHEEP_API_KEY") raw_text = "ลูกค้าชื่อ สมชาย ใช้บัตรประชาชน 1234567890123 ติดต่อได้ที่ 0812345678" masked_text = masker.mask_all(raw_text) print(masked_text)

Output: ลูกค้าชื่อ สมชาย ใช้บัตรประชาชน [THAI_ID_REDACTED] ติดต่อได้ที่ 081-XXX-5678

4. กำหนด Data Retention Policy

เอกสารนโยบายการเก็บรักษาข้อมูลต้องระบุชัดเจน:

5. ทดสอบและ Validate อย่างสม่ำเสมอ

# ตัวอย่าง: Unit Test สำหรับ PII Masker
import unittest
from pii_masker import PIIMasker

class TestPIIMasker(unittest.TestCase):
    def setUp(self):
        self.masker = PIIMasker(api_key="test_key")
    
    def test_thai_id_masking(self):
        text = "บัตรประชาชน: 1234567890123"
        result = self.masker.mask_thai_id(text)
        self.assertEqual(result, "บัตรประชาชน: [THAI_ID_REDACTED]")
    
    def test_phone_masking(self):
        text = "โทร 0812345678"
        result = self.masker.mask_phone(text)
        self.assertEqual(result, "โทร 081-XXX-5678")
    
    def test_multiple_pii(self):
        text = "นาย A เลขบัตร 1234567890123 เบอร์ 0812345678 อีเมล [email protected]"
        result = self.masker.mask_all(text)
        self.assertNotIn("123456789