
Shieldstral 공개를 통해 재검토하는 AI 첨부 전 개인정보 검사 Python
요약
Mistral의 Shieldstral 공개를 계기로, 생성 AI에 파일을 첨부하기 전 개인정보 유출을 방지하는 Python 스크립트 구현 방법을 소개합니다. OCR 텍스트와 파일명을 분석하여 이메일, 전화번호, 카드 번호 등을 탐지하고 CSV로 리포트를 생성합니다.
핵심 포인트
- Shieldstral 모델의 멀티모달 모더레이션 트렌드 반영
- 정규 표현식을 활용한 개인정보(이메일, 전화번호 등) 탐지 스크립트
- OCR 결과와 파일명을 JSON 형태로 입력받아 처리하는 워크플로우
- 완벽한 판정보다 전송 전 '게이트' 역할로서의 실용적 접근 강조
- Excel 호환성을 고려한 UTF-8-SIG 방식의 CSV 출력
Mistral의 Shieldstral: 멀티모달 모더레이션 (Multimodal Moderation)을 위한 3B 오픈 웨이트 (Open-weights) 모델
8월 4일에 Mistral이 공개한 Shieldstral 공지를 보았다. 이미지를 포함한 콘텐츠의 모더레이션 (Moderation)을 오픈 웨이트 (Open-weights)로 다룰 수 있게 하는 모델이라고 한다.
이를 보고 내가 먼저 해결하고 싶었던 것은 모델 선택이 아닙니다. 영업 자료, 의사록, 스크린샷을 생성 AI에 첨부하기 전의 확인입니다. 내용이 적절한지 판정하는 메커니즘이 발전하더라도, 첨부한 파일에 담당자의 연락처나 카드 번호가 남아 있다면, 보낼지 말지에 대한 판단은 별도로 필요합니다.
사내에서 "보내기 전에 확인해 둬"라고 말해도, 바쁘면 놓치게 됩니다. 그래서 첨부 후보 파일명과 OCR(광학 문자 인식)이 완료된 텍스트를 JSON으로 출력하고, 개인정보로 보이는 문자열이 있으면 전송을 보류하는 작은 Python 스크립트를 마련했습니다. 이것이 은근히 효과적입니다. 사람에게 최종 판단을 남겨두면서, 놓치기 쉬운 부분만 미리 붉게 표시할 수 있습니다.
참조한 뉴스: Mistral: Shieldstral
이 스크립트는 이메일 주소, 전화번호, 마이넘버(My Number)로 보이는 12자리, 카드 번호로 보이는 13~19자리를 찾아냅니다. 정규 표현식 (Regular Expression)만 사용하므로 개인정보를 완벽하게 판정하는 것은 아닙니다. 예를 들어 12자리의 수주 번호도 차단될 가능성이 있습니다.
그럼에도 전송 직전의 게이트 (Gate)로서는 충분히 사용할 수 있습니다. 오탐지라면 내용을 확인하고 통과시킵니다. 탐지를 놓쳤을 때만, 애초에 첨부 조작 단계로 넘어가지 않도록 합니다. 이 우선순위입니다.
입력은 OCR 도구나 PDF 추출 도구의 출력을 다음 형태로 맞춥니다. 본문을 API로 전달할 필요는 없습니다.
[
{"name": "提案メモ.txt", "text": "窓口は tanaka@example.jp、03-1234-5678"},
{"name": "製品概要.pdf", "text": "公開済みの製品説明です"}
...
]
attachment_preflight.py로 저장합니다.
import csv
import json
import re
...
수중에 있는 위의 JSON을 attachments.json으로 실행했을 때의 출력입니다.
$ python3 attachment_preflight.py attachments.json
attachment_review.csv 를 생성했습니다
전송 보류 提案メモ.txt 이메일 주소 / 전화번호
...
utf-8-sig로 CSV를 쓰는 이유는 현장에서 Excel로 여는 사람이 있기 때문입니다. BOM이 포함된 UTF-8로 해두면 일본어 헤더가 글자 깨짐 현상이 일어나기 어렵습니다. 여기서 CSV를 연다면, 수식으로 해석되는 값을 다루는 운용과는 분리하는 것이 안전합니다.
처음에는 본문만 검사했습니다. 하지만 공유 폴더에서 선택한 스크린샷의 이름에 거래처명과 담당자명이 들어있는 경우가 있었습니다. 본문이 비어 있어도 파일명을 목록으로 만드는 것만으로 알아챌 수 있습니다.
이 코드는 파일명 문자열 그 자체를 검지 대상으로 삼지는 않습니다. 거래처명까지 기계적으로 차단하면 영업 자료가 거의 전부 차단되기 때문입니다. 대신 CSV로 반드시 출력하여, 전송 보류 행뿐만 아니라 첨부물의 착오도 눈으로 확인할 수 있는 형태로 만들었습니다. 검사 정밀도보다 작업을 멈추지 않고 확인이 계속되는 것을 우선시하고 있습니다.
OCR 결과가 없는 이미지나 PDF는 text를 비워두고 "확인 완료"로 간주하는 운용이 필요합니다. 그 경우에는 입력 JSON을 만드는 단계에서 OCR 미실시 행을 추가하거나, 이미지 첨부를 일단 보류합니다. 이 부분을 자동으로 통과시켜 버리면, 이미지 대응 모더레이션 (Moderation) 모델이 나왔다는 이야기와 업무상의 전송 확인이 뒤섞이게 됩니다.
Shieldstral과 같은 모델이 늘어날수록 이미지를 포함하여 AI에게 전달할 수 있는 범위는 넓어집니다. 그렇기 때문에 업무 측면에서는 "무엇을 판정시킬 것인가"보다 먼저 "무엇을 전달해도 좋은가"를 짧은 절차로 만들어 두면 원활하게 돌아갑니다.
우선 자주 사용하는 제안 메모 2건으로 실행해 보고, 오탐지된 번호를 기록하는 것이 좋습니다. 정규 표현식 (Regular Expression)을 똑똑하게 만들기 전에, 전송 보류 CSV를 한 번 살펴보는 흐름을 만듭니다. 저는 이 순서가 현장에서 가장 지속 가능하다고 생각합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기